php - 如何解决我的登录问题?

标签 php mysqli login error-handling

我已经成功创建了一个注册表单,它工作正常。但是我的登录系统显示错误,我无法弄清楚。每当我使用登录时,即使我使用完全相同的用户和密码,它也会在 URL 中显示 login==empty。

<?php
session_start();
include 'conn.php';
 if (isset($_POST['submit'])) {

      $uid=mysqli_real_escape_string($conn,'$_POST["firstname"]');
      $pwd=mysqli_real_escape_string($conn,'$_POST["password"]');
      if ($uid==""||$pwd=="") {
         header("Location:../triallogin.php?login=empty");
            exit();
      } else{
        $sql="SELECT * FROM comments WHERE first='$uid'";
        $result=mysqli_query($conn,$sql);
        $resultcheck=mysqli_num_rows($result);
         if ($resultcheck<1) {
            header("Location:../triallogin.php?login=empty");
            exit();
         } else{
            if ($row=mysqli_fetch_assoc($result)) {
                //De-hasing of password
                $hashedpassowrd=password_verify($pwd,$row['pwd']);
                if ($hashedpassowrd==false) {
                    header("Location:../triallogin?login=wrongpassword");
                } elseif ($hashedpassowrd==true) {
                    $_SESSION['first']=$row['first'];
                    $_SESSION['last']=$row['last'];
                    header('Location:../triallogin.php?login=success');
                    exit();
                }
            }


         }  
      }
 } else {
    header('Location:../triallogin.php?login=hit');
    exit();
 }

最佳答案

三件事。

您已将帖子变量作为字符串:

$uid=mysqli_real_escape_string($conn,'$_POST["firstname"]');
$pwd=mysqli_real_escape_string($conn,'$_POST["password"]');

将其更改为:
$uid = mysqli_real_escape_string($conn, $_POST["firstname"]);
$pwd = mysqli_real_escape_string($conn, $_POST["password"]);

其次,您试图从 comments 获取您的用户登录详细信息。 table ?这不可能。
$sql="SELECT * FROM comments WHERE first='$uid'";

可能将其更改为 users表,或任何你称之为的东西。

最后,您的 SQL 容易受到 SQL 注入(inject)攻击。解决方法是使用准备好的语句并绑定(bind)参数。

我建议在 mysqli 上使用 PDO,这可能是解释原因的最佳文章之一,请阅读! https://phpdelusions.net/pdo

关于php - 如何解决我的登录问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50738073/

相关文章:

php - 文件和文件夹属性 - 编程 API

php - 如何在 Twig 中使用 PHP 模板引擎而不是 Silex 中的 Twig 语法

php - mysqli_connect 延迟

php - 简单的 Mysqli 更新查询不起作用

php - 如何从映射中指定数组键

php - Laravel-代客404未找到

php - 将错误写入日志文件 - PHP mySql

php - NTLM 身份验证 - 在 PHP 中获取 Windows 登录名、域和主机

ASP.NET:用户将不会保持登录状态超过30分钟

asp.net - 处理搜索和登录页面的 Enter 键