Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gustavo Kirk

[Resolvido] Login e Senha

Recommended Posts

Como faço para apresentar no site o email de quem esta logado no momento?

Atraves de um recordset?

 

obrigado

 

Estou Ciando um sistema de login, porem não consigo fazer aparecer os dados de quem esta logado.

 

pag entrar.php(envia os dados do formulario para a pag login.php)

 <form method="POST" action="login.php">
          <input name="email" type="text" id="email" value="" />
          <input name="senha" type="password" id="senha" value="" />
          <input type="submit" name="entrar" id="entrar" value="entrar" />
          </form>

pag login.php (recebe os dados do formulario, faz as verificações e redireciona para a pag home)

  <?php 
//incluindo arquivo de conexao com o banco 
require_once('Connections/conexao.php'); ?>

<?php
//inicio as funcoes necessarias para trabalhar com sessao 
ob_start();
session_start();

//Recebendo dados da pag index do formulario html 
$email = $_POST['email'];
$senha  = $_POST['senha'];


//alimento minha query
$query = "SELECT * FROM TABELA WHERE teste='$email'";

//alimento as variaveis com o resultado da array
$usuario = $dbarray["email"];

//crio as sessoes
$_SESSION["email"]= $email;
$_SESSION["senha"]= $senha;
	
//redirecionando para pagina  home
header("Location:home.php"); ?>

pag home.php (pagina restrita, que deveria mostrar os dados de quem esta logado)

<?php

ob_start();

session_start();
//Caso nao tenha efetuado o login, ao tentar acessar esta pagina o usuario sera redirecionado para o loga.html
if( (!isset($_SESSION["email"])) AND (!isset($_SESSION["senha"])) )
 {
	 echo "<script>alert('Voce nao efetuou o login!'); window.location='index.php';</script>";
     exit;
 }
  
  else
  {
  
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você usa cookies ou session para fazer o login?

 

se for session é só pegar o valor do campo usuario (ou id do usuario) dela e buscar no banco de dados na tabela aonde está armazenado o email do usuario...

 

tipo:

 

$sql="SELECT email FROM usuarios WHERE id=".$_SESSION['login_usuario'];
$rs=mysql_query($sql);
$reg=mysql_result($rs);

você usa a variavel $usuario exatamente para que? Porque da maneira que você está fazendo, qualquer email e qualquer senha que o usuario digite irá entrar...

 

Mas como não é esse o problema, vejamos...

 

Outra coisa, pelo o que eu saiba, o if de um php não usa como comparador condicional o "AND" e sim "&&" ... corrija isso também, não sei se tem relação com o erro, mas de qualquer forma é um erro.

 

lendo sobre o ob_start ali encima mencionado, encontrei a seguinte definição:

 

"Um ob_start() irá pegar todos os dados de saída e guardar em buffer. Os dados só serão enviados ao navegador no momento em que você encerrar o buffer."

 

Sendo assim, os dados de saída somente serão enviados quando você fizer um ob_end_flush(); ou um ob_flush(); (Com a diferença que o primeiro envia os dados de saída e encerra o buffering e o segundo envia os dados de saída e esvazia o buffer,mas não encerra o buffering)

 

Porém não vejo o porque da utilização desse comando (ob_start(); ) visto que ele não é necessário para a manipulação de uma session.

 

 

Aliás, o que vem depois do else do arquivo home.php ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal sou iniciante e tenho muitas duvidas ainda,

mais minha chamada esta assim,

 

Banco de dados se chama = usuario

Tabela se chama = usuario

os campos da tabela sao = id, email, senha

 

os campos do meu formulario são = email, senha

 

e meu select esta assim?

podem me ajudar!

mysql_select_db($database_usuario, $usuario);
$query_usuario = "SELECT * FROM usuario";
$usuario = mysql_query($query_usuario, $usuario) or die(mysql_error());
$row_usuario = mysql_fetch_assoc($usuario);
$totalRows_usuario = mysql_num_rows($usuario);

Amigo, sou iniciante,tenho pouca experiencia,

esse codeu peguei pronto, e pouco que entendi fui montando

no meu projeto!

 

ok vamos la!

 

primeiro retirei a variavel $usuario pois como você citou qualquer coisa que eu digitava estava logando!

 

segundo corrigi o comparador condicional o "AND" e sim "&&"

 

terceiro acrescentei o ob_end_flush();

 

quartodepois do else da home vem

 

Nome:         <?php echo $_SESSION["email"] ?>
<?php
  } //fecha o else
  
?> 

agora vou testar, e posto meus resultados! Obg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente só pegue os dados do banco que você for utilizar, se você só usa email e senha para logar o usuário, então faça o select do banco apenas com esses campos.

 

Outra coisa é que seria melhor criar uma função que executasse a conexão com o banco de dados, não ficar fazendo ela em todos os arquivos do seu sistema.

 

tipo:

 

function dbconnect() {
    // Abaixo mude o localhost para o nome/ip do seu servidor, "root" para o nome do usuario do banco de dados e "senha" pela senha do banco de dados.
    $connection = mysql_connect( "localhost", "root", "senha" ) or die ("Falha de Conexão ao Banco de Dados");
    mysql_select_db("banco");  // mude banco para o nome do seu banco de dados

    return $connection;
  }

Aí nos arquivos do seu sistema apenas execute:

 

dbconnect();

o resto ficaria mais ou menos assim:

 

$query_usuario = "SELECT email,senha FROM usuario";
$usuario = mysql_query($query_usuario) or die(mysql_error());
$row_usuario = mysql_fetch_assoc($usuario);
$totalRows_usuario = mysql_num_rows($usuario);

Qualquer coisa só falar :D

 

primeiramente não exibirá nada, pois falta um ponto e virgula na linha:

 

Nome:<?php
echo $_SESSION["email"] //Aqui falta um ponto e virgula no final ficando "echo $_SESSION["email"];" (Sem aspas)
 ?> // Outra coisa, não precisa fechar e abrir a tag php novamente aqui, tire o "?>" nessa linha e o "<?php" na proxima :)
<?php  } //fecha o else  
?>

E sobre o login, você mesmo tirando a variável que eu disse, não está logando conforme os dados do banco.Além do mais, o comando ob_start(); não necessita de ser utilizado, tire ele e o ob_end_flush(); , pois você não precisa manipular os dados do buffer manualmente, que é o que ele faz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta logando td certinho, porem eu entro com o

usuario = teste1 e

usuario= teste2 e o sistema busca sempre o mesmo usuario, independente do login!

 

o codigo esta assim

mysql_select_db($database_usuario, $usuario);
$query_Recordset1 = "SELECT email,senha FROM usuario ";
$Recordset1 = mysql_query($query_Recordset1, $usuario) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

Eu nào teria que acrescentar a $_SESSION a minha chamada?

como fazer isto?

obg!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, teria...é que eu pensei que você queria saber apenas da consulta...bem...ficaria mais ou menos assim:

 

mysql_select_db($database_usuario, $usuario);
$query_Recordset1 = "SELECT email,senha FROM usuario WHERE id=".$_SESSION['id_usuario'];
$Recordset1 = mysql_query($query_Recordset1, $usuario) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

O exemplo está feito como o login sendo o id da tabela usuario, caso seja o email mude a session para email (claro que pegando o email no $_post do textbox que o usuario digitar, é aquele comando do seu outro tópico) e mude também o campo depois do "WHERE" para "email=".$_SESSION['email']; por exemplo.

 

$_SESSION['id_usuario']=$_POST['id']; /* Se tiver um campo id na página aonde o usuario digita seus dados,
 caso contrário use o email como o login mudando o nome do post e da session (para evitar conflitos depois)*/.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok pessoal as duvidas eram praticamente as mesmas, só que a forma como eram feitas eram diferentes...

mais voltando ao q me explicava cristiadu, fiz o cod e deu erro na linha 35, vou postatr o cod do login e da pagina usuario para voce dar uma olhada e me dizer onde estou errando,

muito obrigado desde de ja!

 

pag login.php

 

<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['email'])) {
  $loginUsername=$_POST['email'];
  $password=$_POST['senha'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "usuario.php";
  $MM_redirectLoginFailed = "login.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_usuario, $usuario);
  
  $LoginRS__query=sprintf("SELECT email, senha FROM usuario WHERE email=%s AND senha=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $usuario) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>

pag usuario.php

 

<?php


mysql_select_db($database_usuario, $usuario);
$query_Recordset1 = "SELECT email,senha FROM usuario WHERE email=".$_SESSION['email']";
$Recordset1 = mysql_query($query_Recordset1, $usuario) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º tire as aspas duplas depois de $_SESSION['email'] na página usuario.php

2º Eu aconselho não usar variáveis com esses nomes citados acima, confundem.

3º Isto:

 

$LoginRS__query=sprintf("SELECT email, senha FROM usuario WHERE email=%s AND senha=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

se resumiria facilmente nisso:

 

$LoginRS__query="SELECT email, senha FROM usuario WHERE email='$loginUsername' AND senha='%password'";

4º pra que serve esse $loginStrGroup = ""; ??

 

 

Vê aí como fica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tirei as aspas duplas como você falou, outro erro apareceu..

 

Notice: Undefined index: email in C:\Program Files\EasyPHP5.3.0\www\hoje\usuario.php on line 35

Você tem um erro de sintaxe no seu SQL próximo a '' na linha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
mysql_select_db($database_usuario, $usuario);
$query_Recordset1 = "SELECT email,senha FROM usuario WHERE email='".$_SESSION['email']."'";
$Recordset1 = mysql_query($query_Recordset1, $usuario) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>

tenta isso na pag usuarios.php

 

e outra coisa, o campo na tabela usuario chama-se "email" (Sem aspas) mesmo né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

lendo um pouco do cod percebi algumas coisas...

na pag login email=MM_Username

 

entao minha linha da pagina usuario que era assim

 

$query_Recordset1 = "SELECT email,senha FROM usuario WHERE email=".$_SESSION['email'];

ficou assim

 

$query_Recordset1 = "SELECT email,senha FROM usuario WHERE email=".$_SESSION['MM_Username'];

o resultado que aparece na hr de vizualizar é esse

 

Busca o nome de usuario correto mais aparece a seguinte msg

 

Coluna 'usuario3' desconhecida em 'where clause'

 

como corrigir isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o que eu tinha feito ali encima...com o pequeno detalhe de que não vi que sua session tinha esse nome e não somente 'email'

 

coloque:

 

<?php
mysql_select_db($database_usuario, $usuario);
$query_Recordset1 = "SELECT email,senha FROM usuario WHERE email='".$_SESSION['MM_Username']."'";
$Recordset1 = mysql_query($query_Recordset1, $usuario) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

cristiadu, esta dando erro na pag,

Coluna 'email@hotmail.com' desconhecida em 'where clause'

 

esse email é o que eu faço o login, porem esse erro esta especificando q

a coluna

 

email = email@hotmail.com não existe, ele esta transformando minha coluna email

em email@hotmail.com

 

meu cod esta assim!

 

<?php

mysql_select_db($database_usuario, $usuario);
$query_Recordset1 = "SELECT * FROM usuario WHERE email=".$_SESSION['MM_Username'];
$Recordset1 = mysql_query($query_Recordset1, $usuario) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

?>

aguardo uma possivel solução obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu mostrei a solução pra você no post de cima...

 

substitua:

 

$query_Recordset1 = "SELECT * FROM usuario WHERE email=".$_SESSION['MM_Username'];

por:

 

$query_Recordset1 = "SELECT email,senha FROM usuario WHERE email='".$_SESSION['MM_Username']."'";

Sim...o problema aparece por causa das aspas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...eu nem sei se sua verificação tem algo pra ver se o usuario está realmente no banco de dados, ou se a senha está correta...pra mim você nem tá fazendo login.

 

se você verificar se o $totalRows_Recordset1 é igual a 1 e se a senha digitada é igual a senha que foi tirada na consulta do banco, aí sim teremos algo simples, mas um sistema de login.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim meu sistema tem sim verificação de email e senha cadastrados no BD

caso o email e a senha estejam incorretos, ele retorta para a pag login, evisando do erro!

e se a pessoa tentar entrar na pag usuario apenas digitando na barra de endereço, sem estar logado

ele é redirecionado a pag de login, a pag usuario.php é restrita para quem não esta logado!

 

Cara muito obrigado pela força, atrves deste post consegui aprender muito mais do que eu esperava!

 

Até mais..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.