You are on page 1of 9

Bem-vindo, visitante ( Entrar | Registrar )

Frum Script Brasil > Programao & Desenvolvimento > PHP

Problemas com a ativao de email ( sistema de login PHP )


20/01/2010 - 10:13

Opes

Post #1

chris_ammy

Sou novata em programao PHP, e tenho que montar um projeto de intranet. Consegui na net, um sistema de login, onde o usuario cadastra seus dados, recebe um email de ativao de conta e dai ele consegue acessar as paginas. O problema o seguinte: eu cadastrei dois usuarios, os usuarios receberam os emails de ativao, porm se um dele ativar a conta, ele tambem ativa a conta do outro usuario. No sistema q peguei na net, a tabela do banco contem uma variavel chamada

Grupo: Membros Posts: 21 Registrado: 05/01/2010 Membro n: 73559

sessao, que sempre fica com o mesmo valor. Segue abaixo o codigo da tabela (banco ) e os codigos em PHP que estou utilizando. Me ajudem por favor!!!!!!! -- Banco: intranet -- Estrutura da tabela `user` -CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `login` varchar(20) NOT NULL default '', `senha` varchar(8) NOT NULL default '', `nome` varchar(50) NOT NULL default '', `sobrenome` varchar(50) NOT NULL default '', `empresa` varchar(50) NOT NULL default '', `depto` varchar(50) NOT NULL default '', `fone` varchar(11) NOT NULL default '', `email` varchar(200) NOT NULL default '', `activo` enum('N','S') NOT NULL default 'N',

`sessao` varchar(200) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Cadastro.php <?php include("config.php"); if (isset($_POST['login'])){ //pega a sesso id do usuario session_start(); $sessao = session_id(); $login = $_POST['login']; $senha = $_POST['senha']; $email = $_POST['email']; $nome = $_POST['nome']; $sobrenome = $_POST['sobrenome']; $empresa = $_POST['empresa']; $depto = $_POST['depto']; $fone = $_POST['fone']; $sql_busca = "SELECT * FROM user WHERE login = '$login'"; $exe_busca = mysql_query($sql_busca) or die (mysql_error()); $num_busca = mysql_num_rows($exe_busca); $sql_busca2 = "SELECT * FROM user WHERE email = '$email'"; $exe_busca2 = mysql_query($sql_busca2) or die (mysql_error()); $num_busca2 = mysql_num_rows($exe_busca2); //Verifica se os campos esto preenchidos if ($_POST['login'] == "" || $_POST['senha'] == "" || $_POST['senha2'] == "" || $_POST['email'] == "" || $_POST['nome'] == "" || $_POST['empresa'] == "" || $_POST['depto'] == ""){ $ac[] = "Por favor preencha todos os campos corretamente."; } //Verifica se j existe o login if ($num_busca > 0){ $ac[] = "Esse login j est sendo usado por outro usurio."; } //Verifica se j existe o e-mail if ($num_busca2 > 0){ $ac[] = "Esse e-mail j est sendo usado por outro usurio."; } //Verifica se o e-mail esta correto if (!ereg("@.", $_POST['email'])){ $ac[] = "E-mail invlido.";

} //Verifica se as duas senha so diferente if ($_POST['senha'] != $_POST['senha2']){ $ac[] = "Verifique se as duas senha esto corretas."; } //Verifica se todas esto corretas if (!isset($ac)){ //Inclui o cadastro no mysql $sql_inclu = "INSERT INTO user(login, senha, email, nome, sobrenome, empresa, depto, fone, sessao) VALUES ('$login', '$senha', '$email', '$nome', '$sobrenome', '$empresa', '$depto', '$fone', '$sessao')"; $exe_inclu = mysql_query($sql_inclu) or die (mysql_error()); $tpico = "Cadastro Intranet"; $mensagem = "<html>"; $mensagem .= "<body>"; $mensagem .= "Ol $login\r\n"; $mensagem .= "<br>Voc efetuou um cadastro na intranet.</br>"; $mensagem .= "<br>Login: $login"; $mensagem .= "<br>Senha: $senha"; $mensagem .= "<br>Ativar conta <a href='$site/active.php?ac=$sessao'>$site/active.php?ac=$sessao</a></br>"; $mensagem .= "</body>"; $mensagem .= "</html>"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= "From: intranet <cristina.oliveira@bmslog.com>\r\n"; // Mude para o e-mail do remetente, no pode ser o mesmo do destinatrio $headers .= "To: <$email>\r\n"; $ac[] = "Cadastro efetuado com sucesso, verifique seu e-mail para ativa a conta."; //enviar para o email o login, senha e o codigo de ativao mail($email, $tpico, $mensagem, $headers); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Document sans titre</title> <style type="text/css"> <!-.Style2 {font-size: 13px} --> </style>

</head> <body> <?php if (isset($ac)){ for($i=0;$i<count($ac);$i++){ echo "<li>".$ac[$i]; } } ?> <form id="form1" name="form1" method="post" action="<? $_SERVER['PHP_SELF']?>"> <table width="100%" border="0"> <tr> <td colspan="2"><div align="center"><strong>Cadastro</strong></div></td> </tr> <tr> <td width="13%"><span class="Style2">Nome:</span></td> <td width="87%"><span class="Style2"> <label> <input name="nome" type="text" id="nome" /> </label> </span></td> </tr> <tr> <td width="13%"><span class="Style2">Sobrenome:</span></td> <td width="87%"><span class="Style2"> <label> <input name="sobrenome" type="text" id="sobrenome" /> </label> </span></td> </tr> <tr> <td width="13%"><span class="Style2">Empresa:</span></td> <td width="87%"><span class="Style2"> <label> <input name="empresa" type="text" id="empresa" /> </label> </span></td> </tr> <tr> <td width="13%"><span class="Style2">Depto:</span></td> <td width="87%"><span class="Style2"> <label> <input name="depto" type="text" id="depto" /> </label> </span></td> </tr>

<tr> <td width="13%"><span class="Style2">Fone com DDD:</span></td> <td width="87%"><span class="Style2"> <label> <input name="fone" type="text" id="fone" /> </label> </span></td> </tr> <tr> <td width="13%"><span class="Style2">Login:</span></td> <td width="87%"><span class="Style2"> <label> <input name="login" type="text" id="login" /> </label> </span></td> </tr> <tr> <td><span class="Style2">Senha:</span></td> <td><span class="Style2"> <label> <input name="senha" type="password" id="senha" /> </label> </span></td> </tr> <tr> <td><span class="Style2">Repetir senha: </span></td> <td><span class="Style2"> <label> <input name="senha2" type="password" id="senha2" /> </label> </span></td> </tr> <tr> <td><span class="Style2">E-mail:</span></td> <td><span class="Style2"> <label> <input name="email" type="text" id="email" /> </label> </span></td> </tr> <tr> <td> </td> <td><span class="Style2"> <label> <input type="submit" name="Submit" value="Enviar" /> </label> </span></td> </tr>

</table> <p> </p> </form> </body> </html> active.php <?php include("config.php"); if (isset($_GET['ac'])){ $sessao = $_GET['ac']; $sql_busca = "SELECT * FROM user WHERE sessao = '$sessao'"; $exe_busca = mysql_query($sql_busca) or die (mysql_error()); $num_busca = mysql_num_rows($exe_busca); if ($num_busca > 0){ $sql_up = "UPDATE user SET activo = 'S' WHERE sessao = '$sessao'"; $exe_up = mysql_query($sql_up) or die (mysql_error()); echo "Usurio ativado."; } else { echo "Esse usurio no pode ser ativado."; } } ?> restrito.php <?php @session_start(); if (isset($_SESSION['login']) && isset($_SESSION['senha'])){ $login_usuario = $_SESSION['login']; } else { header("Location:login.php"); exit(); } ?> logar.php <?php include("config.php"); $login = $_POST['login'];

$senha = $_POST['senha']; /* Verifica se existe usuario, o segredo ta aqui quando ele procupa uma linha q contenha o login e a senha digitada */ $sql_logar = "SELECT * FROM user WHERE login = '$login' && senha = '$senha'"; $exe_logar = mysql_query($sql_logar) or die (mysql_error()); $fet_logar = mysql_fetch_assoc($exe_logar); $num_logar = mysql_num_rows($exe_logar); //Verifica se n existe uma linha com o login e a senha digitado if ($num_logar == 0){ echo "Login ou senha invalido."; echo "<br><a href='java script:window.history.go(-1)'>Clique aqui para volta.</a>"; } elseif($fet_logar['activo'] == "N"){ echo "Usuario no ativado, verifique seu e-mail para ativa a conta."; echo "<br><a href='java script:window.history.go(-1)'>Clique aqui para volta.</a>"; } else{ //Cria a sesso e manda pra pagina principal.php session_start(); $_SESSION['login'] = $login; $_SESSION['senha'] = $senha; header("Location:principal.php"); } ?> principal.php <?php include("config.php"); include("restrito.php"); $sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'"; $exe_busca = mysql_query($sql_busca) or die (mysql_error()); $fet_busca = mysql_fetch_assoc($exe_busca); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Document sans titre</title> </head>

<body> Ol <? echo $fet_busca['login'];?> </body> </html>

20/01/2010 - 11:18

SK15

Bem isso ocorre pois voc deve especificar qual usurio pretende editar dentro da sua tabela, use a 'Chave e mude essas linhas ... Cadastro.php CODE ... //Inclui o cadastro no mysql

AI..AI..AI..AI

$sql_inclu = "INSERT INTO user(login, senha, email, nome, sobrenome, em $exe_inclu = mysql_query($sql_inclu) or die (mysql_error());
Grupo: Membros Posts: 705 Registrado: 27/12/2006 Membro n: 23945 Sexo:

('$login', '$senha', '$email', '$nome', '$sobrenome', '$empresa', '$dep

// Busca o ltimo ID cadastrado na tabela $ultimo_id = mysql_insert_id(); .....

$mensagem .= "<br>Ativar conta <a href='$site/active.php?ac=$sessao&usr ....

active.php CODE ... $sessao = $_GET['ac']; $usuario = $_GET['usr'];

$sql_busca = "SELECT * FROM user WHERE id='$usuario' && sessao = '$sess ....

$sql_up = "UPDATE user SET activo = 'S' WHERE id='$usuario' && sessao = ...

--------------------

Mega Midi: Msicas midi grtis para blog, sites e download!

21/01/2010 - 15:32

chris_ammy

Agora funcionou! Muito obrigada pela ajuda

Grupo: Membros Posts: 21 Registrado: 05/01/2010 Membro n: 73559

Prximo mais velho PHP Prximo mais novo


Digite palavras-chave

Buscar no tpico

2 usurio(s) est(o) lendo este tpico (2 visitantes e 0 usurios annimos) 0 membros:

|-- PHP

Ok

Verso Simpl Powered By IP.Board 2013 IPS, Inc. Hospedado por Hostnet Hospedagem de Sites Skin desenvolvida por Invision Help

You might also like