Ir ao conteúdo
  • Cadastre-se

MySQL Dificuldades em usar phpmyadmin


Ir à solução Resolvido por DiF,

Posts recomendados

Eu consigo acessar as informações do phpmyadmin,mas não consigo cadastrar nenhum dado no phpmyadmin.

 

Eu gostaria de construir um servidor de cadastro e login.(eu ja consegui fazer o sistema de login,mas estou com dificuldades em fazer o sistema de cadastro)

 

Alguém poderia me ajudar por favor?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica Seria melhor você postar seus códigos para entendermos o que você pode estar fazendo de errado.

 

Como está a estrutura do seu banco de dados?  Cadastrar os dados é bem simples...

Basicamente você faz uma conexão com o banco de dados,  usar as funções mysqli_query()  com uma instrução de INSERT INTO... com os campos e os valores que quer inserir..

Mas para te apontarmos algo, você precisa postar seus códigos.

Link para o comentário
Compartilhar em outros sites

@Carlos FW Informatica Bom, qual você esta usando agr? quando instalaa o programa ele ja fica configurado para acessar o phpmyadmin.

ja criou o banco de dados? o problema ocorre quando tenta conectar para inserir?consultar?

e como esta seu codigo de conexão com mysql? 

se conseguir mandar um print do erro fica melhor para tentar te ajudar.

Tanto o http server como o mysql server estão rodando?

Link para o comentário
Compartilhar em outros sites

  • Moderador
2 horas atrás, Carlos FW Informatica disse:

E os códigos que uso o @DiF foi que me ensinou no tópico anterior...

Então..  nem sei que códigos são.  Por isso a importância de você SEMPRE postar os códigos.. até porque, outros também não sabem... fica difícil ajudar assim. rsrs

 

2 horas atrás, Carlos FW Informatica disse:

já instalei uns 3 programas...(wamp,xamp,ease),nenhum retorna dado nenhum(não foram encontrados dados).

Os programas não importam.. por comodidade o EeasyPHP é um dos melhores. e De fácil uso.

 

Mas ncomo eu disse, não é o problema. O problema está nos seus códigos. 

Primeiro, certifique-se que esteja funcionando a conexão.. teste seguinte maneira:

 

Rode o EasyPHP, e tenha CERTEZA que os servidor apache e o servidor mysql  estejam rodando.. você tem que clicar nos botões verdes.  Para fazer isso você precisa entrar no dashboard dele.. Para abrir, você roda o easyphp,  daí ali nos icones perto da hora, clique com o botão da direita em cima dele e clique para abrir o dashboard... vai abrir no navegador... e então você clica nos botões verdes para iniciar eles.

 

Depois disso, ali mesmo, no dashboard tem um comando de teste para saber se o php está funcionando.. basta clicar para ele te retornar as estatisticas do php info...   se tudo estiver correto,

 

você abre o módulo phpmyadmin, cria um banco de dados...  "teste"

e com uma tabela  chamada "teste"

 

Crie um campo ID  marcando a caixinha de auto increment,   e crie um outro campo  com nome de "teste" com o tipo de dado em varchar.

 

Daí no seu programa IDE, crie um arquivo php chamado "conexao.php"

 

e digite:   

<?php
    $conexao = mysqli_connect("localhost", "teste", "root", "");

    if($connexao){
       echo "está conectado";
    }else{ 
        die("não conectou: " . mysqli_connect_error());
    }

e então abra o arquivo conexao.php pelo localhost no seu navegador... se dizer está conectado, é porque a conexão funcionou... se der errado, ele vai indicar qual o erro que foi.

 

Enfim.. posta os códigos para podermos analisar.

Link para o comentário
Compartilhar em outros sites

@luscas estou usando o easyphp atualmente,ja criei o banco de dados,já testei a conexão e está tudo ok,mas ele não cadastra nenhuma informação no banco de dados e na tabela,ficam tudo vazia,mesmo criando um id auto incremento e no app web parece ter funcionado mas quando a gente vai na database não aparece os dados...amanhã vou postar os códigos aqui viu @DiF para ficar melhor pra vocês me ajudar

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica Sim, é melhor que você poste.. pois não tem como dizer o que fazer ou que está de errado sem ver os códigos. 

 

Quando ele não envia os dados pra tabela tem N motivos para isso..por exemplo  os dados não estão sendo passados do formulário para o php,  erro de escrita em alguma variável, não ter informado algo,    erros na sintaxe da instrução SQL... enfim..  só poderemos dizer algo mais concreto, depois de analisar os códigos...  Tanto do formulário, e do php,  quanto a estrutura da sua tabela..

 

Pode usar um print da estrutura da sua tabela... 

Link para o comentário
Compartilhar em outros sites

@DiF @luscas arquivo cadastro.php

<?php

if (isset($_POST['submit']));
{
    //print_r($_POST['nome']);
   // print_r('<br>');
   // print_r($_POST['user']);
  //  print_r('<br>');
  //  print_r($_POST['email']);
  //  print_r('<br>');
  //  print_r($_POST['senha']);
}

include_once ('config.php');

$nome = $_POST['nome'];
$user = $_POST['user'];
$email = $_POST['email'];
$senha = $_POST['senha'];

$result = mysqli_query ($conexao, "INSERT INTO usuarios(nome,nome de usuario,email,senha) VALUES('$nome','$user','$email','$senha')");

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cadastrar</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>
<style>

  body{
      background-color: #f2f2f2;
  }

.container{
    width:100%;
    height: 100vh;
    align-items:center;
    justify-content:center;
    display:flex;
}

.row{
    width:100%;
    height: 100vh;
    align-items:center;
    justify-content:center;
    display:flex;
}

.btn_btn_primary{
background-color:#00a8ff;
border:none;
color:#fff;
float:right;
margin:20px;
}

p{
    margin:20px;
}

a{
    text-decoration:none;
    color:#00a8ff;
    margin:10px;
}

</style>
</head>
<body style="background-color: #f2f2f2">
    <div class="container"> 
        <div class="row">
              <div class="col-lg-4 offset-lg 4">
                    <div class="card">
                      <div class="card-body">
                      
                      <h3>Cadastrar</h3>

                      </div>
                         <div class="card-body">
                              <form action="cadastro.php" method="post">
                              <div>
                                      <div class="mb">
                                             <label>Nome:</label>
                                                     <input type="text" name="nome" class="form-control">
                                                          </div>
                                                          <label>Nome de usuario:</label>
                                                     <input type="text" name="user" class="form-control">
                                                     <label>E-mail:</label>
                                                     <input type="text" name="email" class="form-control">
                                                          </div>
                                                          <label>Senha:</label>
                                                                               <input type="password" name="senha" class="form-control">
                                                          </div>
                                                          <div class="mb">
                                                                                                                <button type="submit" class="btn_btn_primary">Cadastrar</button>
                                                                                                                <p class="link"> Acessar minha conta<a href="login.php">Acessar agora</a></p>
                                                                                                                 </div>
                                 </form>
                        
                            </div>
                     </div>
            
                </div>
          </div>
     
     </div>
</body>
</html>

esse outro arquivo e o config.php

<?php

$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'cadastro';

$conexao = new mysqli ($dbHost, $dbUsername, $dbPassword, $dbName);

if($conexao->connect_errno)
{
    echo "Erro de conexão!";
}
else
{
 echo "Conectado com banco de dados!";
}

?>

printsimage.thumb.png.ee935820febc0c4a6555ccfbc2916189.pngimage.thumb.png.85d1109278c2f4c92a261703bb43a215.pngimage.thumb.png.3a8c47987a41475dbaa1f302688e19f8.png

image.thumb.png.104a260d87a88a2213967405b0837842.png

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica

Considerações sobre o seu código primeiro.

 

Aparentemente o código php, está na no mesmo arquivo do formulário, está enviado para o próprio arquivo do php, porém está errado este método,  para mandar para ele mesmo precisa ser com o self.. por exemplo:

<form name="test" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

 

Mas,  por sugestão, separe as coisas.  

Crie um arquivo chamado  cadastro.php

 

só contendo o formulário assim:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cadastrar</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>
<style>

  body{
      background-color: #f2f2f2;
  }

.container{
    width:100%;
    height: 100vh;
    align-items:center;
    justify-content:center;
    display:flex;
}

.row{
    width:100%;
    height: 100vh;
    align-items:center;
    justify-content:center;
    display:flex;
}

.btn_btn_primary{
background-color:#00a8ff;
border:none;
color:#fff;
float:right;
margin:20px;
}

p{
    margin:20px;
}

a{
    text-decoration:none;
    color:#00a8ff;
    margin:10px;
}

</style>
</head>
<body style="background-color: #f2f2f2">
    <div class="container"> 
        <div class="row">
           <div class="col-lg-4 offset-lg 4">
               <div class="card">
                   <div class="card-body">
                      <h3>Cadastrar</h3>
     </div>
     <div class="card-body">
        <form action="dados.php" method="post">
           <div>
              <div class="mb">
                 <label>Nome:</label>
                 <input type="text" name="nome" class="form-control">
                </div>
                 <label>Nome de usuario:</label>
                 <input type="text" name="user" class="form-control">
                 <label>E-mail:</label>
                 <input type="text" name="email" class="form-control">
                 </div>
                 <div> 
                    <label>Senha:</label>
                    <input type="password" name="senha" class="form-control">
                 </div>
                  <div class="mb">
                      <button type="submit" class="btn_btn_primary">Cadastrar</button>
                       <p class="link"> Acessar minha conta<a href="login.php">Acessar agora</a></p>
                   </div>
             </form>                
                 </div>
                 </div>
              </div>
          </div>
     </div>
</body>
</html>

 

No action do form,  coloque por exemplo  dados.php

 

E então crie um arquivo chamado dados.php  só contendo a parte do php:

<?php

include_once ('config.php');

$nome = $_POST['nome'];
$user = $_POST['user'];
$email = $_POST['email'];
$senha = $_POST['senha'];

$result = mysqli_query ($conexao, "INSERT INTO usuarios(nome,nomeUsuario,email,senha) VALUES('$nome','$user','$email','$senha')");

if($result){
  echo " Cadastro efetuado"; 
}else{
  echo "Deu algo de errado"; 
}

?>

 

Agora sobre seus prints,    nas instruções de insert que eu vi ali,  teve erro de sintaxe  e erro  de nome de campo..  eu pedi o print da estrutura... você não postou .. você mandou print da aba "SQL"...  enquanto era para ser na aba "estrutura"...

 

Mas, já deduzi o problema.   O nome da tabela  NÃO PODE SER COM ESPAÇOS.

 

Troque o campo  " Nome de usuaio" para   nomeUsuario   ..  não pode ter espaços.

 

Ademais, quanto a instrução de consulta,  também esta errada.

a clausula  "WHERE 1 "   não existe.

 

Deves fazer desta forma:

SELECT * FROM usuarios WHERE ID = 1

Assumindo que o nome do campo ID  seja desta forma.   

Link para o comentário
Compartilhar em outros sites

  • Moderador
  • Solução

@Carlos FW Informatica

1 hora atrás, Carlos FW Informatica disse:

eu nak quero emviar para ele mesmo,eu quero que põe no banco de dados

Estou dizendo no código.  Pelo que você postou,  o formulário estava enviando os dados para o próprio arquivo do formulário, que nele mesmo tinha o código php que recebia os dados e inseria no banco de dados..   Por isso comentei.

 

E dei a sugestão para separar os arquivos, ou seja, terás um arquivo apenas para o formulário  e um arquivo separado apenas com o php que recebe os dados deste formulário.

 

Na primeira imagem ali, diz que estava conectado com o banco de dados e deu a mensagem que estava no ELSE do teste de envio.

Isso quer dizer que tem algo de errado, porém não sabemos o que de fato deu errado..  então temos que debugar isso parte a parte... 

 

Primeiro passo no arquivo dados.php,  deixe desta forma primeiro:

$nome = $_POST['nome'];
$user = $_POST['user'];
$email = $_POST['email'];
$senha = $_POST['senha'];

echo "$nome , $user , $email , $senha"; 

 

Para descobrir se primeiro os dados estão sendo passados.

Se aparecer em tela os dados, OK

 

Próximo passo é testar a insersão direto no phpmyadmin.

Mas, antes, veja na sua segunda imagem.  Podemos identificar um erro direto.   O nome do campo "nome de usuário", que é o segundo ali...  contém espaços.   Não pode conter espaços. ...  Clique ali no botão de lapis que diz "muda" deste campo.. e troque de nome de usuario para  nomeUsuario 

 Sim, tudo junto e com o U maiúsculo... pois isso é uma boa prática da programação. Ou usar o underline.... eu prefiro tudo junto que fica melhor.

 

Então sua tabela precisa estar desta forma:

id (int 10)  auto increment

nome (varchar 255)

nomeUsuario (varchar 255)

email (varchar 255)

senha (varchar 255)

 

Com a estrutura correta,  clique na aba de SQL e faça uma inserção direto:

 

INSERT INTO usuarios (nome, nomeUsuario, email, senha) VALUES ("Fulano", "fulano2024", "[email protected]", "fulano12345");

 

E então vai lá na sua tabela ver se foi registrado o usuário.

Repare, que eu omiti o campo id no insert, porque ele já é auto increment... ele adiciona automaticamente, sem precisar colocar no sql.

 

Agora que cadastrou,   faça o teste:

Na mesma aba  SQL... digite:

 

SELECT  * FROM usuarios WHERE id  = 1

 

Ou se preferir,  você pode buscar pelos dados especificos:

 

SELECT nome, nomeUsuario, email, senha FROM usuarios WHERE id = 1

 

Claro, que para fazer o login você vai pegar apenas os campos nomeUsuario e senha para verificar se ele digitou corretamente e deixar passar.

 

Se ele cadastrar bem,  sabemos que agora a tabela está funcionando... voltamos lá no seu código do arquivo  dados.php:

 

<?php

//inclui a conexao com o banco de dados
include_once ('config.php');

//recebe os dados vindo do formulário
$nome = $_POST['nome'];
$user = $_POST['user'];
$email = $_POST['email'];
$senha = $_POST['senha'];

//executa a instrução SQL de inserir na tabela
$result = mysqli_query($conexao, "INSERT INTO usuarios(nome,nomeUsuario,email,senha) VALUES('$nome','$user','$email','$senha')");

//testa se foi cadastrado ou não
if($result){
  echo " Cadastro efetuado"; 
}else{
  echo "Deu algo de errado"; 
}

?>

 

Agora TEM que funcionar..... pois acredito que o problema estava no nome do campo que tinha espaços. 

 

Por sugestão, evite de usar nomes de usuários... faça com que o usuário use o próprio email como login....  pois é muito mais fácil esquecer um nome de login do que esquecer o próprio email.... hj em dia é praticamente o padrão.. a maioria já usa o email como login.

Link para o comentário
Compartilhar em outros sites

22 minutos atrás, DiF disse:

Com a estrutura correta,  clique na aba de SQL e faça uma inserção direto:

image.thumb.png.013f25c1076c22729ba04d7172635fcd.pngna aba sql inserir diretamente....

24 minutos atrás, DiF disse:
$nome = $_POST['nome'];
$user = $_POST['user'];
$email = $_POST['email'];
$senha = $_POST['senha'];

echo "$nome , $user , $email , $senha"; 

quando eu ponho so isso no codigo dados.php....

 

 

Sem título.png

 

34 minutos atrás, DiF disse:

Com a estrutura correta,  clique na aba de SQL e faça uma inserção direto:

 

INSERT INTO usuarios (nome, nomeUsuario, email, senha) VALUES ("Fulano", "fulano2024", "[email protected]", "fulano12345");

 

E então vai lá na sua tabela ver se foi registrado o usuário.

Repare, que eu omiti o campo id no insert, porque ele já é auto increment... ele adiciona automaticamente, sem precisar colocar no sql.

so não falou que tinha que executar o insert into ne rsrs

depois que eu cliquei em executar rsrs

Sem título1.png

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica Bem... isso era uma coisa que eu achei que você já sabia, pois quando se faz algo direto no phpmyadmin, sempre precisa ser executado manualmente.

 

1 hora atrás, Carlos FW Informatica disse:

quando eu ponho so isso no codigo dados.php....

Então, estes é os dados que você escreveu no formulário.    Sabendo que está passando os dados corretamente,  agora você usa as variáveis que você criou para receber os dados, na instrução SQL que eu te passei. 

 

 Com isso vai funcionar, pois você já testou a mesma instrução SQL lá no phpmyadmin e funcionou.

 

Link para o comentário
Compartilhar em outros sites

@DiF agora esta enviando para o meu banco de dados,obrigado,agora falta so por alguma coisa para não registrar vazios no banco de dados e so ir para a "dashboard" se prencher todos os campos do cadastro!!!

 

session_start();
if(empty($_SESSION)){
    print "<script>location.href='cadastro.php'</script>";
}

tipo esse codigo php que eu vi na net,mas mesmo inserindo os dados nos campos de textos ele sempre volta para cadastrar!!! 😕

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica

 

Para previnir de cadastrar campos vazios.. você faz um teste antes....

 

por exemplo:
 

if(empty($nome) OR empty($user) OR empty($email) OR empty($senha)){
    echo "preencha todos os campos.";
    exit;
}else{

   aqui dentro você coloca todo o código de inserir.
}

 

Além disso, para reforçar, no seu HTML,  insira o atributo required nos campos...

 

Exemplo:

<form action="dados.php" method="POST">
  <label for="nome">Nome:</label>
  <input type="text" id="nome" name="nome" required>
  <label for="usuario">Nome de Usuário:</label>
  <input type="text" id="nomeUsuario" name="nomeUsuario" required>
  <label for="email">E-mail:</label>
  <input type="text" id="email" name="email" required>
  <label for="senha">Senha:</label>
  <input type="password" id="senha" name="senha" required>
  <input type="submit">
</form>

Isso também previne de deixar um campo vazio..

 

Quanto a parte do dashboard...  bem aqui tem uns passos a mais..

 

É um pouco mais compilicado... mas vamos lá..   

 

Você vai ter o formulário para enviar o login e senha.   vamos chamar o arquivo que recebe estes dados para login  de   validaUsuario.php

Ele será mais ou menos assim:

 

<?php
//Inicia a session
session_start();
	
    //Recebe os dados do formulário 
	$login = $_POST["nomeUsuario"];
	$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 'conexao.php';
	
    //Faz a consulta na tabela de usuarios para pegar os dados necessários
	$sql = "SELECT id, nomeUsuario, senha FROM usuarios WHERE nomeUsuario ='$login_escape' AND senha = '$senha_escape' ";

	$dados = mysqli_query($sql, $conexao);
	$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);
?>

 

 

Bem  depois de ter feito isso, ainda tem um próximo passo que é dentro do dashboard.php...  que é para verificação de sessions.

que fica assim:

 

<?php 
//inicia a session
session_start();

     //define um cookie para registro de login
	setcookie("ck_authorized", "true", 0, "/");
	date_default_timezone_set("Brazil/East");
	
    //testa se existe uma sessão
	if(!isset($_SESSION["login"])){
         
         //se não existir, redireciona de volta pro cadastro.php
		header("location: cadastro.php"); 
    }else{
      
        //coloca em uma variável as sessões...  
		$login = $_SESSION["login"];	
		$id = $_SESSION["idUsuario"];
    }
?>

Lembrando, que esta parte do código, ficará no topo do arquivo dashboard.php...  e abaixo dele.. terá o restante do seu código do dashboard.

 

Feito isso funcionará...   Estude estes códigos.. tente entender... eu deixei comentado para você tentar entender.

Link para o comentário
Compartilhar em outros sites

59 minutos atrás, DiF disse:
<form action="dados.php"

agora como eu faço para por o dados.php <-ligando com-> dashboard.php?

1 hora atrás, DiF disse:

Além disso, para reforçar, no seu HTML,  insira o atributo required nos campos...

na verdade estou usando php 😅

1 hora atrás, DiF disse:

@Carlos FW Informatica

 

Para previnir de cadastrar campos vazios.. você faz um teste antes....

 

por exemplo:
 

if(empty($nome) OR empty($user) OR empty($email) OR empty($senha)){
    echo "preencha todos os campos.";
    exit;
}else{

   aqui dentro você coloca todo o código de inserir.
}

 

Além disso, para reforçar, no seu HTML,  insira o atributo required nos campos...

 

Exemplo:

<form action="dados.php" method="POST">
  <label for="nome">Nome:</label>
  <input type="text" id="nome" name="nome" required>
  <label for="usuario">Nome de Usuário:</label>
  <input type="text" id="nomeUsuario" name="nomeUsuario" required>
  <label for="email">E-mail:</label>
  <input type="text" id="email" name="email" required>
  <label for="senha">Senha:</label>
  <input type="password" id="senha" name="senha" required>
  <input type="submit">
</form>

Isso também previne de deixar um campo vazio..

 

Quanto a parte do dashboard...  bem aqui tem uns passos a mais..

 

É um pouco mais compilicado... mas vamos lá..   

 

Você vai ter o formulário para enviar o login e senha.   vamos chamar o arquivo que recebe estes dados para login  de   validaUsuario.php

Ele será mais ou menos assim:

 

<?php
//Inicia a session
session_start();
	
    //Recebe os dados do formulário 
	$login = $_POST["nomeUsuario"];
	$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 'conexao.php';
	
    //Faz a consulta na tabela de usuarios para pegar os dados necessários
	$sql = "SELECT id, nomeUsuario, senha FROM usuarios WHERE nomeUsuario ='$login_escape' AND senha = '$senha_escape' ";

	$dados = mysqli_query($sql, $conexao);
	$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);
?>

 

 

Bem  depois de ter feito isso, ainda tem um próximo passo que é dentro do dashboard.php...  que é para verificação de sessions.

que fica assim:

 

<?php 
//inicia a session
session_start();

     //define um cookie para registro de login
	setcookie("ck_authorized", "true", 0, "/");
	date_default_timezone_set("Brazil/East");
	
    //testa se existe uma sessão
	if(!isset($_SESSION["login"])){
         
         //se não existir, redireciona de volta pro cadastro.php
		header("location: cadastro.php"); 
    }else{
      
        //coloca em uma variável as sessões...  
		$login = $_SESSION["login"];	
		$id = $_SESSION["idUsuario"];
    }
?>

Lembrando, que esta parte do código, ficará no topo do arquivo dashboard.php...  e abaixo dele.. terá o restante do seu código do dashboard.

 

Feito isso funcionará...   Estude estes códigos.. tente entender... eu deixei comentado para você tentar entender.

Outra coisa que eu queria fazer também era cobrar um determinado valor antes da pessoa acessar a dashboard.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica

2 horas atrás, Carlos FW Informatica disse:

agora como eu faço para por o dados.php <-ligando com-> dashboard.php?

aquele exemplo com o dados só foi usado para mostrar como colocar o required nos input.

 

A ligação que você quer,  está no código do post anterior.

Resumidamente:   você tem um login.php   ->  envia os dados (usuário e senha)  -> para um arquivo  validaUsuario.php  -> dentro deste arquivo no código, é validado com base no usuário e senha.. se tudo tiver correto, e o usuário existir.. você terá feito o login e será redirecionado para o dashboard.php.   caso contrário ele só dirá que usuário não existe.... e retornará para tela de login.

 

2 horas atrás, Carlos FW Informatica disse:

na verdade estou usando php 😅

Eu sei.  e é por isso que eu disse  "para reforçar"   você DEVE usar o required no campo input do formulário para previnir o envio dos dados quando vazio... e além disso, também você trata os campos vazios  no php.  é uma medida extra.   Talvez até nem precisasse usar a validação de campo no php, pois os navegadores atuais, possuem essa verificação direta pelo required... MAS, vai que alguém consegue burlar isso... então por via das dúvidas, usa o required no input   e testa com empty()  no php.

 

2 horas atrás, Carlos FW Informatica disse:

Outra coisa que eu queria fazer também era cobrar um determinado valor antes da pessoa acessar a dashboard.

Bom.. aí eu já não sei te ajudar..  você terá que estudar e entender sobre os gateway de pagamentos.. usar alguma API de pagamentos.. seja por qualquer tipo de serviço

 

 

A questão que eu mencionei anteriormente,   ESTUDE os códigos que eu deixei anteriormente,  eles estão comentados linha a linha...  você tem que estudar sobre eles e entender o que faz eles... 

Tenho uma impressão que já falei varias vezes sobre as mesmas coisas.. tanto neste post quanto em outro.. eu não lembro direito.. mas você precisa estudar estes códigos, tens que aprender... é o certo a se fazer 🙂 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

10 minutos atrás, DiF disse:

aquele exemplo com o dados só foi usado para mostrar como colocar o required nos input.

na verdade não,o dados.php foi para inserir os dados no banco de dados rsrs

<?php

//inclui a conexao com o banco de dados
include_once ('config.php');

//recebe os dados vindo do formulário
$nome = $_POST['nome'];
$user = $_POST['user'];
$email = $_POST['email'];
$senha = $_POST['senha'];

  //executa a instrução SQL de inserir na tabela
  $result = mysqli_query($conexao, "INSERT INTO usuarios(nome,nomeUsuario,email,senha) VALUES('$nome','$user','$email','$senha')");

?>

 

12 minutos atrás, DiF disse:

caso contrário ele só dirá que usuário não existe.... e retornará para tela de login.

da dando muito erro na linha 28 e 29 que sao essas duas linhas de baixo

	$dados = mysqli_query($sql, $conexao);
	$num = mysqli_num_rows($dados);

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica Como eu disse anteriormente,  é para você estudar os códigos comentado, e implementar do jeito que precisar no seu arquivo, se simplesmente copiar e colar é certo que vai dar erros.   Afinal, isso eu tirei de um trecho de um projeto que eu fiz uma vez.   Só usei o código como exemplo,  para você ter um norte.

 

Vou repetir de novo o que você tem que fazer, mas sem postar códigos.. pois eles já estão no tópico, basta você entender e fazer parecido( mas não copiar e colar)

 

Parte de cadastros

arquivo cadastro.php

       |

       |-> contém apenas o HTML com o formulário.  usando o Method ="POST"  action ="dados.php"       PS: esse nome dados.php é só um exemplo.. você pode colocar o nome que quiser.

 

arquivo dados.php

      |

      |-> contém apenas o código em PHP, que recebe os valores vindo dos campos do formulário

      |-> conecta no banco de dados

      |-> insere na tabela do banco de dados com a função mysqli_query() 

      |-> testa se foi cadastrado com um IF-ELSE  exemplo:  IF ($result)  e daí por diante.. a estrutura do IF-ELSE você já sabe.

 

 

Parte do Login, autenticação e ir para o dashboard

 

arquivo login.php

    |

    |-> contém apenas o HTML com o formulário usando o Method="POST"  action="validaUsuario.php"  PS: o nome validaUsuario.php é só um exemplo, pode colocar o nome que quiser.

 

arquivo validaUsuario.php

   |

   |-> Inicia o session_start()

   |-> contém apenas o código em PHP, que recebe os valores vindo dos campos do formulário, neste caso é o nome de usuário e senha

   |-> conecta no banco de dados

   |-> faz uma consulta no banco de dados, requisitando o nome de usuário e senha

   |-> testa se estes dados requisitados da tabela, são iguais aos recebidos do formulário, se diferente, diz que o login ou senha tá errada

   |-> se estiver certo,  cria uma SESSION com os dados necessários, por exemplo o nome de usuário e o código id do usuário( caso seja um admin por exemplo para fazer ações como editar e deletar)

   |-> Depois que criou a SESSION,  ele vai te enviar para o dashboard.php   usando a função header(location: nome-da-pagina.php)

 

Ele só vai te enviar para o dashboard.php  CASO, somente SE entrou com o usuário e  e senhas corretas.. caso contrário ele vai informar que teve erro e vai voltar para a tela anterior, por causa do javascript com a função  history.go(-1)     ps: veja essa parte no código ali em cima)

 

arquivo dashboard.php

    | 

    |-> Bem no topo do arquivo antes de tudo,  você vai abrir a sessão com  session_start()

    |-> Vai criar um cookie para controle:  setcookie("ck_authorized", "true", 0, "/"); Isso que gravará que foi feito um login.

    |-> vai testar se existe a sessão com  IF(!isset($_SESSION["login"]))      ou seja, o login ali dentro do session, será aquele mesmo nome que você colocou ao criar a session no validaUsuario.php

    |->  Dentro do  primeiro bloco de IF  você usa o header("location: nome-da-pagina.php")  que será para onde vai mandar caso NÃO exista uma session.. ou seja,  quando tem um sinal de " ! "  na frente,  dizemos que é uma negação... então  "IF NOT ISSET"  

   |-> NO segundo bloco do IF, que é dentro do ELSE você usa o $login = $_SESSION["login"];   que é o que você colocou na sessão.. isso pode ser um nome, nome de usuário.. e etc..   justamente para poder utilizar um  "Bem vindo Fulano" ... esse fulano ali.. é o valor contido na session.

 

 

Basicamente é isso tudo que você você vai precisar fazer,  e isso tudo já está no tópico nos códigos que eu postei.  você precisa entende-los e implementar no seu código. jamais copie.  

Algumas considerações sobre o meu código,   Ali foi usado algumas partes em orientada a objetos..   por ser melhor e mais fácil de compreender....  

 

Por exemplo: 

 

NO modo procedural, normalmente você ao fazer uma consulta, usa a função  mysqli_fetch_array()

 

while($dados = mysqli_fetch_array($dados)){
	$id =   $dados["idDespesa"];
	$tipo = $dados["tipoDespesa"];
    echo"<option value='$id'>$tipo </option>";
}

 

Já no modo orientada a objetos,  você usa o mysqli_fetch_object() 

 

while($dados = mysqli_fetch_object($consulta)){
		$id   = $dados->idDespesa;
		$tipo = $dados->tipoDespesa;	
		echo"<option value='$id'>$tipo </option>";
}

 

Você pode identificar o modo orientado a objetos quando tem uma flecha  "  ->  "  

 

Particularmente, acho melhor, usar desta forma... do que colocar em forma de array.

Link para o comentário
Compartilhar em outros sites

@DiF eu só não mudei do meu jeito por que não estou entendendo algumas cositas...(""=vale pras outras $)

 

$login = variável ou o que?

$senha = ""

$consulta = ""

$conecta = ""

$dados = ""

$conexao = ""

$num = ""

$user = ""

$sql = que faz a consulta no banco de dados!!!!

 

ate por que o $conexao caso for a "variavel" do config.php , então a $conexao = new mysqli (host,username,password,nome do banco de dados)

 

$dados <->$num = 0 empty

11 minutos atrás, Carlos FW Informatica disse:

@DiF eu só não mudei do meu jeito por que não estou entendendo algumas cositas...(""=vale pras outras $)

 

$login = variável ou o que?

$senha = ""

$consulta = ""

$conecta = ""

$dados = ""

$conexao = ""

$num = ""

$user = ""

$sql = que faz a consulta no banco de dados!!!!

claro eu tive que mudar no código o arquivo que faz a conexão com o banco de dados...pois no código estava conexao.php e no meu aqui é config.php, por isso também não estou tento problemas na conexão ,pois mudei o arquivo .php!!!!!!

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Carlos FW Informatica  Os nomes dos arquivos não importam. você pode colocar o que quiser.. o que importa é os códigos,  você precisa entende-los. todos os códigos que eu apresentei aqui deixei comentado para que você pudesse entender eles, e então pesquisar sobre eles,  por exemplo no manual do php tem toda uma explicação mais aprofundada e com exemplos práticos.

 

Meio que não faz sentido você colocar aquelas variáveis aqui nesse post  #22,  pois são todas sugestivas e dizem o que elas são.

 

Quando eu disse copiar e colar, estou falando dos exemplos que eu passei aqui.  você disse que começou aparesentar erros, e etc..  é sinal que você copiou eles. e colou no seu código.

 

Use o post  #21  como guia, e use o post #17  como guia para criar a parte do login.  

Não tem muito mais o que eu explicar.. pois agora não cabe mais a mim,  mas sim você entender e implementar. 

 

5 horas atrás, Carlos FW Informatica disse:

ate por que o $conexao caso for a "variavel" do config.php , então a $conexao = new mysqli (host,username,password,nome do banco de dados)

O nome da variável de conexão sempre vai ser o mesmo que você colocar no arquivo de conexao... se estiver  $conn,  vai ser $conn...

Ademais, você colocou aqui agora, uma conexão em orientada a objetos...   se você fizer deste jeito,  você vai ser obrigado a usar todas as funções em orientada a objetos... ou seja  mysqli_query() não vai funcionar..  
Nesse caso eu sugiro muito que você leia o manual do PHP e busque a função orientada a objetos que equivale ao mysqli_query()   e outras que precisam ser usadas também.  em orientada a  objetos.

  • Curtir 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!