php - 数据库中插入记录成功,但web系统无法识别

标签 php mysql authentication insert

我的网络系统有这个问题。作为管理员,我的目的是注册一些用户,并为其提供用户名密码名字姓氏。我这样做是正确的,因为所有记录都已正确插入。但是,当我尝试以这些用户之一的身份进行访问时,我无法进入,并收到消息“用户名和密码不匹配”。这是我的登录检查代码:

      if (isset($_POST['username']) && isset($_POST['password'])) {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $_SESSION['username'] = $_POST['username']; 
            if ((!$username) || (!$password)) {
                do_html_header('');

                echo '<h3 style="color:#800000;">Please fill in both fields</h3><br><br></br></br>';
                display_login_form();
            }       
            else {
            $sql = mysql_query('SELECT * FROM members WHERE username="'.$_POST['username'].'" AND password=sha1("'.$_POST['password'].'")') or die(mysql_error());
            $login_check_member = mysql_num_rows($sql);
            if($login_check_member > 0) {
                     while($row = mysql_fetch_array($sql)) {
                        $role = $row["role"];
                        $_SESSION['role'] = $role;
                    }
                }
                else { // Run this code if login_check is equal to 0 meaning they do not exist
                do_html_header('');

                echo '<h3 style="color:#800000;">The Username And Password do not match.</h3><br><br></br></br>';
                display_login_form();

                } 

显然,我的 while 循环有问题。但对于通过 wampserver 的 MySql 控制台插入到我的数据库中的用户来说,它确实可以正常工作。仅对于通过网站插入的用户存在该问题。 我用来插入新用户(服务器)的代码部分是:

$username = $_POST['username'];
$password = $_POST['password'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$role = $_POST['role'];


$conn = mysql_connect("localhost", "root", "");
$db=mysql_select_db("buzzcafe" ,$conn);

 //$username= $_SESSION['username'];

if (isset($_POST['username'])) {
 if (isset($_POST['password'])) {
  if (isset($_POST['firstname'])) { 
    if (isset($_POST['lastname'])) { 
        if(isset($_POST['role'])) {

        $insertServer = mysql_query("INSERT INTO servers (username,password,firstname,lastname,role) VALUES('".$username."',sha1('".$password."'),'".$firstname."','".$lastname."','".$role."')")or die(mysql_error());
                echo "<h5 style=color:#800000><i>The server ".$username." is now registered </i></h5>";
                display_manager_menu();
            }

        }
    }
 }
}

请问有什么想法吗?

最佳答案

  1. 查看您插入数据的表(“服务器”)。它与您从(“members”)SELECT 数据的表不同。

  2. 不要使用mysql_query函数,因为它已被弃用。尝试使用PDOmysqli_query相反。

  3. 切勿永远在查询中使用未经过滤的输入。

  4. 尝试为您的登录/注册表单使用更安全的功能(例如 bcrypt 或 password_hash)。看here .

关于php - 数据库中插入记录成功,但web系统无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19084142/

相关文章:

java - 如何创建支持通用 ID(包括自动生成的 ID)的通用实体模型类?

android - 使用给定自定义 api 的 Http Post android 登录

php - 检查变量是否有数字 php

javascript - 如何从 JavaScript 获取变量并将它们放入 MySQL 数据库?

MySQL php 创建仅包含外键的表(错误 150)

java - 为 JSP 创建注销链接

Django : How can we custom login_required decorator?

php - 在 MySQL 问题中连接表 (php)

php - Preg_replace 还是 preg_replace_callback?

java - 插入给问题