Jump to content


Photo

Definir Uma Data Para Expirar


  • Faça o login para participar
16 replies to this topic

#1 xploit

xploit

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 05/08/2008, 12:26

Boas pessoal eu tenho um script que utiliza BD..

é o seguinte o usuário regista-se, e ao registar-se eu defino uma data de inicio assim:

$inicio = date("d/m/Y") ;


E grava a data de inicio de registo na BD imaginemos que foi em:$inicio="12/8/2008".


o usuário faz login e na sua área de cliente tem la uma data de expiração que eu proprio ponho na BD, que é a data em

que o serviço expira, eu faço com que faça um print() na página do cliente logado:

O seu serviço expira em: 12/9/2008


agora gostava se saber como faço para quando chegar aquela data ou se passar de 12/9/2008 fazer com que não deixe executar o script do serviço...

Com este exemplo eu consigo fazer com que , nao execute o script mas só se for naquela data exacta(12/9/2008)

se for por exemplo em 13/9/2008, o cliente já consegue usar o serviço otra vez e é isso que eu não quero...



$inicio = "12/8/2008";
$expira = "12/9/2008";


if($inicio == $expira)
{
echo' o seu serviço ja expirou';

}else{

//aqui fica o script do serviço que ainda está disponivel//
}


Eu quero é que a partir da data(12/9/2008) expire o serviço, que neste exemplo em cima so expira no exacto dia...


Cumprimentos

#2 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 05/08/2008, 13:22

Veja se isto lhe ajuda:

http://forum.wmonlin...o...st&p=928937

Que poderia ficar:
if (strtotime($inicio) >= strtotime($expira)) {
echo' o seu serviço ja expirou';
}else{
//aqui fica o script do serviço que ainda está disponivel//
}

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#3 xploit

xploit

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 05/08/2008, 13:59

EU fiz assim:

$inicio = "23/03/08";
$expira = "04/08/08";

if (strtotime($inicio) >= strtotime($expira)) {
echo' o seu serviço ja expirou';
}else{
echo ' ainda tem tempo';

echo date("d/m/y");

}


A data actual de hoje é 05/08/08. e pus no expirar 04/08/08..

O que acontece é que ele vai para a o echo'ainda tem tempo';... Sendo dia 05/08/08 ele supostamente devia aparecer o

echo' o seu serviço já expirou..


O que puderá estar mal?

Obrigado desde já pela ajuda :rolleyes:

Cumprimentos

#4 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 05/08/2008, 22:23

EU fiz assim:

$inicio = "23/03/08";
$expira = "04/08/08";

if (strtotime($inicio) >= strtotime($expira)) {
echo' o seu serviço ja expirou';
}else{
echo ' ainda tem tempo';

echo date("d/m/y");

}


A data actual de hoje é 05/08/08. e pus no expirar 04/08/08..

O que acontece é que ele vai para a o echo'ainda tem tempo';... Sendo dia 05/08/08 ele supostamente devia aparecer o

echo' o seu serviço já expirou..


O que puderá estar mal?

Obrigado desde já pela ajuda :rolleyes:

Cumprimentos

No seu código aí a data está diferente... '-'
Mas testei aqui com 05/08/08 e ele funcionou perfeitamente =)

<?
$inicio = "05/08/08";
$expira = "04/08/08";

if (strtotime($inicio) >= strtotime($expira)) {
echo' o seu serviço ja expirou';
}else{
echo ' ainda tem tempo <br>';

echo 'expira em: '.$expira;

}
?>

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#5 xploit

xploit

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 06/08/2008, 14:30

Já consegui fazer desse método te agradeço imenso :D

Agora e o seguinte, essa variavel:$expira, eu cria ir busca-la no BD como posso fazer?

o meu bd ta configurado assim:

$tabela= "mbl_membros";
$bd = "membros"

depois a tabela ta dividida nestas partes:

| codigo | login | password | nome | inicio | expira |
| 3 | rui | lol | josé | 12/12/09 | 12/12/11 |


Como faço para ir no usuário (rui) e pegar só e unicamente a data de expiração do servico dele em php ?

Cumprimentos e obrigado pela ajuda.

Já consegui fazer desse método te agradeço imenso :D

Agora e o seguinte, essa variavel:$expira, eu cria ir busca-la no BD como posso fazer?

o meu bd ta configurado assim:

$tabela= "mbl_membros";
$bd = "membros"

depois a tabela ta dividida nestas partes:

| codigo | login | password | nome | inicio | expira |
| 3 | rui | lol | josé | 12/12/09 | 12/12/11 |


Como faço para ir no usuário (rui) e pegar só e unicamente a data de expiração do servico dele em php ?

Cumprimentos e obrigado pela ajuda.


Edição feita por: xploit, 06/08/2008, 14:31.


#6 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 06/08/2008, 15:37

<?

// CONECTA AO BD com o mysql_connect

$tabela= "mbl_membros";
$bd = "membros";

//Pode pegar esse dado por GET ou POST e etc...
$login='rui';

mysql_select_db($bd);

$sql=mysql_query("SELECT expira FROM $tabela WHERE login=$login");
$row=mysql_fetch_array($sql);

$inicio = "05/08/08";
$expira = $row['expira'];

if (strtotime($inicio) >= strtotime($expira)) {
echo' o seu serviço ja expirou';
}else{
echo ' ainda tem tempo <br>';

echo 'expira em: '.$expira;

}

?>

(y)
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#7 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 06/08/2008, 16:10

Ok, apesar de funcionar da maneira correta, ainda existe um problema que eu não consigo solucionar. E se o cliente atrasar o relógio do sistema? O script não volta a funcionar :assobio: ?

/*DarkSign*/
Não sabe por onde começar? Que tal pelas Regras ?

#8 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 06/08/2008, 16:26

Ok, apesar de funcionar da maneira correta, ainda existe um problema que eu não consigo solucionar. E se o cliente atrasar o relógio do sistema? O script não volta a funcionar :assobio: ?

/*DarkSign*/

Hmm, érrr, mas que administrador faria no servidor dele? Talvez um HOST "meio boca", mas acho que nem isso '-'. Por que isso não tem efeito algum com o relógio do OS da pessoa xD, então acho que não há problemas... =)
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#9 xploit

xploit

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 07/08/2008, 14:57

Boas pessoal, eu fiz daquele jeito que tu me disseste para expirar as datas mas não está funcionando... Eu vou buscar as datas ao BD, e ele não faz o que deveria fazer... no bd ta definido estas datas:

$actiservico ="07/08/08";
$expiservico ="31/09/08";


Agora o código do script:

$db3 = mysql_connect ($host, $login_db, $senha_db);
$basedados3 = mysql_select_db($database);
$sql=mysql_query("SELECT expiservico FROM $tabela WHERE login='$login'");
$row=mysql_fetch_array($sql);
$expiservico = $row['expiservico'];

$db4 = mysql_connect ($host, $login_db, $senha_db);
$basedados4 = mysql_select_db($database);
$sql2=mysql_query("SELECT actiservico FROM $tabela WHERE login='$login'");
$row2=mysql_fetch_array($sql2);
$actiservico = $row2['actiservico'];

if ($actiservico==""){
$estado_conta = "inactiva";
}else{

if (strtotime($actiservico) >= strtotime($expiservico)) {
$estado_conta ="expirou";

}
else{
$estado_conta = "".$expiservico."";
}
}
mysql_close ($db4);


Eu com essa configuração tenho sempre a mensagem "expirou".. o que puderá ser?

Cumprimentos

#10 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 07/08/2008, 16:52

Bom, não precisa fazer duas consultas para pegar dados do mesmo registro ^^
$db3 = mysql_connect ($host, $login_db, $senha_db);
$basedados3 = mysql_select_db($database);
$sql=mysql_query("SELECT *FROM $tabela WHERE login='$login'");
$row=mysql_fetch_array($sql);
$expiservico = $row['expiservico'];
$actiservico = $row['actiservico'];

if ($actiservico==""){
$estado_conta = "inactiva";
}else{

if (strtotime($actiservico) >= strtotime($expiservico)) {
$estado_conta ="expirou";

}
else{
$estado_conta = $expiservico;
}
}
mysql_close ($db3);
E... veja se agora dá certo... =)
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#11 xploit

xploit

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 07/08/2008, 18:11

Pus exactamente como me disse e aparece "expirou" as datas no BD são:

$actiservico=07/08/08 $expiservico=31/09/08

$db3 = mysql_connect ($host, $login_db, $senha_db);
$basedados3 = mysql_select_db($database);
$sql=mysql_query("SELECT *FROM $tabela WHERE login='$login'");
$row=mysql_fetch_array($sql);
$expiservico = $row['expiservico'];
$actiservico = $row['actiservico'];
if ($actiservico==""){
$estado_conta = "inactiva";
}else{
if (strtotime($actiservico) >= strtotime($expiservico)){
$estado_conta ="expirou";
}else{
$estado_conta = $expiservico;
}
}mysql_close ($db3);



O que puderá ser? Cumprimentos e obrigado pela sua disposição :rolleyes:

#12 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 07/08/2008, 23:56

Você deu um ECHO nas duas variáveis que pega os dados do BD? Para ver se está OK a saída delas? '-'
Estranho... '-'
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#13 xploit

xploit

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 08/08/2008, 09:57

Já, experimentei e pegou os dados certinhos :

data de inicio=07/08/08
data de expiração=31/09/08

e continua não funcionando ..

:huh:

Edição feita por: xploit, 08/08/2008, 09:57.


#14 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 08/08/2008, 13:58

:wacko:
Fiz os testes denovo aqui e até por DB e com mesmo código seu aqui funcionou normal...
Coloquei os campos das datas no DB como VARCHAR.... e deu tudo OK....

Só por dúvida, tem vários campos com essas datas no DB?
Pode fazer isso e ver o que retorna?
$db3 = mysql_connect ($host, $login_db, $senha_db);
$basedados3 = mysql_select_db($database);
$sql=mysql_query("SELECT *FROM $tabela");
while($row=mysql_fetch_array($sql)):
$expiservico = $row['expiservico'];
$actiservico = $row['actiservico'];

if ($actiservico==""){
$estado_conta = "inactiva";
}else{

if (strtotime($actiservico) >= strtotime($expiservico)) {
$estado_conta ="expirou";

}else{
$estado_conta = $expiservico;
}
}
echo 'Data Ativação.: '.$actiservico.'<br>';
echo 'Data Expiraç..: '.$expiservico .'<br>';
echo 'Estado da co..: '.$estado_conta.'<p>';

endwhile;
Esse script só será eficaz se tiver tanto contas expiradas quanto contas ativas... '-'

Edição feita por: lwirkk, 08/08/2008, 14:01.

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#15 xploit

xploit

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 10/08/2008, 21:49

Infelizmente deu o resultado contraditório -_-

Data Ativação.: 09/08/08
Data Expiraç..: 01/09/08
Estado da co..: expirou






1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq