Jump to content
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.

Share this post


Link to post
Share on other 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")
	}
}

?>

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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)) {

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By unset
      Olá, alguém poderia me dar uma luz.
       
      Como faço para ordenar strings que começam com números, exemplo
       
      Tenho uma lista de artigos e os nomes são como abaixo.
       
      1 - NOME DO ARQUIVO 1
      2 - NOME DO ARQUIVO 2
      etc....
      10 - NOME DO ARQUIVO 10
       
      Não consegui ordenar no SELECT com o ORDER BY nome DESC pq o número 10 fica abaixo do 1
       
      Como fazer assim, 1,2,3,4,5....... 10,11,12 .... 100, 101,102 etc...
    • By Rodrigo5468
      Olá a todos(as), boa tarde!
       
      Tenho uma Query e um pequeno código em PHP para mostrar os resultados em uma tabela, mas estão repetindo os resultados da Query. Gostaria de uma solução, ou uma gambiarra para isso.
      Query
      SELECT DISTINCT b.ID AS "ID", b.Character AS "Personagem", b.Money AS "DinMao", b.BankMoney AS "DinBanco", b.Savings2 AS "DinPoupa", c.houseOwner AS "IDono", SUM(c.houseMoney) AS "DinCasa" FROM characters b INNER JOIN houses c ON (b.ID = c.houseOwner) ORDER BY ((b.Money+b.BankMoney+b.Savings2+c.houseMoney)) DESC LIMIT 0, 1000 PHP
      if(mysqli_num_rows($q) > 0) { while($r = $q->fetch_assoc()) { //Código da Tabela } }  
      Observação:
      Quando eu removo a seguinte parte da minha Query que é: SUM(c.houseMoney) AS "DinCasa" e deixo assim: c.houseMoney AS "DinCasa"
      Os dados da minha tabela repetem, não sei o motivo e/ou a circunstância disso. Mas peço a ajuda de vocês para solucionar. Vale ressaltar que (ID e houseOwner) tem os mesmos valores, só o valor da casa que recebe o valor do ID, e ele pode ter quantas casa ele quiser, e se ele tiver cinco casas, mostrará o resultado cinco resultados na minha tabela, como posso resolver isso?
       
       
      Meu muito obrigado desde já.
    • By guilhermefdavid
      Olá,
      tenho uma aplicação PHP com algumas funções que não estão funcionando na hospedagem.
      Esta aplicação utiliza apenas conexão com banco de dados -> mysql_connect, mysql_select_db, entre outras de MYSQL.
      Alguma ideia de qual extensão, dentre as existentes na imagem anexa deveria(m) estar ativada(s)?
       
      Um abraço!

    • By jganjos
      Boa tarde senhores.
      Estou gerando esta array com o PHP
       
      Array ( [header] => Array ( [ico] => fas fa-building [tit] => Empresa [lab] => Cadastro da Empresa ) [forms] => Array ( [RAZAO] => Array ( [tit] => Razão Social ) [NFANTASIA] => Array ( [tit] => Nome Fantasia [lin] => 1 [col] => 10 ) [STATUS] => Array ( [tit] => Status [typ] => switch [val] => 1,0 [lin] => 1 [col] => 2 ) [INSCRICAO] => Array ( [tit] => Inscrição [lin] => 2 [col] => 4 ) [IE] => Array ( [tit] => Insc. Estadual [lin] => 2 [col] => 4 ) [IM] => Array ( [tit] => Insc. Municipal [lin] => 2 [col] => 4 ) [CEP] => Array ( [tit] => CEP [lin] => 3 [col] => 4 [btn] => search ) [TIPO_END] => Array ( [typ] => hidden ) [ENDERECO] => Array ( [tit] => Endereço [lin] => 4 [col] => 9 ) [NUM_END] => Array ( [tit] => Número [lin] => 4 [col] => 3 ) [BAIRRO] => Array ( [tit] => Bairro [lin] => 5 [col] => 6 ) [COMPL] => Array ( [tit] => Complemento [lin] => 5 [col] => 6 ) [MUNICIPIO] => Array ( [tit] => Município [lin] => 6 [col] => 9 ) [UF] => Array ( [tit] => Estado [typ] => list [tab] => estados [lin] => 6 [col] => 3 ) [TEL1] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [TEL2] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [EMAIL] => Array ( [tit] => e-mail [typ] => email [lin] => 8 [col] => 6 ) [SITE] => Array ( [tit] => Site da empresa [typ] => website [lin] => 8 [col] => 6 ) ) ) Preciso listar os valores da Array *FORMS* e seus respectivos filhos mas não estou conseguindo utilizando o foreach.
      Alguém teria uma dica?
    • By helkton
      galera preciso criar um array que pegue os itens adicionais de cada ITEM  escolhido...
      vou tentar explicar...
      tenho uma pagina com as categorias do CARDÁPIO
      LANCHES - AÇAI - SALGADOS - PIZZAS
      CADA categoria contem seus devidos itens tipo...
      LANCHES 1-xFrango 2-xSalada 3-xBacon AÇAI 1-Copo 300ml 2-Copo 500ml 3-Copo 700ml até esta funcionando, cada item que o usuário escolher, salvo em uma S_SESSION['itens'] 
      agora vamos supor que, esses itens tenham adicionais, já criei um <?php if(){}?> e ele já faz essa verificação, então se o item LANCHES 1=XFRANGO NÃO conter adicional para ser escolhido ele simplesmente irá ser adicionado no carrinho, AGORA se o item tiver adicional para ser escolhido, irá abrir um MODAL com os adicionais disponíveis para o ITEM
      Agora digamos que o AÇAÍ) 1-COPO 300ML tenha adicional eu abro o meu modal com os seguintes adicionais:
      FRUTAS 1-Morango 1,00 2-Banana 1,00 3-Uva 1,00 COMPLEMENTOS 1-Ninho 1,00 2-Coco Ralado 1,00 3-Castanha 1,00 COBERTURA 1-Chocolate 1,00 2-Leite condensado 1,00 3-Morango 1,00 ADICIONAIS 1-Nutella 1,00 2-Bis 1,00 3-KitKat 1,00 então como pego esses adicionais e salvo em cada ITEM escolhido pelo usuário e se possivel somar esses adicionais que tenha valores também
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.