Ir para conteúdo

POWERED BY:

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 violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

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