登录PHP它不工作[关闭]

Posted

技术标签:

【中文标题】登录PHP它不工作[关闭]【英文标题】:Login PHP it's not working [closed] 【发布时间】:2014-08-08 09:55:35 【问题描述】:

这段代码可以吗?我尝试制作一个 php 登录页面,但它不工作...你能帮帮我吗?以下是php页面的来源。表单是用 ExtJs 编写的。

<?php
$loginUsername = isset($_POST["loginUsername"]) ? $_POST["loginUsername"] : "";
$loginPassword = isset($_POST["loginPassword"]) ? $_POST["loginPassword"] : "";

/*if($loginUsername == "f")
    echo "success: true";
 else 
    echo "success: false, errors:  reason: 'Login failed. Try again.' ";
*/
//Baza de datesession_start();
$conn = mysql_connect("localhost","root","pass");
mysql_select_db("hgr",$conn);
$result = mysql_query("SELECT * FROM utilizatori WHERE username='" . $loginUsername . "' and parola = '". $loginUsername."'");
$row  = mysql_fetch_array($result);
if(is_array($row)) 
echo "success: true";
$_SESSION["userid"] = $row[id];
$_SESSION["username"] = $row[username];
$_SESSION["nume"] = $row[nume];
$_SESSION["casa"] = $row[casa];
$_SESSION["rol"] = $row[nivel_acces];
 else 
echo "success: false, errors:  reason: 'Login failed. Try again.' ";


?>

【问题讨论】:

DB 字段parola 这也是username 还是应该是密码? session_start() and parola = '". $loginPassword ."' 看看 SQL 注入。另外,请发布什么不起作用,您的 html 是什么,错误消息是什么,如果有的话,您得到了什么,您尝试了什么等等。 “它不起作用”不是有效的错误描述。 我更改了@Sven,但仍然无法正常工作 【参考方案1】:

您的代码中有很多错误:

$result = mysql_query("SELECT * FROM utilizatori WHERE username='" . $loginUsername . "' and parola = '". $loginUsername."'");

您在同一个 var 上检查用户名和 parola。 你可能想要:

$result = mysql_query("SELECT * FROM utilizatori WHERE username='" . $loginUsername . "' and parola = '". $loginPassword."'");

你也在影响不带引号的变量:

$_SESSION["userid"] = $row['id'];

也检查一下:

json_encode() 以 JSON 格式发送您的消息,而不是自己编写 mysqli_* 或 PDO 导致您使用的是已弃用的 mysql_* 查询中的 mysql 注入

【讨论】:

我的答案的简单复制粘贴。 我试过了但没用.. @Darren : 我同时在写作 觉得这很难相信,但我不会投反对票。【参考方案2】:

首先,您没有在任何地方设置session_start(),因此您的会话没有被处理/实例化。 将其包含在脚本的顶部即可轻松修复:

session_start();

现在您应该停止编写您的 json 文件,而是使用 json_encode() 创建正确的 json 文件。 这是通过执行以下操作来完成的:

json_encode(array('success'=> false, 'errors' => array('reason' => 'Login failed. Try again.')));

这将返回您想要的 json 字符串:

"success": false, "errors":  "reason": "Login failed. Try again." 

最后一个问题在您的查询中;你有这个:

and parola = '". $loginUsername."'"

应该是:

and parola = '". $loginPassword."'"

注意事项

您应该避免使用 mysql_* 函数,因为它们已被贬值。但是,您应该查看 PDO prepared statementsMySQLi

【讨论】:

我进行了更改,但仍然无法正常工作... 是否有任何错误显示? 唯一的错误是“用户名或密码不正确” @Fred-ii- 如果你收到通知,我就明白你为什么做了你所做的事情。 我解决了!它正在工作!

以上是关于登录PHP它不工作[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

登录php独立工作,但未按预期在网站中[关闭]

登录后返回表单并且不显示用户名[关闭]

如何使用 PHP 制作机器人以登录并在网站上执行操作 [关闭]

这个php登录代码有啥问题? [关闭]

Windows系统登录凭据[关闭]

我的“记住我”php 登录系统有多安全? [关闭]