php - md5密码确认失败

标签 php mysql md5

是的,我知道md5不是一个好的选择,我应该使用password_hash(),但我的托管解决方案使用的是php版本5.3.3。无论如何,这绝不应该是生产环境,只是出于培训目的,我很快就会更换提供商。

所以我设置了一些代码,我可以看到我注册的凭据、md5 格式的密码都记录在数据库中。但是,当登录相同的凭据时,我收到我设置的错误消息“无效的电子邮件或通行证”

这是我的代码:

echo 'Current PHP version: ' . phpversion();
include_once("config.php");
session_start();

if(isset($_POST['signup'])){
 $name = $_POST['name'];
 $email = $_POST['email'];
 $pass = md5($_POST['pass']);

$insert = $pdo->prepare("INSERT INTO users (name,email,pass)
values(:name,:email,:pass) ");
$insert->bindParam(':name',$name);
$insert->bindParam(':email',$email);
$insert->bindParam(':pass',$pass);
$insert->execute();
}
 elseif(isset($_POST['signin'])){
 $email = $_POST['email'];
 $pass = $_POST['pass'];

 $select = $pdo->prepare("SELECT * FROM users WHERE email='$email' and pass='$pass'");
 $select->setFetchMode();
 $select->execute();
 $data=$select->fetch();
 if($data['email']!=$email and $data['pass']!=$pass)
 {
  echo "invalid email or pass";
 }
 elseif($data['email']==$email and $data['pass']==$pass)
 {
 $_SESSION['email']=$data['email'];
    $_SESSION['name']=$data['name'];
header("location:aeroplane.php"); 
 }
 }

因此,注册工作正常,然后 else if 签名失败。我在这里错过了什么?

-谢谢

最佳答案

echo 'Current PHP version: ' . phpversion();
include_once("config.php");
session_start();

if(isset($_POST['signup'])){
 $name = $_POST['name'];
 $email = $_POST['email'];
 $pass = md5($_POST['pass']);

$insert = $pdo->prepare("INSERT INTO users (name,email,pass)
values(:name,:email,:pass) ");
$insert->bindParam(':name',$name);
$insert->bindParam(':email',$email);
$insert->bindParam(':pass',$pass);
$insert->execute();
}
 elseif(isset($_POST['signin'])){
 $email = $_POST['email'];
 $pass = md5($_POST['pass']);

 $select = $pdo->prepare("SELECT * FROM users WHERE email='$email' and pass='$pass'");
 $select->setFetchMode();
 $select->execute();
 $data=$select->fetch();
 if($data['email']!=$email and $data['pass']!=$pass)
 {
  echo "invalid email or pass";
 }
 elseif($data['email']==$email and $data['pass']==$pass)
 {
 $_SESSION['email']=$data['email'];
    $_SESSION['name']=$data['name'];
header("location:aeroplane.php"); 
 }
 }

更新了签名代码中的 $pass = md5($_POST['pass']);

您还需要在登录时使用 md5

关于php - md5密码确认失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43559696/

相关文章:

php - Yii2 安装使用 composer 报错

php - 使用 PHP session 并使用 PDO 选择 bool?

MySQL 错误 – 用户超出了 ‘Max_questions’ 资源(当前值 : 1000)

linux - 如何对部分dd图像进行MD5

javascript - 如何让DataTable绘制新的结果?

php - 如何将 IP 地址添加到 MySQL INSERT INTO 数据库代码中?

mysql - 选择上一行数据作为当前行数据

php - 使用 REST Web 服务重构数据库结构不稳定的 PHP 应用程序?

将文本文件转换为 C 字符串 - 使用 md5 进行哈希

javascript - javascript 和 openLDAP 中的 MD5-Hashes 不同