这段代码好吗?我尝试制作一个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.' }}";
}
?>
答案 0 :(得分: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 statements
和MySQLi
。
答案 1 :(得分:2)
您的代码中有很多错误:
$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'];
同时检查: