繁体   English   中英

PHP登录代码错误与mysql_query()

[英]PHP login code error with mysql_query()

我一直在关注登录系统教程。 你可以在这里找到它。 C#和PHP的编码分为2部分。 C#部分工作正常,但我的PHP部分返回错误。 这是我的PHP代码:

<?php

    $servername = getenv('IP');
    $username = getenv('C9_USER');
    $passwordp = "";
    $database = "game_database";
    $dbport = 3306;

    // Create connection
    mysql_connect($servername, $username, $passwordp, $dbport)or die("Cant Connect to server");
    mysql_select_db($database) or die("Cant connect to database");
    // Check connection


$Email = $_REQUEST["Email"];
$Password= $_REQUEST["Password"];

if (!$Email || !$Password){
    echo"Email or password must be used";
}
else{
    $SQL = "SELECT * FROM 'users' WHERE Email = '"  . $Email ."'";
    $result_id = @mysql_query($SQL) or die("Database Error");
    $Total = mysql_num_rows($result_id);
    if ($Total){
        $datas = @mysql_fetch_array($result_id);
        if (strcmp($Password, $datas["Password"])){
                    $sql2 = "SELECT Characters FROM users WHERE Email = '" . $Email ."'";
                    $result_id2 = @mysql_query($sql2) or die("Database Error!!!");
                    while ($row = mysql_fetch_array($result_id2)){
                        echo $row ["Characters"];
                        echo ":";
                        echo "Success";
                    }
        }
        else{
            echo "WrongPassword";
        }
        }else {
            echo "NameDoesNotExist";
        }
    }

?>

看来错误来自$ result_id,但我不确定吗?

没错,错误来自$result_id ,因为您的SQL语句有问题,并且还有其他要修复的东西。

您已将users表放在两个单引号中,这是错误的。

您的代码是:

$SQL = "SELECT * FROM 'users' WHERE Email = '"  . $Email ."'";

应该没有引号:

$SQL = "SELECT * FROM users WHERE Email = '"  . $Email ."'";

您已经写道:

if ($Total){

它应该检查找到了多少个用户记录,通常应该只找到1条记录并返回1,因此将其更改为:

if ($Total == 1){

注意1:但是,这并不意味着代码是完美的,您应该进一步开发代码以满足当今的要求。 我建议您考虑使用密码散列,在mysql和输入敏感度中使用mysqli或PDO。 我建议您查看此链接,它描述了我提到的一些内容。

注意2:我能够使用mysqli / PDO等为您编写一个完整的解决方案,但我只想指出到目前为止在代码中发现的错误,以便您可以从错误中学习并发展自我。

一般而言,请阅读有关安全原则的内容,请查看此页面

链接1: http//www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL

链接2: https ://www.owasp.org/index.php/类别: OWASP_Top_Ten_Project

这是创建用户登录的另一种简单方法,它比当前的登录方式更安全。 并且您应该保护代码免受sql注入。

<?php
if (isset($_POST['email'], $_POST['password']) === true )
{
    require 'connection.php';

    $email = mysqli_real_escape_string($connection,$_POST['email']);
    $password = mysqli_real_escape_string($connection,$_POST['password']);

    $sql = "SELECT * FROM users WHERE email= '$email'";
    $result = mysqli_query($connection,$sql);

    if (mysqli_num_rows($result))
    {
        if( $email == $row['email'] && $password == $row['password'])
        {                         //use session to check if user is logged in
            if (!isset($_SESSION['loggedin'])) 
            {
                //you can set session of user's log in details
                //you can redirect to user profile
            } 
            else 
                //already log in, redirect to user profile
        }
        else 
            echo "Incorrect Email or Password.";
    }
    else
        echo "Incorrect Username or Password.";
    mysqli_close($connection);
}
else
{
    echo "Oops, something went wrong!";
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM