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

2 horas atrás, Thiago Duarte disse:

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 

Essa é a classe do login, poem o nome do arquivo onde ta a classe Login que te passei "classLogin.php".

Sobre o password_hash, você só teria que adicionar password_hash() na hora do REGISTRO do usuário. aí ficaria dessa forma:

$senha = password_hash($_POST['senha'] , PASSWORD_DEFAULT);

na hora do LOGIN do usuário não precisa usar password_hash, usa só:

$senha = $_POST['senha']

Pq a partir daí quem vai fazer a verificação é a password_verify(), que está no método Logar(). Pode reparar que na index.php eu passo a senha "pura" no método logar: $user_login->logar($email,$upass), aí quem faz a validação na senha lá dentro é a password_verify.

 

Sobre $_POST['pass'] aí embaixo, ele não vai puxar a "pass" do seu banco de dados, ele ta puxando "pass" do formulário que ta ali embaixo na index.php pra enviar pra validação no método logar, você pode ver lá no começo da index.php o que eu faço com $upass, eu passo ele pra $user_login->logar($email , $upass) pra fazer a validação.

 

1 hora atrás, Thiago Duarte disse:

No seu exemplo tem isso? 


$upass = $_POST['pass'];

não existe no meu banco de dados campo chamado "pass"

 

A partir do momento que você passar a entender o funcionamento desse código, já era, você consegue adaptar ele em qualquer site de forma simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha senha fica da forma que cadastrei... exemplo: 1234567 no banco fica: 1234567

 

queria cadastrar 1234567 e ficar algo parecido com: C7Dq$?u)cc`*`#Zf

 

Isso "password_hash" na hora do cadastro que faz ficar dessa forma? 

$senha = password_hash($_POST['senha'] , PASSWORD_DEFAULT);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente, na hora do cadastro quando usar o password_hash a sua senha vai ficar dessa forma como você deu de exemplo, só que vai ficar um pouco maior, vai ficar assim:

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

Usa password_hash somente na hora do cadastro, depois não precisa. Pra fazer a verificação da senha, você usa assim:


$senha_via_formulario = "aloalolululu123"; // senha que o usuário preencheu no form pra fazer login

$senha_que_esta_no_banco = $row['pass']; // senha do seu banco

 

if(password_verify($senha_via_formulario , $senha_que_esta_no_banco)){

 echo "opa, entrei";

} else {

echo "ops, dados incorretos";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fui fazer daquela forma que você me disse pra cadastrar e deu erro haha

<?php
$servidor = 'localhost'; 
$banco    = 'tutorialloginphp'; 
$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();
}

$email = $_POST['email'];
$senha = password_hash($_POST['senha'] , PASSWORD_DEFAULT);

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

?>

Coloquei isso $senha = password_hash($_POST['senha'] , PASSWORD_DEFAULT); 

no lugar de $senha = $_POST['senha'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei aqui o código e ta funcionando normalmente, após o cadastro ele redireciona pra welcome.php e o password_hash ta registrando a senha. Qual erro apareceu pra você?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 21/12/2017 at 23:41, BrunoMs disse:

Testei aqui o código e ta funcionando normalmente, após o cadastro ele redireciona pra welcome.php e o password_hash ta registrando a senha. Qual erro apareceu pra você?

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente a versão do seu PHP é  inferior à versão 5.5 e o password_hash e password_verify só estão disponíveis na versão 5.5. Abre algum arquivo aí no seu servidor e dá um echo nisso aqui pra você ver a versão atual do seu PHP:

echo phpinfo();

O meu por exemplo é esse: PHP Version 5.5.12

Quando você der o echo aí vai aparecer no topo a versão atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 25/12/2017 at 03:42, BrunoBit disse:

Então é isso mesmo, é só atualizar pro 5.5 ou superior que o password_hash e password_verify vão funcionar normalmente.

 

Como faço pra atualizar?

 

Quando o subir meus arquivos pro servidor também não vão funcionar se o PHP do servidor estiver desatualizado?

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 minutos atrás, Thiago Duarte disse:

Como faço pra atualizar?

 

Geralmente os servidores de hospedagem tem uma sessão pra selecionar a versão do PHP na hospedagem, aí é só você alterar pra 5.5 ou superior.

 

17 minutos atrás, Thiago Duarte disse:

Quando o subir meus arquivos pro servidor também não vão funcionar se o PHP do servidor estiver desatualizado?

 

Isso, se for inferior à 5.5 não vai funcionar o password_hash e nem o password_verify, mas hoje em dia é recomendável usar a versão 5.5 ou superior, quanto mais atualizado melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa, então não tem como usar md5 pra criptografia para não ter esse tipo de problema? num funciona com versão mais antiga do PHP?

 

Obrigado pela ajuda amigo :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim, é só tirar o password_verify() lá da classe login que te passei.

Troca isso:

if(password_verify($upass , $row['suacolunasenha'])){

Por isso:

if(md5($upass) == $row['suacolunasenha']){

Na hora de fazer o login é só fazer assim:

$email = $_POST['email'];
$upass = $_POST['pass'];

$user_login->logar($email,$upass);

O "problema" é que pra logins o password_verify/password_hash é muito mais recomendável e muito mais seguro, mas aí vai de você e da sua necessidade, se quiser passar pra md5 é só alterar essas linhas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 30/12/2017 at 18:43, Thiago Duarte disse:

Poxa, então não tem como usar md5 pra criptografia para não ter esse tipo de problema? num funciona com versão mais antiga do PHP?

 

Obrigado pela ajuda amigo :)

 

Mau lhe pergunte.. Porque tanta preocupação na segurança de senha uma vez que quer utilizar uma versão anterior a versão 7 do php?

Como o bruno disse atualize seu sistema, e sem dúvida nem pense em nada abaixo do PHP 7

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 30/12/2017 at 14:55, BrunoBit disse:

Tem sim, é só tirar o password_verify() lá da classe login que te passei.

Troca isso:


if(password_verify($upass , $row['suacolunasenha'])){

Por isso:


if(md5($upass) == $row['suacolunasenha']){

Na hora de fazer o login é só fazer assim:


$email = $_POST['email'];
$upass = $_POST['pass'];

$user_login->logar($email,$upass);

O "problema" é que pra logins o password_verify/password_hash é muito mais recomendável e muito mais seguro, mas aí vai de você e da sua necessidade, se quiser passar pra md5 é só alterar essas linhas.

 

Se eu quiser no cadastro definir "cliente" e "designer" e colocar no botão input radio  "1" para cliente e "2" para designer

 

Na pagina inicial queria colocar o menu diferente no topo diferente dos dois, como faço isso?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • 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
×

Informação importante

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