Mas, se você for rodar na sua máquina, certamente vai ter 5 hash diferentes. Nesse ambiente, como é possível autenticar? Eu não sei, assim vou usar o método da tentativa & erro, até conseguir "entrar no sistema". Desejem sorte para mim.
Tentei definir o campo email como único, mas o MySQL não pemitiu, o máximo permitido para ser campo único é 767 bytes. Então, eu pedi para o PHP não cadastrar ninguém que já tivesse um email já cadastrado. Encontrei um tutorial de autenticação na página Authenticating a user using PDO and password_verify() - Treating PHP Delusions, mas ele também não funcionou. Acredito que o problema é o algorítimo PASSWORD_BCRYPT. Se eu não conseguir nada com ele, vou apelar para o md5. Apesar do meu código não ter funcionado, eu gostei dele, ao invés de ter uma tela de cadastro e outra de autenticação, eu fiz uma tela só para os dois! Veja só:
astudy.php
<?php
$pdo=new PDO("mysql:host=localhost;dbname=astudy","root","");
$username="frank";
$email="frankhosaka@gmail.com";
$pass=password_hash($password="1234",$algo=PASSWORD_BCRYPT,
$options=['cost'=>12])."<br>";
$stmt=$pdo->prepare("select * from users where email=?");
$stmt->execute([$email]);
$user=$stmt->fetch();if(!$user){
$stmt=$pdo->prepare("insert into users (username,email,password)values (?,?,?)");
$stmt->execute([$username,$email,$pass]);header('location:astudy.php');}if($user && password_verify($pass, $user['password'])){
echo "valid!";}else{echo "invalid";}
Depois de estudar o PASSWORD_BCRYPT, eu vi que ele funciona, o que não funciona é o código acima. A variável $pass foi criptografada fora da lógica, quem tem que ser criptografado é a senha que vai ser armazenado no banco de dados. Outra coisa legal é que o PASSWORD_BCRYPT não é coisa do objeto PDO mas do PHP, assim pude montar o código com o mysqli:
astudy.php
<bodystyle="width:500;margin:0 auto"><divstyle=height:10%></div><formmethod=post><p><inputtype=emailname=emailplaceholder=emailrequired><p><inputname=senhaplaceholder=senharequired><p><inputtype=submit></form><?php
if(!isset($_POST['email'])){exit;}
$mysqli=new mysqli("localhost","root","","astudy");
$email=$_POST['email'];
$senha=$_POST['senha'];
$query=$mysqli->query("select * from users where email='$email'");
$user=$query->fetch_assoc();if(!$user){
$pass=password_hash($password=$senha,$algo=PASSWORD_BCRYPT,
$options=['cost'=>12]);
$mysqli->query("insert into users (email,password)values ('$email','$pass')");
header("location:astudy.php");}if($user && password_verify($senha, $user['password'])){
echo "valid!";}else{echo "invalid";}
Pergunta
Frank K Hosaka
Pretendo criar um código para login e autenticação nessa mensagem, espero terminar o serviço em 28/02/2023.
A primeira parte do código é esse:
E o resutado foi esse:
$2y$12$oGdLEGF5UD8EERLYnRwib.1wIh6F2r5NsaeZ4eRXWSv80HxUBk/bW $2y$12$AFZgBxf1d8Er6A4otuQcAeFXUgmTYqDfKj7asXxhXOJ5A0n.xl65e $2y$12$hdTZz8GM6Mn.4S5Uqz7AKuMkbq7QHyOewwHn4w9qhvhD3NN2NXRYa $2y$12$XNuacQ9GNnZI0aC7BEMi0.EAIwe3UKCSqt9wZrROSvGmWgIywGyOe $2y$12$tmlC.q4lVDzHgXOzSAIbJe779UOSa6LQuwhGDhjJtAsXdP03v854O
Mas, se você for rodar na sua máquina, certamente vai ter 5 hash diferentes. Nesse ambiente, como é possível autenticar? Eu não sei, assim vou usar o método da tentativa & erro, até conseguir "entrar no sistema". Desejem sorte para mim.
Tentei definir o campo email como único, mas o MySQL não pemitiu, o máximo permitido para ser campo único é 767 bytes. Então, eu pedi para o PHP não cadastrar ninguém que já tivesse um email já cadastrado. Encontrei um tutorial de autenticação na página Authenticating a user using PDO and password_verify() - Treating PHP Delusions, mas ele também não funcionou. Acredito que o problema é o algorítimo PASSWORD_BCRYPT. Se eu não conseguir nada com ele, vou apelar para o md5. Apesar do meu código não ter funcionado, eu gostei dele, ao invés de ter uma tela de cadastro e outra de autenticação, eu fiz uma tela só para os dois! Veja só:
Depois de estudar o PASSWORD_BCRYPT, eu vi que ele funciona, o que não funciona é o código acima. A variável $pass foi criptografada fora da lógica, quem tem que ser criptografado é a senha que vai ser armazenado no banco de dados. Outra coisa legal é que o PASSWORD_BCRYPT não é coisa do objeto PDO mas do PHP, assim pude montar o código com o mysqli:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.