Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com sistema de login


TO APRENDENDO

Pergunta

A dúvida é a seguinte:

Como bolar um esquema pra deletar uma conta do banco de dados que não foi ativada em 30 dias?

Isso é possível?

Abaixo segue o script:

<?php
/* Config.php é o arquivo de configurações da conexão com o mysql */
include "config.php";
/* verifica o preenchimento correto de todos os campos do campo login */
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
if((!$usuario) || (!$senha)){
    echo "Por favor, todos campos devem ser preenchidos! <br /><br />";
    include "formulario_login.html";
}
else{
/* se o cara preencheu tudo certo, declara a variável senha criptografada em md5 */
/* daí faz o select e verifica se o trem é verdade pelo usuário e senha e vê se tá ativo, se tivé = 1, do contrário, inativo é igual a zero */
    $senha = md5($senha);
    $sql = mysql_query("SELECT * FROM tbl_usuarios WHERE usuario='{$usuario}' AND senha='{$senha}' AND ativado='1'");
    $login_check = mysql_num_rows($sql);
    if($login_check > 0){
        while($row = mysql_fetch_array($sql)){
            foreach( $row AS $key => $val ){
                $$key = stripslashes( $val );
            }
/* dando tudo certin, criamos as sessões usuario_id, nome, sobrenome, email e nivel_usuario, uhuuu! hehehe, que beleeeeza! */
/* com essas sessão nós vai podê recuperá algumas coisa e fazê miséria hehehe */
/* é bão liberá sessão q num for usar pra não carregá o servidor */
            $_SESSION['usuario_id'] = $usuario_id;
            $_SESSION['nome'] = $nome;
            $_SESSION['sobrenome'] = $sobrenome;
            $_SESSION['email'] = $email;
            $_SESSION['nivel_usuario'] = $nivel_usuario;
            mysql_query("UPDATE tbl_usuarios SET data_ultimo_login = now() WHERE usuario_id ='{$usuario_id}'");
        echo '<meta http-equiv="refresh" content="0;URL=downloads.php" />';
        }
    }
    else{
/* OOOOOOPA! ALGUMA COISA DEU ERRADO, VOLTA LÁ ZÉ DENDÁGUA! KKKKK */
        echo "Você não pode logar-se! Este usuário e/ou senha não são válidos!<br />
            Por favor tente novamente!<br />";
        include "formulario_login.html";
    }
}
?>

Daí eu já pelejei, já vasculhei aqui no fórum e no google, mas até agora nada rsrs...

Eu quero deletar todos que não ativaram a conta em tempo hábil de 30 dias automáticamente.

Será q isso pode ser feito? Nem sei por onde começar...

Daí então eu queria tipo verificar assim:

IF inativo<'30 dias' deleta usuarioid

Bom, espero que tenham entendido,

deixei tudo bem comentado pra vocês entenderem aí.

vlw! obrigado

Editado por TO APRENDENDO
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Opa.

Então...eu criaria uma função que poderia ser acessada na administração da sua aplicação.

Poderia ser mais ou menos assim:

você tem uma tabela de usuario com os seguintes campos:

id_usuario, nome,data_cad,data_ativa,status

O campo status recebe 0 quando está desativado e 1 quando ativado.

Aí você faz -> select data_cad from tabela where status = 0

você pode usar esta função para saber quantos dias se passaram.

function dia_ultrapassado($databd){
      /*Essa funcão informa o número de segundos transcorridos desde as 00:00:00 do dia 1 de janeiro de 1970. No  caso calculo os segundos transcorridos para cada uma das datas. A subtração dos dois valores encontrados informa a diferença (em segundos) entre as duas datas, como 24 horas tem 86400 segundos, o resultado dividido por 86400 resulta no número de dias.*/
        
        $databd= @explode("-",$databd);
        $data = @mktime(0,0,0,$databd[1],$databd[2],$databd[0]);
        $data_atual = @mktime(0,0,0,date("m"),date("d"),date("Y"));
        $dias = ($data - $data_atual)/86400;
        $dias = @ceil($dias);
        $final=@abs($dias);
        
        return $final;
      }
Peguei esta função de um colega e ela funciona pois uso ela na minha aplicação. Aí você executa a query passada acima
$query=mysql_query("select data_cad,id_usuario from tabela  where status = 0 ");

while($resultado=mysql_fetch_array($query)){
     $dia=dia_ultrapassado($resultado[0]);
     if($dia > 30){
    $deleta=mysql_query("delete from tabela where id=$resultado[1]");
      }


}

Não testei isso..mas tenho certeza que fica perto disso o que você precisa.

Tente adaptar este caminho.

Espero que isso ajude.

Editado por Mario Junior
Link para o comentário
Compartilhar em outros sites

  • 0
Opa.

Então...eu criaria uma função que poderia ser acessada na administração da sua aplicação.

Poderia ser mais ou menos assim:

você tem uma tabela de usuario com os seguintes campos:

id_usuario, nome,data_cad,data_ativa,status

O campo status recebe 0 quando está desativado e 1 quando ativado.

Aí você faz -> select data_cad from tabela where status = 0

você pode usar esta função para saber quantos dias se passaram.

function dia_ultrapassado($databd){
      /*Essa funcão informa o número de segundos transcorridos desde as 00:00:00 do dia 1 de janeiro de 1970. No  caso calculo os segundos transcorridos para cada uma das datas. A subtração dos dois valores encontrados informa a diferença (em segundos) entre as duas datas, como 24 horas tem 86400 segundos, o resultado dividido por 86400 resulta no número de dias.*/
        
        $databd= @explode("-",$databd);
        $data = @mktime(0,0,0,$databd[1],$databd[2],$databd[0]);
        $data_atual = @mktime(0,0,0,date("m"),date("d"),date("Y"));
        $dias = ($data - $data_atual)/86400;
        $dias = @ceil($dias);
        $final=@abs($dias);
        
        return $final;
      }
Peguei esta função de um colega e ela funciona pois uso ela na minha aplicação. Aí você executa a query passada acima
$query=mysql_query("select data_cad,id_usuario from tabela  where status = 0 ");

while($resultado=mysql_fetch_array($query)){
     $dia=dia_ultrapassado($resultado[0]);
     if($dia > 30){
    $deleta=mysql_query("delete from tabela where id=$resultado[1]");
      }


}

Não testei isso..mas tenho certeza que fica perto disso o que você precisa.

Tente adaptar este caminho.

Espero que isso ajude.

Você tambem pode fazer o seguinte na tabela onde fica armazenda a conta inativa você pode adicionar um campo prazo

$data_limite=strftime("%Y-%m-%d", strtotime("+30 days"));

insere a variavel $data_limite no campo prazo

e realiza uma quey

$data=date('Y-m-d');

if ($data==$data_busacada_no_banco){

deleta o registro

}else{

blablabla

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...