Ir para conteúdo
wandoh

Select dados do usuário

Recommended Posts

Boa Tarde! estou com um dificuldades de puxar os dados do usuário logado no site. Atualmente estou conseguindo puxar somente o NOME, quando tento puxar o restante da erro! Abaixo segue o Código.

 

session_start();
//inicializa variaveis
$id = "accountid";
$name = "";
$email = "";
$errors = array();

//conexão db
$db = mysqli_connect('localhost', 'root', 'senha', 'db') or die("could not connect to database");

//Registrar usuário
if (isset($_POST['reg_user'])) {
  // receives all input values from the form
    $name = mysqli_real_escape_string($db, $_POST['name']);
    $email = mysqli_real_escape_string($db, $_POST['email']);
    $password = mysqli_real_escape_string($db, $_POST['password']);
    $password2 = mysqli_real_escape_string($db, $_POST['password2']);

//form validação: ensure that the form is correctly filled ...
// by adding (array_push)) corresponding error unto $errors array
    if(empty($name)) { array_push($errors, "
        ");
  }
    if(empty($email)) { array_push($errors, "
        ");
  }
    if(empty($pwd)) { array_push($errors, "
        ");
  }
    if($pwd != $pw2) { array_push($errors, "
        ");
  }
    

// To protect MySQL injection (more detail about MySQL injection)
$name = stripslashes($name);
$password = stripslashes($password);
// first check the databese to make sure
// verifica na db se a usuário existente com o mesmo nome de usuário e email
$user_check_query = "SELECT * FROM t_account WHERE name='$name' or email='$email' LIMIT 1";
$result = mysqli_query($db, $user_check_query);
$user = mysqli_fetch_assoc($result);

if($user) { // if user existente
     if ($user['name'] === $name) {
      array_push($errors, "
        ");
     }
     if ($user['email'] === $email) {
      array_push($errors, "
        ");
     }
}
// Registra o usuário se não haver erros
if (count($errors) == 0 ) { 
     $pwd = md5($pwd);
     print $pwd;
     $query = "INSERT INTO t_account (name, email, pwd, pw2) VALUES ('$name', '$email', '$password', '$password2')";
     mysqli_query($db, $query);
     $_SESSION['accountid'] = $id;//
     $_SESSION['name'] = $name;
     $_SESSION['success'] = 'Você está logado em';
     echo "
        ";
     //header('location: index.php');
 }
}
//LOGIN USER
if (isset($_POST['login_user'])) {

  $name = mysqli_real_escape_string($db, $_POST['name']);
  $password = mysqli_real_escape_string($db, $_POST['password']);

  if (empty($name)) {

    array_push($errors, "
        ");
  }
  if (empty($password)) {

    array_push($errors, "
        ");
  }
  if (count($errors) == 0 ) {

    $pwd = md5($pwd);

    $query = "SELECT 'email' FROM t_account WHERE name='$name' AND password='$password'";
    $results = mysqli_query($db, $query);

  if (mysqli_num_rows($results)) {
    $_SESSION['accountid'] = $id;//
   $_SESSION['name'] = $name;
   $_SESSION['success'] = 'Você está logado em';
     echo "
        ";
     //header('location: index.php');
  }else{
      array_push($errors, "
        ");
   }

    }
    
}

Com a variável abaixo, é exibido o nome de quem esta logado.

$_SESSION["name"]

Já com os demais, não e exibido o resultado é apresentado uma msg de erro.

$_SESSION["email"]
Notice: Undefined index: email in 

Passei em todos os post que tem sobre o assunto, mas infelizmente em meu código não deu certo.

 Sou novo em PHP!

Preciso puxar todos os dados cadastrado do usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites
23 horas atrás, wandoh disse:

Boa Tarde! estou com um dificuldades de puxar os dados do usuário logado no site. Atualmente estou conseguindo puxar somente o NOME, quando tento puxar o restante da erro! Abaixo segue o Código.

 


session_start();
//inicializa variaveis
$id = "accountid";
$name = "";
$email = "";
$errors = array();

//conexão db
$db = mysqli_connect('localhost', 'root', 'senha', 'db') or die("could not connect to database");

//Registrar usuário
if (isset($_POST['reg_user'])) {
  // receives all input values from the form
    $name = mysqli_real_escape_string($db, $_POST['name']);
    $email = mysqli_real_escape_string($db, $_POST['email']);
    $password = mysqli_real_escape_string($db, $_POST['password']);
    $password2 = mysqli_real_escape_string($db, $_POST['password2']);

//form validação: ensure that the form is correctly filled ...
// by adding (array_push)) corresponding error unto $errors array
    if(empty($name)) { array_push($errors, "
        ");
  }
    if(empty($email)) { array_push($errors, "
        ");
  }
    if(empty($pwd)) { array_push($errors, "
        ");
  }
    if($pwd != $pw2) { array_push($errors, "
        ");
  }
    

// To protect MySQL injection (more detail about MySQL injection)
$name = stripslashes($name);
$password = stripslashes($password);
// first check the databese to make sure
// verifica na db se a usuário existente com o mesmo nome de usuário e email
$user_check_query = "SELECT * FROM t_account WHERE name='$name' or email='$email' LIMIT 1";
$result = mysqli_query($db, $user_check_query);
$user = mysqli_fetch_assoc($result);

if($user) { // if user existente
     if ($user['name'] === $name) {
      array_push($errors, "
        ");
     }
     if ($user['email'] === $email) {
      array_push($errors, "
        ");
     }
}
// Registra o usuário se não haver erros
if (count($errors) == 0 ) { 
     $pwd = md5($pwd);
     print $pwd;
     $query = "INSERT INTO t_account (name, email, pwd, pw2) VALUES ('$name', '$email', '$password', '$password2')";
     mysqli_query($db, $query);
     $_SESSION['accountid'] = $id;//
     $_SESSION['name'] = $name;
     $_SESSION['success'] = 'Você está logado em';
     echo "
        ";
     //header('location: index.php');
 }
}
//LOGIN USER
if (isset($_POST['login_user'])) {

  $name = mysqli_real_escape_string($db, $_POST['name']);
  $password = mysqli_real_escape_string($db, $_POST['password']);

  if (empty($name)) {

    array_push($errors, "
        ");
  }
  if (empty($password)) {

    array_push($errors, "
        ");
  }
  if (count($errors) == 0 ) {

    $pwd = md5($pwd);

    $query = "SELECT 'email' FROM t_account WHERE name='$name' AND password='$password'";
    $results = mysqli_query($db, $query);

  if (mysqli_num_rows($results)) {
    $_SESSION['accountid'] = $id;//
   $_SESSION['name'] = $name;
   $_SESSION['success'] = 'Você está logado em';
     echo "
        ";
     //header('location: index.php');
  }else{
      array_push($errors, "
        ");
   }

    }
    
}

Com a variável abaixo, é exibido o nome de quem esta logado.


$_SESSION["name"]

Já com os demais, não e exibido o resultado é apresentado uma msg de erro.


$_SESSION["email"]

Notice: Undefined index: email in 

Passei em todos os post que tem sobre o assunto, mas infelizmente em meu código não deu certo.

 Sou novo em PHP!

Preciso puxar todos os dados cadastrado do usuário.

Visualizando seu codígo pude perceber que você não declarou a variavel $_SESSION["email"], por isso o PHP está te informando Notice: undefined index: email in -> Notice: variavel não foi definida.

 

Se você quer trazer todos os dados do banco de dados de um utiliza a função mysqli_fetch_assoc, desse jeito:

<?php

while ($linha = mysqli_fetch_assoc($result)) {
  $_SESSION['email'] = $linha['email'];
}

?>

Exemplo de como fazer uma consulta no banco de dados

<?php
session_start();
/**
  *@param $login, $senha -> Variaveis que armazena o login e a senha do usuário.
  *@param $conexao -> Armazena a conexão do banco de dados.
  *@param $resultado -> Armazena o resultado da função mysql_query para poder utiliza-lo no mysqli_num_rows ou mysqli_fetch_assoc.
  *@param mysqli_connect -> Conecta no banco  de dados.
  *@param mysqli_query -> Executa codígo SQL para fazer a consulta.
  *@param mysqli_num_rows -> Retorna o número de linhas afetadas (Se foi possivel encontrar o usuario e a senha no banco retorna TRUE, caso não foi possivel encontrar função retorna FALSE.
  *@param mysqli_fetch_assoc -> Retorna um array com todos os dados que o mysqli_query retornou.
*/
$login =  $_POST['txtLogin'];
$senha = $_POST['txtSenha'];

$conexao = mysqli_connect("lcoalhost", "root", "", "DATABASE");
$resultado = mysqli_query($conexao, "SELECT * FROM TABELA_USUARIO WHERE login = '$login' AND senha = '$senha'");

if (mysqli_num_rows($resultado)) {
	//Usuário e Senha estão cadastrados no banco de dados
	while($linha = mysqli_fetch_assoc($resultado)){
      	//Armazena o nome do usuário em uma sessão para poder chama-lá em qualquer página PHP
        $_SESSION['id'] = $linha['id'];
		$_SESSION['nome'] = $linha['nome'];
       	$_SESSION['email'] = $linha['email'];
       	$_SESSION['logged'] = "Logado com successo";
      	//Exibe todos os dados obtidos no SELECT da função mysqli_fetch_assoc()
      	var_dump($linha);
     	//Caso queira redirecionar para pagína de login descomente o header abaixo
      	//header("Location: logado.php")
	}
}

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@wandoh

 

Fera é o seguinte, para que você possa DECLARAR uma variável em uma página e possa utilizar em outra página você precisa declarar as variáveis de SESSÃO, o que pelo visto você está fazendo certo.

 

SESSION_START();

$_SESSION['nome'] = "NOME";

 

Porem ao verificar o seu código não vi em nenhum momento você realizar o SELECT na base de dados para obter os dados do seu usuário e em seguida alimentar a "suposta" variável de sessão do e-mail em questão para que você possa utilizar em outra página.

 

Então explicando.

 

Você disse que o "NOME" você consegui exibir, certo? Isso porque você está alimentando a variável $_SESSION['nome'] aqui:

 

if (mysqli_num_rows($results)) {

$_SESSION['accountid'] = $id;//

$_SESSION['name'] = $name;

$_SESSION['success'] = 'Você está logado em';

echo " ";

 

Então em qualquer lugar que você queira exibir o nome deste usuário basta colocar

<?php
SESSTION_START();
echo $_SESSION['nome'];
?>

Você deve fazer o mesmo para o E-MAIL, você precisa fazer um SELECT na BASE DE DADOS e em seguida colocar o resultado obtido em uma variável de sessão.

 

Experimente fazer isso:

<?php
//Aqui você declara o select e os dados que quer obter, no exemplo temos o e-mail.
$query = "SELECT 'email' FROM t_account WHERE name='$name' AND password='$password'";

//Este comando executa o acesso ao banco de dados e obtem
//o campo em questão e joga dentro da variável
$results = mysqli_query($db, $query);

//Se o resultado trouxer um valor ele entra no IF.
if ($resultset = mysqli_fetch_assoc($db, $results)) {

//Vamos criar aqui a sua variável de SESSÃO do E-MAIL.
    $_SESSION['email'] = $resultset['email'];

//Vamos exibir este valor na tela.
    echo $_SESSION['email'];
}
?>

Bom, a lógica é essa, não testei o código, mas caso de algum erro na tela mostre aqui o código do erro para uma melhor analise.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, Felipe Guedes Coutinho disse:

@wandoh

 

Fera é o seguinte, para que você possa DECLARAR uma variável em uma página e possa utilizar em outra página você precisa declarar as variáveis de SESSÃO, o que pelo visto você está fazendo certo.

 

SESSION_START();

$_SESSION['nome'] = "NOME";

 

Porem ao verificar o seu código não vi em nenhum momento você realizar o SELECT na base de dados para obter os dados do seu usuário e em seguida alimentar a "suposta" variável de sessão do e-mail em questão para que você possa utilizar em outra página.

 

Então explicando.

 

Você disse que o "NOME" você consegui exibir, certo? Isso porque você está alimentando a variável $_SESSION['nome'] aqui:

 

if (mysqli_num_rows($results)) {

$_SESSION['accountid'] = $id;//


$_SESSION['name'] = $name;

$_SESSION['success'] = 'Você está logado em';

echo " ";

 

Então em qualquer lugar que você queira exibir o nome deste usuário basta colocar


<?php
SESSTION_START();
echo $_SESSION['nome'];
?>

Você deve fazer o mesmo para o E-MAIL, você precisa fazer um SELECT na BASE DE DADOS e em seguida colocar o resultado obtido em uma variável de sessão.

 

Experimente fazer isso:


<?php
//Aqui você declara o select e os dados que quer obter, no exemplo temos o e-mail.
$query = "SELECT 'email' FROM t_account WHERE name='$name' AND password='$password'";

//Este comando executa o acesso ao banco de dados e obtem
//o campo em questão e joga dentro da variável
$results = mysqli_query($db, $query);

//Se o resultado trouxer um valor ele entra no IF.
if ($resultset = mysqli_fetch_assoc($db, $results)) {

//Vamos criar aqui a sua variável de SESSÃO do E-MAIL.
    $_SESSION['email'] = $resultset['email'];

//Vamos exibir este valor na tela.
    echo $_SESSION['email'];
}
?>

Bom, a lógica é essa, não testei o código, mas caso de algum erro na tela mostre aqui o código do erro para uma melhor analise.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Notice: Undefined variable: pwd
Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in

Apresenta esses 2 erros quando eu utilizo assim

//Aqui você declara o select e os dados que quer obter, no exemplo temos o e-mail.
$query = "SELECT 'email' FROM t_account WHERE name='$name' AND pwd='$pwd'";

//Este comando executa o acesso ao banco de dados e obtem
//o campo em questão e joga dentro da variável
$results = mysqli_query($db, $query);

//Se o resultado trouxer um valor ele entra no IF.
if ($resultset = mysqli_fetch_assoc($db, $results)) {

//Vamos criar aqui a sua variável de SESSÃO do E-MAIL.
    $_SESSION['email'] = $resultset['email'];

//Vamos exibir este valor na tela.
    echo $_SESSION['email'];
}

Se eu adicionar dentro do meu código quando tento visualizar não apresenta nada .

Uma duvida nessa parte tem $db, ou devo retirar pois já existe no 

$results = mysqli_query($db, $query);
if ($resultset = mysqli_fetch_assoc($db, $results)) {

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@wandoh

 

O primeiro erro está dizendo que:

"Notificação: Variável indefinida: pwd".

Notice: Undefined variable: pwd

Ou seja, você esta usando uma variável no seu site que não foi DECLARADA, ou seja:

$pwd = "Qualquer coisa para definir a variável";

 

O outro erro é a própria sintaxe do mysqli_fetch_assoc(); você pode pesquisar na internet, mas o erro diz:

"Aviso: mysqli_fetch_assoc() expera exato 1 parametro, 2 foram dados."

Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in

Ou seja, existem 2 parametros sendo passados dentro do ( ), acredito que você removendo o $db deve funcionar.

Sobre este comando eu recomendo você a ler o

Manual do Desenvolvedor PHP --> AQUI - Comando MySQLi_Fetch_Assoc() .

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 18/10/2019 at 10:04, Felipe Guedes Coutinho disse:

@wandoh

 

O primeiro erro está dizendo que "Notificação: Variável indefinida: pwd".


Notice: Undefined variable: pwd

Ou seja, você esta usando uma variável no sei site que não esta sendo DECLARADA, ou seja:

 

$pwd = "Qualquer coisa para definir a variável";

 

O outro erro é a própria sintaxe do mysqli_fetch_assoc(); você pode pesquisar na internet, mas o erro diz:

 

"Aviso: mysqli_fetch_assoc() expera exato 1 parametro, 2 foram dados.


Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in

Ou seja, existem 2 parametros sendo passados dentro das (), acredito que você recomendo o $db deve funcionar.

Sobre este comendo eu recomendo você a ler o Manual do Desenvolvedor PHP AQUI - Comando MySQLi_Fetch_Assoc()

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Obrigado por responder minhas duvidas! Depois de muitas tentativas consegui resolver meu problema adicionando uma parte do código em que o Hállex da Silva Costa mencionou para mim.

if (mysqli_num_rows($results)) {
      //Usuário e Senha estão cadastrados no banco de dados
      while($exibir = mysqli_fetch_assoc($results)){
        //Armazena o nome do usuário em uma sessão para poder chama-lá em qualquer página PHP
        $_SESSION['id'] = $exibir['accid'];
        $_SESSION['nome'] = $exibir['name'];
        $_SESSION['email'] = $exibir['email'];

        //Exibe todos os dados obtidos no SELECT da função mysqli_fetch_assoc()
        //var_dump($linha);
    } 
   }

Como eu disse no primeiro post, sou iniciante em PHP. Não desisto do que eu quero. Tento de todas as formas resolver os obstáculos que aparecem! Mais uma vez obrigado Hállex da Silva Costa e Felipe Guedes Coutinho por me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 21/10/2019 at 15:37, Felipe Guedes Coutinho disse:

@wandoh

 

Que bom que funcionou, não desista e se estiver com dúvidas poste que sempre tem alguém para lhe ajudar.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Mais uma vez obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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