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, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • 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
×

Informação importante

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