Ir ao conteúdo
  • Cadastre-se

PHP mostrar o nome que esta no banco de dados


Posts recomendados

eu queria colocar o nome da pessoa que esta la no banco de dados na frente do ola,por exemplo:  ola, xxxx!!!

 

<!doctype html>
<html lang="en" data-bs-theme="auto">
  <head>
      <script src="../assets/js/color-modes.js">
    </script>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Hugo 0.118.2">
    <title>Dashboard</title>

    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</head>
<body>
     <nav class="navbar navbar-light bg-light">
         <div class="container-fluid">
         
         <a class="navbar-brand">Império Verde</a>
         <?php
               print "olá ";
               print "<a href='logout.php' class='btn btn-danger'>Sair</a>";
         ?>
         
         </div>
     </nav>

</body>
</html>

 

image.png

Link para o comentário
Compartilhar em outros sites

@Duncan não tá funcionando

 

method de login:

 

<?php
//Inicia a session
session_start();
	
$_SESSION['user']=$userDataRetrievedFromDatabase;

    //Recebe os dados do formulário 
	$login = $_POST["email"];
	$senha = $_POST["senha"];

    //adiciona barras, para evitar sql injection
	$login_escape = addslashes($login);
	$senha_escape = addslashes($senha);
	
	//testa se o login e a senha estão vazios
	if (empty($login) or empty($senha)){
        echo "<script>
              alert('Preencha todos os campos');
              history.go(-1);
              </script>";
        exit;    
      }
	
	//abre a conexão com banco de dados
	include_once 'conexao.php';
	
    //Faz a consulta na tabela de usuarios para pegar os dados necessários
	$sql = "SELECT id, email, senha FROM cadastros WHERE email ='$login_escape' AND senha = '$senha_escape' ";

	$dados = mysqli_query($conexao, $sql);
	$num = mysqli_num_rows($dados);
	
    //testa se existe na tabela.
	if ($num == 0){
		echo "<script>
				alert('Usuario ou senha Incorreta');
				history.go(-1);
			  </script>";
		exit;
	} else {
		
        // enquanto existir, pega os dados e armazena em variável em forma de objeto
		while($user = mysqli_fetch_object($dados)){
          
            //armazena o id do usuário em uma variável, em forma de objeto
			$idUsuario = $user->id;
		
            //cria a session com o id do usuário e session com o nome de usuario 
		    $_SESSION["idUsuario"] = $idUsuario;
		    $_SESSION["login"] = $login;
		
          //Redireciona para a página da dashboard
		header ("Location: dashboard.php");
		}	
	}
	// mysql_free_result($dados);
 	 mysqli_close($conecta);
?>

 

dashboard:

 

<!doctype html>
<html lang="en" data-bs-theme="auto">
  <head>
      <script src="../assets/js/color-modes.js">
    </script>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Hugo 0.118.2">
    <title>Dashboard</title>

    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</head>
<body>
     <nav class="navbar navbar-light bg-light">
         <div class="container-fluid">
         
         <a class="navbar-brand">Império Verde</a>
         <?php
               print "olá {$_SESSION['user']->nome}!";
               print "<a href='logout.php' class='btn btn-danger'>Sair</a>";
         ?>
         
         </div>
     </nav>

</body>
</html>

 

Link para o comentário
Compartilhar em outros sites

app/connection.php
 

<?php

// define a exibição de erros
// REMOVA/COMENTE ESSA LINHA QUANDO ENVIAR PARA PRODUÇÃO
error_reporting(E_ALL);

//inicia a sessão
session_start();

// defina as variáveis de conexão
$config = [
  'db_host' => 'localhost',
  'db_user' => 'root',
  'db_pass' => 'my-secret-pw',
  'db_name' => 'my-database',
];

// tenta estabelecer conexão:
try {
  $sqli = new mysqli($config['db_host'], $config['db_user'], $config['db_pass']);
} catch(Exception $e) {
  // se não conseguir estabelecer conexão, exibe erro
  exit('<p><b>Falha na conexão com o mysql</b>: '.$e->getMessage().'</p>');
}

// tenta definir o padrão de caracteres
if (!$sqli->set_charset('utf8')) {
  // se não conseguir definir o padrão de caracteres, exibe o padrão disponível
  exit("<p class='text-danger'>Seu charset não é utf8, chefe!<br>$sqli->character_set_name()</p>");
}

// tenta selecionar/abrir o banco de dados para trabalhar
if (!$sqli->select_db($config['db_name'])) {
  // se o banco de dados não for encontrado:
  exit("<p class='text-danger'>Banco de dados não encontrado, chefe!</p>");
}

return $sqli;

public_html/index.php
 

<?php
session_start();
if(!isset($_SESSION['user'])) {
  header('Location: login.php');
}
?>
<!doctype html>
<html lang="en" data-bs-theme="auto">

<head>

  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="">
  <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
  <meta name="generator" content="Hugo 0.118.2">
  <title>Dashboard</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>

<body>
  <nav class="navbar navbar-light bg-light">
    <div class="container-fluid">

      <a class="navbar-brand">Império Verde</a>
      <?php
      echo "olá {$_SESSION['user']->name}!"
        ."<a href='logout.php' class='btn btn-danger'>Sair</a>";
?>

    </div>
  </nav>
  <script src="assets/js/color-modes.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>

</html>

public_html/login.php
 

<?php

// define errors vazio
$errors = [];
$login  = $password = '';
// conexão com o database
$sqli = require '../app/connection.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

  // recebe os dados do formulário
  $login    = filter_input(INPUT_POST, 'email');
  $password = filter_input(INPUT_POST, 'password');

  // valida o login
  if (empty($login)) {
    $errors['email'] = 'O campo de email deve ser preenchido.';
  }

  // valida a senha
  if (empty($password)) {
    $errors['password'] = 'O campo de senha deve ser preenchido.';
  }

  // se não houver erro de input
  if (!count($errors)) {

    // escapa as strings para evitar sql injection
    $login_escaped = $sqli->real_escape_string($login);

    // use prepared statement pra evitar injections
    $stmt = $sqli->prepare('SELECT id, email, name, password FROM cadastros WHERE email = ?');

    // executa a consulta
    $stmt->bind_param('s', $login_escaped);
    $stmt->execute();

    $result = $stmt->get_result();

    // se nenhum user foi encontrao
    if (!$result->num_rows) {
      $errors['password'] = 'Usuário ou senha incorreta.';
    }

    // guarda o resultado da busca em $user
    $user = $result->fetch_object();

    // verifica se a senha está correta
    if ($user && !password_verify($password, $user->password)) {
      $errors['password'] = 'Usuário ou senha incorreta.';
    }

    // se não há erros de database
    if (!count($errors)) {
      // guarda o user na sessão
      $_SESSION['user'] = $user;
      // volta para o index
      header('Location: ./');
      exit();
    }
  }
}
?>
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Login</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
  <link rel="stylesheet" href="assets/css/style.css">
</head>

<body class="d-flex align-items-center py-4 bg-body-tertiary">
  <main class="form-signin w-100 m-auto">
    <form method='post'>
      <img class="mb-4" src="https://getbootstrap.com/docs/5.3/assets/brand/bootstrap-logo.svg" alt="" width="72" height="57">
      <h1 class="h3 mb-3 fw-normal">Please Log in</h1>

      <div class="form-floating">
        <input type="email" class="form-control" name="email" value="<?= $login ?>" placeholder="[email protected]" required>
        <label for="floatingInput">Email</label>
      </div>
      <div class="form-floating">
        <input type="password" class="form-control" value="<?= $password ?>" name="password" placeholder="Password" required>
        <label>Password</label>
      </div>

      <small class="d-block text-danger"><?= isset($errors['password']) ? $errors['password'] : '' ?></small>
      <small class="d-block text-danger"><?= isset($errors['email']) ? $errors['email'] : '' ?></small>
      <button class="btn btn-primary w-100 py-2 mt-4" type="submit">Login in</button>
      <p class="mt-5 mb-3 text-body-secondary">© 2024</p>
    </form>
  </main>
</body>

</html>

database.sql
 

drop schema if exists `my-database`;
create schema `my-database`;
use `my-database`;
--
--
--

drop table if exists cadastros;
create table cadastros (
  id varchar(192) not null primary key,
  email varchar(192) unique,
  name varchar(192),
  password varchar(192),
  status tinyint(1) comment '0=desativado;1=ativo',
  created_by varchar(192),
  created_at timestamp default current_timestamp,
  updated_at datetime null
) Engine = InnoDB;
insert into cadastros (id, email, name, password)
values (
    'b2a22bfa-0fd0-406b-8904-ece488003e21',
    '[email protected]',
    'Carlos Admin',
    '$2y$10$JnA1Tcf2ZhyFf7lPRqYptezjuaf3yv0FhOZCJWjiW18uQexNd1YL.'
  );

se preferir, pode baixar aqui: https://github.com/w-studies/carlos-fw
login: [email protected]
password: sua-senha

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica Como foi mencionado pelos demais colegas,  pra resolver o problema de colocar o nome na frente do "Olá",   você deve armazenar o nome do usuário em uma variável de sessão. 
Mas, isso DEVE ser feito dentro do código que você valida o login.. na qual você já está usando o meu exemplo anterior.

 

É dentro deste trecho aqui:

 

} else {
		
        // enquanto existir, pega os dados e armazena em variável em forma de objeto
		while($user = mysqli_fetch_object($dados)){
          
            //armazena o id do usuário em uma variável, em forma de objeto
			$idUsuario = $user->id;
		
            //cria a session com o id do usuário e session com o nome de usuario 
		    $_SESSION["idUsuario"] = $idUsuario;
		    $_SESSION["login"] = $login;
  
            //aqui você armazena o nome do usuário na sessão ao logar.
            $_SESSION["nomeUsuario"] = $nome;
		
          //Redireciona para a página da dashboard
		header ("Location: dashboard.php");
		}	

 

Onde essa variável  $nome,  vai receber o nome do usuário  depois a sua consulta, ou seja, no caso,  além de pesquisar o usuário e senha, você busca também o nome.

 

Daí então na página que você quer mostrar o nome, você apenas chama a variável da sessão com o nome:

 

<?php
   session_start();

 //resto do código php, não vou colocar nada aqui porque é um exemplo
  $nomeDoUsuario = $_SESSION["nomeUsuario"];
?>


<div class="saudacao">  Olá  <?php echo  $nomeDoUsuario;?> , seja bem-vindo! </div> 
   

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica Qual o erro que deu? 

 

você precisa fundamentalmente entender como funciona.  Já andei percebendo que o que falta é você entender um pouco. 

A solução a gente já apresentou:  salvar o nome do usuário na variável de sessão.    E isso você faz ao autenticar o login,   Pelo código mostrado,  é nítido que você usou todo o meu exemplo que eu apresentei anteriormente em outro tópico.  Inclusive tem até os comentários que eu deixei, explicando linha a linha para você estudar e aprender.

 

Sendo franco,   você está dando um passo maior que a perna.    Eu recomendo você iniciar um projeto do zero, e refazer as coisas mais básicas primeiro antes de implementar estas coisas..

 

Como por exemplo:

Crie um banco de dados novo,  com apenas 1 tabela e um campo.   

 

 

Usuario (ID  auto increment ,  nome  varchar)

 

Registre alguns usuários diretamente no phpmyadmin.. e então no PHP   escreva um código que  busque o nome do usuário  e  insira em uma variável de sessão.

 

Então crie um outro arquivo php  e dê um echo  na variável de sessão para ver o resultado.

 

Você, ver funcionando na prática simples, é mais ilumiunadora do que nós dizendo o que fazer, mesmo apresentando os trechos de código , você não conseguiu implementar... isso significa que tem algo de muito errado,  e não podemos dizer onde.. porque pode ser:  

- problema de código

- alguma informação errada

- seu conhecimento insuficiente para implementar algo

 

Enfim,  Recomendo muito que você reveja e estude, faça coisas simples primeiro. 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica Quando existe erro de índice indefinido, significa que uma das variáveis está vazia. Note que nulo não é vazio. 

 

Quando um índice é indefinido,  pode ser que a variável  vazia, ter vindo do formulário, pode estar vazia na tabela...  o nome do campo pode ter sido escrito errado...  

 

voce pode  fazer um teste por exemplo:

 

$consulta = mysqli_query($conexao, "select id, nome, usuario, senha from usuario where id = 1");

$dados = mysqli_fetch_object($consulta);

echo $dados->id;

 

Aí ele vai ter que mostrar em tela o numero ID do usuário 1.

 

Se mostrar,  aí você edita, e troca para:

echo $dados->nome;

 

Se mostrar o nome,  edita e troca para:

echo $dados->usuario;

 

Se mostrar, edite e troque para:

echo $dados->senha;

 

Assim você testa cada um dos campos...  para saber qual deles dá o indefinido.   LEMBRANDO  que depois do simbolo  " -> "  você coloca exatamente como está o nome do campo na sua tabela.   Não pode conter espaços , não pode conter acentos e não pode começar com números.

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!