[英]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.