Sou novata em programação 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 ativação de conta e dai ele consegue acessar as paginas.
O problema é o seguinte: eu cadastrei dois usuarios, os usuarios receberam os emails de ativação, porém 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 sessao, que sempre fica com o mesmo valor.
Segue abaixo o codigo da tabela (banco ) e os codigos em PHP que estou utilizando.
Pergunta
chris_ammy
Sou novata em programação 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 ativação de conta e dai ele consegue acessar as paginas.
O problema é o seguinte: eu cadastrei dois usuarios, os usuarios receberam os emails de ativação, porém 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 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 sessão 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 estão 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 usuário.";
}
//Verifica se já existe o e-mail
if ($num_busca2 > 0){
$ac[] = "Esse e-mail já está sendo usado por outro usuário.";
}
//Verifica se o e-mail esta correto
if (!ereg("@.", $_POST['email'])){
$ac[] = "E-mail inválido.";
}
//Verifica se as duas senha são diferente
if ($_POST['senha'] != $_POST['senha2']){
$ac[] = "Verifique se as duas senha estão corretas.";
}
//Verifica se todas estão 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());
$tópico = "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, não pode ser o mesmo do destinatário
$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 ativação
mail($email, $tópico, $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 "Usuário ativado.";
}
else {
echo "Esse usuário não 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 não 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 sessão 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>
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.