Ir para conteúdo

Arquivado

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

Thiago Duarte

Cadastro não funciona

Recommended Posts

Oi, meu cadastro não ta funcionando, eu insiro os dados e não cadastra nada, alguém pode ajudar? Deve ser alguma coisa faltando que esqueci....

 

cadastro.php

<form action="action_cliente.php" method="post" id='form-contato' enctype='multipart/form-data'>
                <div class="form-group">
                  <label for="nome">Nome</label>
                  <input type="text" class="form-control" id="nome" name="nome" placeholder="Infome o Nome">
                  <span class='msg-erro msg-nome'></span>
                </div>
                <div class="form-group">
                  <label for="email">Senha</label>
                  <input type="password" class="form-control" name="senha" placeholder="Informe sua Senha">
                  <span class='msg-erro msg-email'></span>
                </div>
                <input type="hidden" name="acao" value="incluir">
                <button type="submit" class="btn btn-primary" id='botao'> 
                  Gravar
                </button>
                <a href='index.php' class="btn btn-danger">Cancelar</a>
            </form>

 

action_cliente.php

<?php
 
require_once 'class/Connection.php';
 
// pega os dados do formuário
$nome = isset($_POST['nome']) ? $_POST['nome'] : null;
$senha = isset($_POST['senha']) ? $_POST['senha'] : null;
 
// validação (bem simples, só pra evitar dados vazios)
if (empty($nome) || empty($senha) 
{
    echo "Volte e preencha todos os campos";
    exit;
} 
 
// insere no banco
$PDO = db_connect();
$sql = "INSERT INTO usuario (nome, senha) VALUES ('$nome', '$senha')";
$stmt = $PDO->prepare($sql);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':senha', $senha);
 
 
if ($stmt->execute())
{
    header('Location: welcome.php');
}
else
{
    echo "Erro ao cadastrar";
    print_r($stmt->errorInfo());
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca isso:

// insere no banco
$PDO = db_connect();
$sql = "INSERT INTO usuario (nome, senha) VALUES ('$nome', '$senha')";
$stmt = $PDO->prepare($sql);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':senha', $senha);

por isso:

// insere no banco
$PDO = db_connect();
$stmt = $PDO->prepare("INSERT INTO usuario (nome, senha) VALUES (:nome, :senha)");
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':senha', $senha);

Testa aí e vê se vai agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 08/12/2017 at 00:27, BrunoMs disse:

Troca isso:


// insere no banco
$PDO = db_connect();
$sql = "INSERT INTO usuario (nome, senha) VALUES ('$nome', '$senha')";
$stmt = $PDO->prepare($sql);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':senha', $senha);

por isso:


// insere no banco
$PDO = db_connect();
$stmt = $PDO->prepare("INSERT INTO usuario (nome, senha) VALUES (:nome, :senha)");
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':senha', $senha);

Testa aí e vê se vai agora.

 

Fatal error: Call to undefined function db_connect() in C:\wamp\www\php-login\action_cliente.php on line 27

 

 

<?php
 
$servidor = 'localhost'; 
 $banco      = 'meubanco'; 
 $usuario  = 'root'; 
 $senha    = ''; 
 $link     = mysql_connect($servidor, $usuario, $senha); 
 $db          = mysql_select_db($banco,$link); 
 if(!$link) {     
     echo "erro ao conectar ao banco de dados!";exit(); 
}
 
// pega os dados do formuário
$nome = isset($_POST['nome']) ? $_POST['nome'] : null;
$senha = isset($_POST['senha']) ? $_POST['senha'] : null;
 
 
// validação (bem simples, só pra evitar dados vazios)
// if (empty($nome) || empty($senha) 
// {
//     echo "Volte e preencha todos os campos";
//     exit;
// }
 
 
// insere no banco
$PDO = db_connect();
$stmt = $PDO->prepare("INSERT INTO usuario (nome, senha) VALUES (:nome, :senha)");
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':senha', $senha);
 
 
if ($stmt->execute())
{
    header('Location: welcome.php');
}
else
{
    echo "Erro ao cadastrar";
    print_r($stmt->errorInfo());
}

Deu erro na linha 27, postei meu banco de dados junto com o codigo para voce ver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ta tentando usar PDO fazendo conexão mysqli. Pra funcionar você tem que utilizar PDO na conexão. 

Troca isso:

$servidor = 'localhost'; 
 $banco      = 'meubanco'; 
 $usuario  = 'root'; 
 $senha    = ''; 
 $link     = mysql_connect($servidor, $usuario, $senha); 
 $db          = mysql_select_db($banco,$link); 
 if(!$link) {     
     echo "erro ao conectar ao banco de dados!";exit(); 
}

E poem isso:

try{
	$PDO = new PDO("mysql:host=" . $servidor . ";dbname=" . $banco , $usuario , $senha);
	$PDO->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
	echo "erro : " . $e->getMessage();
}

Na hora de testar aí toma cuidado, pq você ta usando a mesma variável $senha pra pegar a senha do banco e senha do usuário, pode dar conflito. Testa e vê se vai agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, BrunoMs disse:

Você ta tentando usar PDO fazendo conexão mysqli. Pra funcionar você tem que utilizar PDO na conexão. 

Troca isso:


$servidor = 'localhost'; 
 $banco      = 'meubanco'; 
 $usuario  = 'root'; 
 $senha    = ''; 
 $link     = mysql_connect($servidor, $usuario, $senha); 
 $db          = mysql_select_db($banco,$link); 
 if(!$link) {     
     echo "erro ao conectar ao banco de dados!";exit(); 
}

E poem isso:


try{
	$PDO = new PDO("mysql:host=" . $servidor . ";dbname=" . $banco , $usuario , $senha);
	$PDO->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
	echo "erro : " . $e->getMessage();
}

Na hora de testar aí toma cuidado, pq você ta usando a mesma variável $senha pra pegar a senha do banco e senha do usuário, pode dar conflito. Testa e vê se vai agora.


No seu script não tem os dados de conexão, nem vai funcionar né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era pra você trocar a conexão, ficaria dessa forma:

<?php
$servidor = 'localhost'; 
$banco    = 'meubanco'; 
$usuario  = 'root'; 
$senhadb  = ''; 

try{
	$PDO = new PDO("mysql:host=" . $servidor . ";dbname=" . $banco , $usuario , $senhadb);
	$PDO->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
	echo "erro : " . $e->getMessage();
}

$nome  = "lalalala";
$senha = "huhuhuhu";

// insere no banco
$stmt = $PDO->prepare("INSERT INTO usuario (nome, senha) VALUES (:nome, :senha)");
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':senha', $senha);
$stmt->execute();
 
if ($stmt->rowCount() > 0)
{
    header('Location: welcome.php');
}
else
{
    echo "Erro ao cadastrar";
    print_r($stmt->errorInfo());
}

?>

aproveitei e alterei a verificação no if, coloquei $stmt->rowCount() > 0 pra verificar se inseriu, serve pra update e delete também.

testa aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 10/12/2017 at 01:04, BrunoMs disse:

Era pra você trocar a conexão, ficaria dessa forma:


<?php
$servidor = 'localhost'; 
$banco    = 'meubanco'; 
$usuario  = 'root'; 
$senhadb  = ''; 

try{
	$PDO = new PDO("mysql:host=" . $servidor . ";dbname=" . $banco , $usuario , $senhadb);
	$PDO->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
	echo "erro : " . $e->getMessage();
}

$nome  = "lalalala";
$senha = "huhuhuhu";

// insere no banco
$stmt = $PDO->prepare("INSERT INTO usuario (nome, senha) VALUES (:nome, :senha)");
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':senha', $senha);
$stmt->execute();
 
if ($stmt->rowCount() > 0)
{
    header('Location: welcome.php');
}
else
{
    echo "Erro ao cadastrar";
    print_r($stmt->errorInfo());
}

?>

aproveitei e alterei a verificação no if, coloquei $stmt->rowCount() > 0 pra verificar se inseriu, serve pra update e delete também.

testa aí.

Deu erro

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, BrunoMs disse:

Qual erro?

 

Depois de alguns ajustes, eu vi que consegui cadastrar mas não entra na pagina inicial "welcome.php" 

 

Meu welcome.php ta assim:

<?php
    require_once(dirname(__FILE__).'/class/Login.php');
    $objLogin = new Login();
    
    $objLogin->verificarLogado();
?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="iso-8859">
    <title>Bem Vindo</title>
    
    <link rel="stylesheet" href="css/style.css" />
</head>
<body>
    <div class="container welcome">
        <h3>Bem Vindo <?php echo $idUsuario = $objLogin->getIdUsuario(); ?></h3>
    </div>
    <br>
    <a href="logout.php">Sair</a>
</body>
</html>

O que deve ta errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites
22 horas atrás, Kaio Augusto de Castro disse:

Se precisar eu tenho algo que pode deixar o codigo um pouco mais simples pra cadastro, busca, delete e update caso for do interesse.

 

Em php oo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
22 horas atrás, BrunoMs disse:

Poem seu login.php completo aqui pra gente ver.

<?php    
    require_once(dirname(__FILE__).'/class/Login.php');
    
    $objConnection = new Connection();
    $objLogin = new Login();
?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="iso-8859">
    <title>Formulário de Login com PHP OO</title>
    
    <link rel="stylesheet" href="css/style.css" />
    
</head>
<body>
    <div class="container-geral">
        <div class="container login">
            <h3>Formulário de Login</h3>
            <br />
            <form action="" method="POST">
                <label for="email">E-mail:</label>
                <br />
                <input type="text" name="email" id="email" required/>
                <br />
                <br />
                <label for="senha">Senha:</label>
                <br />
                <input type="password" name="senha" id="senha" required/>
                <br />
                <br />
                <input type="submit" value="Enviar" name="Enviar"/>
            </form>
        </div>
        <?php
        if(isset($_POST["Enviar"]) && $_POST["Enviar"] == "Enviar"){
            $logar = $objLogin->Logar($_POST["email"],$_POST['senha']);
        }
        ?>
        <br />
        <?php 
        if (isset($logar)){
        ?>
            <div class="container-erro">
                <?php echo $logar ?>
            </div>
        <?php } ?>
    </div>
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me referi ao login.php que ta dentro da sua pasta class:

require_once(dirname(__FILE__).'/class/Login.php');

Pq se não está entrando na página welcome.php o erro pode estar dentro desse arquivo da class/login.php que você está dando require_once

 

Em 12/12/2017 at 03:19, Thiago Duarte disse:

Depois de alguns ajustes, eu vi que consegui cadastrar mas não entra na pagina inicial "welcome.php" 

 

Meu welcome.php ta assim:

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Login.php

<?php
session_start();
require_once('Connection.php');
    
Class Login{
    function __construct(){
        
        $objConnection = new Connection();
        
    }
    function verificarLogado(){
        if(!isset($_SESSION["logado"])){
            header("Location: dirname(__FILE__)/../index.php");
            exit();
        }
    }
    
    function Logar($email,$senha){
        
        $q_usuario = mysql_query("select * from usuario where usuario.email ='".$email."'");    
        
        if(mysql_num_rows($q_usuario) == 1){
        
            $d_usuario = mysql_fetch_array($q_usuario);
            if($d_usuario["senha"] == $senha){
                $_SESSION["id_usuario"] = $d_usuario["id"];
                $_SESSION["logado"] = "sim";
                header("Location: dirname(__FILE__)/../welcome.php");
            }else{
                $Erro = "Senha e/ou Email errado(s)!";
                return $Erro;
            }
        }else{
            $Erro = "Senha e/ou Email errado(s)!";
            return $Erro;
        };        
    }
    
    function getIdUsuario(){
        return $_SESSION["id_usuario"];
    }
    
    function deslogar(){
        session_destroy();
        header("Location: dirname(__FILE__)/../index.php");
    }
}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando conexão PDO como mostra lá no seu primeiro comentário, mas está usando mysql no método Logar() pra fazer a validação do login, talvez por isso não está funcionando, vai ter que trocar esse método Logar todinho e o __construct() que você está instanciando Connection() e não está usando. Poem sua connection.php aqui pra gente te ajudar a arrumar sua classe Login.

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 horas atrás, BrunoMs disse:

Você está usando conexão PDO como mostra lá no seu primeiro comentário, mas está usando mysql no método Logar() pra fazer a validação do login, talvez por isso não está funcionando, vai ter que trocar esse método Logar todinho e o __construct() que você está instanciando Connection() e não está usando. Poem sua connection.php aqui pra gente te ajudar a arrumar sua classe Login.

 

<?php
class Connection{
    
    var $Server = "localhost";
    var $Username = "root";
    var $Password = "";
    var $Database = "meubanco";
    var $Porta = "5432";
        
    function __construct(){
        $this->Conectar();
    }
        
    function Conectar(){
        if(!($conectar = mysql_connect($this->Server,$this->Username,$this->Password))){
            echo "Erro ao tentar abrir a conexão!";
        }else{
            if(!($con = mysql_select_db($this->Database,$conectar))){
                echo "Erro ao selecionar o banco!";
            }
        }
    }
}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

connection.php

<?php
class connection{
     
    private $host = "localhost";
    private $dbna = "seubanco";
    private $user = "seuuser";
    private $pass = "suasenha";
    public $connect;
     
    public function connectionDB(){
     
	    $this->connect = null;    
        try{
            $this->connect = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->dbna, $this->user, $this->pass);
			$this->connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);	
        }
		catch(PDOException $e){
            echo "Connection error : " . $e->getMessage();
        }
         
        return $this->connect;
    }
}
?>

nova classe login classLogin.php:

<?php

require_once("connection.php");

class Login{	

	private $connect;
	
	public function __construct(){
		$connection = new connection();
		$this->connect = $connection->connectionDB();
    }
	
	public function logar($email,$upass){
		try{
			$stmt = $this->connect->prepare("SELECT * FROM suatabela WHERE suacolunaemail=:email");
			$stmt->execute(array(":email" => $email));
			$row = $stmt->fetch(PDO::FETCH_ASSOC);
			
			if($stmt->rowCount() == 1){
				if(password_verify($upass , $row['suacolunasenha'])){
					$_SESSION['suasession'] = $row['suacolunaID'];
					return true;
				} else {
					return false;
				}
			} else {
				return "email not found";
			}		
		}catch(PDOException $ex){
			echo $ex->getMessage();
		}
	}
	
	
    public function logado(){
		if(isset($_SESSION['suasession'])){
			return true;
		}
	}
	
	public function deslogar() {
		session_destroy();
		$_SESSION['suasession'] = false;
	}
}

index.php

<?php

session_start();

require_once("classUser.php");

$user_login = new Login();

if(isset($_POST['login'])){
  $email = str_replace(" " , "" , $_POST['email']);
  $upass = $_POST['pass'];
  $check_login = $user_login->logar($email,$upass);
  if($check_login){
    echo "logged";
  }else{
    echo "loggin invalid";
  }
}
/*
Para cadastrar os usuários use o password_hash(), é mais seguro do que usar MD5
$senha = "alalalululu";

echo password_hash($senha , PASSWORD_DEFAULT);

*/


?>
<form method="post">
  <input type="text" placeholder="Email" name="email" class="form-control"><br>
  <input type="password" placeholder="Senha" name="pass" class="form-control"><br>
  <button data-dismiss="modal" type="submit" name="login" class="btn btn-primary">login</button>
</form>

em connection.php:

Faça as alterações com os dados do seu banco

em classUser.php:

coloca suas colunas de email, senha e id de usuário, e nomeie a session com o nome que você quiser.

em index.php

não altere nada, apenas faça os testes e adaptações depois.

 

Observação:

Quando você for fazer os testes, o usuário que você tentar efetuar o login precisa estar com a senha hasheada com password_hash() na coluna da sua senha na sua tabela, igual eu deixei comentado no index.php, pq na classe Login no método Logar() o password_verify() vai fazer a validação da senha.

 

Agora coloca em alguma pasta aí no seu servidor, faça os testes pra você aprender o funcionamento e poder fazer adaptações que for necessárias nele.

 

Se der algum b.o avisa, pq testei aqui e rodou normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No index tu colocou 

 

require_once("classUser.php");

Que classUser.php é essa?

 

Não entendi bem como funciona esse password_hash() ... eu teria que substituir onde? isso? $senha = $_POST['senha'];

 

Como iria ficar?

 

Obrigado pela ajuda amigo 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
×

Informação importante

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