Ir para o conteúdo
joaocasta

Correr código PHP quando contador chegar a 0

Mensagens Recomendadas

joaocasta

Boas tardes pessoal.Tenho aqui um contador e queria que depois do contador terminar (atingir 0) corresse a página php.

Tentei de várias maneiras mas depois nao consigo ler o $_GET['id'] do username.


<script>
 var counter = 5;
 var cinterval;


 setInterval(function() {
counter--;
if (counter >= 1) {
	document.getElementById('count').innerHTML = 'Wait ' + counter + ' seconds';
}
// Display 'counter' wherever you want to display it.
if (counter === 0) {
   document.getElementById('count').innerHTML = '[CREDIT_MESSAGE]';
  clearInterval(cinterval);
}  
 }, 1000);

</script>

</head>
<body>
<span id="count">Wait 5 seconds</span>


<?php
@ini_set("memory_limit","12M");
include("vars.php");
include("dbconnect.php");
include("funcs.php");
include("geoip.php");
@extract($_GET);
@extract($_SERVER);
@extract($_POST);

$ip = $REMOTE_ADDR;
$refurl = $HTTP_REFERER;
if (!$refurl){ $refurl="NO_REF"; $curapproved="NO_REF"; }

$eredm = mysql_query("SELECT * FROM ptpdesign");
extract(mysql_fetch_array($eredm));
$pagedesign=str_replace('[sITEURL]',$site_url,$pagedesign);
$pagedesign=str_replace('[member_ID]',$id,$pagedesign);

$ma = date("Y-m-d");

$error=0;

$eredm = mysql_query("SELECT * FROM ptphits WHERE h_date='$ma' AND h_user='$id' AND h_ip='$ip' AND h_referrer='$refurl'") or die(mysql_error());

// már volt ilyen hit
if (mysql_num_rows($eredm)>0) $error = 1;

if (!$refurl=="NO_REF"){
 $ok = 0;
 $eredm = mysql_query("SELECT * FROM ptpapproved");
  while($sor=@mysql_fetch_array($eredm)){
@extract($sor);
if (substr_count($refurl,$url)>0) { $ok=1; $curapproved=$url; }
  }
 if ($ok==0) $error = 2;
}

if ($error == 1) $kiir = "User <b>$id</b> has already received credit for your visit today";
if ($error == 2) $kiir = "The site where the hit comes from is not approved on our site";

if ($error == 0){
$objGeoIP = new GeoIP();
$objGeoIP->search_ip($ip);
if ($objGeoIP->found())
{
$curcountry=$objGeoIP->getCountryName();
$eredm = mysql_query("SELECT * FROM countries WHERE country='$curcountry'") or die(mysql_error());
if (mysql_num_rows($eredm)==0){
$shouldcredit=$def_credit;
$tier=0;
} else {
$s=mysql_fetch_array($eredm);
$tier = $s["tier"];
$e = mysql_query("SELECT tcredit,tname FROM tiers WHERE tid=$ctier");
$s=mysql_fetch_array($e);
$shouldcredit=$s["tcredit"];
}
} else {
$shouldcredit = $def_credit;
$tier=0;
}

if (!$curapproved=="NO_REF"){
$eredm = mysql_query("UPDATE ptpapproved SET tothits=tothits+1, totcredits=totcredits+$shouldcredit WHERE url='$curapproved'") or die(mysql_error());
}

 // choosing the site to show
 $eredm = mysql_query("SELECT * FROM ptpsites ORDER BY rand()") or die(mysql_error());
 if (mysql_num_rows($eredm)==0){
  // if no site then showing the default one
  $showurl = $def_site;
 } else {
  $sor = mysql_fetch_array($eredm);
  $showurl = $sor["url"];
  $showurlid = $sor["siteid"];
  $e = mysql_query("UPDATE ptpsites SET credits=credits-1 WHERE siteid=$sor[siteid]") or die(mysql_error());
 }
  if (!$showurlid) $showurlid=0;





// crediting the user, adding the hit in the database
  $eredm = mysql_query("INSERT INTO ptphits(h_date,h_user,h_ip,h_referrer,h_site) VALUES('$ma','$id','$ip','$refurl',$showurlid)") or die(mysql_error());
  $eredm = mysql_query("UPDATE users SET earned=earned+$shouldcredit,totpoints=totpoints+$shouldcredit WHERE username='$id'") or die(mysql_error());

  // crediting the users upline
  if ($max_ref_level>0){
$eredm = mysql_query("SELECT * FROM users WHERE username='$id'") or die(mysql_error());
if (mysql_num_rows($eredm)>0){
 $sor = mysql_fetch_array($eredm);
 extract($sor);
 $r[1]=$referrer1;
 $r[2]=$referrer2;
 $r[3]=$referrer3;
 $r[4]=$referrer4;
 $r[5]=$referrer5;
 $r[6]=$referrer6;
 $r[7]=$referrer7;
 $r[8]=$referrer8;
 $r[9]=$referrer9;
 $r[10]=$referrer10;
}
for ($i=1;$i<=$max_ref_level;$i++){
 $ccomm=$reflevel[$i];
 $refuser=$r[$i];
 if ((strlen($refuser)>0) and ($refuser!="_")){
  $ccredit = ($shouldcredit/100)*$ccomm;
  $eredm = mysql_query("UPDATE users SET refpoints=refpoints+$ccredit, totpoints=totpoints+$ccredit WHERE username='$refuser'") or die(mysql_error());
 }
}
  }
  $kiir = "<font color=black>User <b>$id</b> has been credited with <b>$shouldcredit</b> credits for showing you this page</font>";
}


$pagedesign=str_replace('[CREDIT_MESSAGE]',$kiir,$pagedesign);
if (!$showurl) $showurl=$def_site;
$pagedesign=str_replace('[sITE]',$showurl,$pagedesign);


// showing the banners
$n = substr_count($pagedesign,'[bANNER');
if ($n>0){
 for ($i=1;$i<=$n;$i++){
  $cbanner = getbanner();
  $cstring = '[bANNER'.$i.']';
  $pagedesign=str_replace($cstring,$cbanner,$pagedesign);
 }
}

// showing all textlinks
$allinks = getalllinks();
$pagedesign=str_replace('[ALLTEXTLINK]',$allinks,$pagedesign);

// showing random textlinks
$n = substr_count($pagedesign,'[TEXTLINK');
if ($n>0){
 for ($i=1;$i<=$n;$i++){
  $clink = getrandomtextlink();
  $cstring = '[TEXTLINK'.$i.']';
  $pagedesign=str_replace($cstring,$clink,$pagedesign);
 }
}
print($pagedesign);
?>

A página com o contador está na tabela ptpdesign, por isso é que tenho essa query lá em cima.

Sei que aqui é o espaço para javascript, mas não sabia onde meter esta questão.

Editado por joaocasta

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Não percebo a pergunta. Tenta ser mais concreto em relação ao que queres.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
danimt

Boas,

Antes de mais no teu javascript tens que assocar a variável ao setInterval pois de outra forma o clearInterval não terá nada a "limpar".

cinterval = window.setInterval(function() { ... }, 1000);

Depois em relação à interação com o PHP tens que, por exemplo, através de Ajax ou a submissão de um formulário, enviar os dados para o teu ficheiro PHP, e nesse lado efectuar a recepção dos dados, através do GET ou POST.

Talvez a minha resposta seja um pouco vaga, no entanto se puderes fornecer mais informações acerca do pretendido poderei ajudar com mais clareza.

Editado por danimt
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joaocasta

Boas danimt e brunoais.

Este projecto é sobre uma página para promover e as pessoas ganham com isso. A página tem publicidades. Quando abro a página quero o contador a contar 5 segundos (já está a fazer isso), logo a seguir, quando o contador terminar (chegar ao 0), quero que o segundo código seja corrido. Porque as pessoas só irão ganhar, se o contador terminar.

A url da página é assim: promote.php?id=joaocasta

Como poderei levar o valor id (GET) para outra página?

Espero que tenha sido claro, senão perguntem outra vez. :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Como poderei levar o valor id (GET) para outra página?

No URL.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Será mais fácil usares ID's numéricos que representem as pessoas a promover, pois podes ter 2 ou mais pessoas com o mesmo nome.

Outra coisa : o uso que estás a dar à função extract() pode vir a dar-te problemas e representa uma falha de segurança no contexto que estás a usar (variáveis globais $_GET, $_SERVER, $_POST)

Editado por yoda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joaocasta

Será mais fácil usares ID's numéricos que representem as pessoas a promover, pois podes ter 2 ou mais pessoas com o mesmo nome.

Outra coisa : o uso que estás a dar à função extract() pode vir a dar-te problemas e representa uma falha de segurança no contexto que estás a usar (variáveis globais $_GET, $_SERVER, $_POST)

Boa tarde yoda!

Aqui o nome é o username e não ha nenhum igual, pois ele é sempre unico.

Em relação ao extract() nao sabia e obrigado pela informação. Mas o que posso meter no lugar do extract() ?

É que eu tenho o código todo numa so pagina e quando a pagina carrega o código php é logo executado, mas so quero que ele seja executado quando o contador terminar.

assim as pessoas ganham logo, mesmo so vendo a pagina 1 segundo.

Cumps.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

O extract() só representa um potencial problema de segurança nas variáveis globais, porque podem reescrever variáveis existentes no script e alterar o resultado final. Para evitar isto, podes fazer algo deste género :

$post = $get = $server = array();


foreach ($_POST as $key=>$value)
{
 $post[$key] = $value;
}

foreach ($_GET as $key=>$value)
{
 $get[$key] = $value;
}


foreach ($_SERVER as $key=>$value)
{
 $server[$key] = $value;
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

@yoda

Para que é que serve esse código?

Isso é só um alias dos dados dos superglobals... Para que é que se quer isso?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

@yoda

Para que é que serve esse código?

Isso é só um alias dos dados dos superglobals... Para que é que se quer isso?

Eu crio sempre alias das globais, porque quero manter tanto o valor original como quero formatar o input que delas provém. É desnecessário ao @OP, mas não inútil.

@joaocasta,

O que acontece quando o contador chega a zero? A página redirecciona? É feito um pedido Ajax? Se não, vais ter de fazer um deles.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Eu crio sempre alias das globais, porque quero manter tanto o valor original como quero formatar o input que delas provém. É desnecessário ao @OP, mas não inútil.

Pq n fazer só:

$post = $_POST;
$get = $_GET;
$server = $_SERVER;

Segundo as regras, o php copia sempre o valor do conteúdo, com arrays ele faz um deep copy.

Assim é muito mais rápido que usar o foreach.

Assim já tens o cache dos dados que tanto queres com muito menos processamento.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Se o objectivo é simplesmente passar para a página, quando o contador terminar:

window.location = 'promote.php?id=joaocasta'

Editado por KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Pq n fazer só:

$post = $_POST;
$get = $_GET;
$server = $_SERVER;

Segundo as regras, o php copia sempre o valor do conteúdo, com arrays ele faz um deep copy.

Assim é muito mais rápido que usar o foreach.

Assim já tens o cache dos dados que tanto queres com muito menos processamento.

Validação.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joaocasta

Se o objectivo é simplesmente passar para a página, quando o contador terminar:

window.location = 'promote.php?id=joaocasta'

Então tipo, meto o html num lado e o php noutro e corro la o codigo?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pedro Vieira

Boas danimt e brunoais.

Este projecto é sobre uma página para promover e as pessoas ganham com isso. A página tem publicidades. Quando abro a página quero o contador a contar 5 segundos (já está a fazer isso), logo a seguir, quando o contador terminar (chegar ao 0), quero que o segundo código seja corrido. Porque as pessoas só irão ganhar, se o contador terminar.

A url da página é assim: promote.php?id=joaocasta

Como poderei levar o valor id (GET) para outra página?

Espero que tenha sido claro, senão perguntem outra vez. :P

Boas joaocasta, continuo sem perceber o teu problema.

A página serve para promover o que? e o que é que os utilizadores têm que fazer ?

Esse id que tens em cima e queres passar é o id do proprio utilizador? ou o id do utilizador que publicou a publicidade ?

Confesso que não tem experiência nesse tipo de páginas daí o meu desconhecimento na matéria.

Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joaocasta

Boas joaocasta, continuo sem perceber o teu problema.

A página serve para promover o que? e o que é que os utilizadores têm que fazer ?

Esse id que tens em cima e queres passar é o id do proprio utilizador? ou o id do utilizador que publicou a publicidade ?

Confesso que não tem experiência nesse tipo de páginas daí o meu desconhecimento na matéria.

Obrigado!

1- Serve para promover os sites de outras pessoas.

2- os utilizadores têm de esperar 5 segundos para receber.

3- o id é do utilizador.

Cumps. ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.