Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite.
Sou leigo em PHP e atualmente tenho um projeto apenas para fins didáticos.
Estou com um sistema de login, e gostaria de armazenar várias informações dentro de uma session. Porém, só estou conseguindo armazenar o email e senha (que é digitado pelo usuário no formulário de login).
O formulário de login (index.php) está assim:
<div class="modal-body">
<form name="loginform" method="post" action="userauthentication.php" class="form-login">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input type="email" name="email" id="inputEmail" class="form-control" placeholder="Exemplo: usuario@hotmail.com" required autofocus>
</div>
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
<input type="password" name="senha" id="inputPassword" class="form-control" placeholder="••••••••••••••••" required>
</div>
</div>
O arquivo de autenticação de usuário (**userauthentication.php**) está assim:
<?php
$email=$_POST['email'];
$senha=$_POST['senha'];
$sql = mysql_query ("SELECT * FROM usuarios WHERE email = '$email' and senha = '$senha'") or die(mysql_error());
$row = mysql_num_rows($sql);
if ($row > 0) {
session_start();
$_SESSION['email']=$_POST['email'];
$_SESSION['senha']=$_POST['senha'];
echo "<script>alert('Você foi autenticado com sucesso. Redirecionando...');</script>";
echo "<script>loginsuccessfully()</script>"; //Script para redirecionamento de páginas
}
else {
echo "<script>alert('Usuário ou senha incorretos. Tente novamente.');</script>";
echo "<script>loginfailed()</script>"; //Script para redirecionamento de páginas
}
?>
Eu gostaria de armazenar todos os dados (nome, endereço, data nascimento, etc) do usuário quando ele logasse com seu login e senha, e depois fazer uma consulta com SESSION, exemplo:
.$_SESSION['data_nasc'].
Atualmente eu consigo fazer essa consulta como citada acima somente com o EMAIL e SENHA, que são os campos que o usuário completa no formulário de login.
Então, na verdade, a session só está armazenando os campos que o usuário digita no login.
E como eu disse, eu gostaria de consultar todos os dados, e não somente o que o usuário digita no formulário de login.
Eu dei uma olhada neste tópico: [https://forum.imasters.com.br/topic/562416-resolvido-mostrar-mais-de-um-dado-do-usuário-logado-php/](/topic/562416-resolvido-mostrar-mais-de-um-dado-do-usu%C3%A1rio-logado-php/) porém não consegui resolver.>
3 minutos atrás, lucianfpaula disse:
Olá, eu não sei realmente qual a duvida mas na minha seria somente colocar o resto do campo na autenticação, pois la você colocou semente o email e senha, colocque o que quer junto com os outros campos despois da session_star
Não adianta só adicionar o resto dos campos (nome, cpf, etc) ali na autenticação pois a sessão está guardando o que o usuário digita no input do login. Caso eu quisesse gravar mais dados, eu teria que criar mais inputs, exemplo:
EMAIL:_________
SENHA:_________
CPF:___________
ENDEREÇO:________
Se tivesse esses 4 inputs pro usuário preencher na página de login, aí sim eu conseguiria "só adicionar" os dados na autenticação.
você ta chamando seu arquivo de autenticação tipo
require_once 'autenticacao.php';
se assim estiver, dentro da autenticação coloque as variaveis.
$usuario = $_SESSION["usuario"];
$senha = $_SESSION["senha"];
$endereco = $_SESSION["endereco"];
etc....
e na outra pagina chame as variveis em vez de chamar as session direto.Amigo, se você esta verificando se existe um usuario com este email e login, apartir que ele encontre alguem, você pode trazer os dados do mesmo, vou da um exemplo:
<?php
$email=$_POST['email'];
$senha=$_POST['senha'];
$sql = mysql_query ("SELECT * FROM usuarios WHERE email = '$email' and senha = '$senha'") or die(mysql_error());
$row = mysql_num_rows($sql);
if ($row > 0) {
session_start();
//Pegando os dados do usuario e jogando nas sessões
$row = mysqli_fetch_assoc($sql);
$_SESSION['id'] = $row['id'];
$_SESSION['data_nac'] = $row['data_nac'];
$_SESSION['nome'] = $row['nome'];
$_SESSION['email'] = $row['email'];
$_SESSION['senha'] = $row['senha'];
echo "<script>alert('Você foi autenticado com sucesso. Redirecionando...');</script>";
echo "<script>loginsuccessfully()</script>"; //Script para redirecionamento de páginas
}
else {
echo "<script>alert('Usuário ou senha incorretos. Tente novamente.');</script>";
echo "<script>loginfailed()</script>"; //Script para redirecionamento de páginas
}
?>Não entendi a necessidade de armazenar todos esses dados em sessão, se elas estão ali no db para quando e onde quiser.
A resposta acima faz exatamente o que você quer.. Entretanto, como você mencionou 'fins didáticos' na sua pergunta, devo dizer ... esse código está obsoleto.. dá uma pesquisada em mysqli e pdo, pois não tem sentido aprender errado.
Olá, eu não sei realmente qual a duvida mas na minha seria somente colocar o resto do campo na autenticação, pois la você colocou semente o email e senha, colocque o que quer junto com os outros campos despois da session_star