登录PHP它不能正常工作

时间:2014-06-18 07:49:51

标签: php mysql session post

这段代码好吗?我尝试制作一个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.' }}";
}

?>

2 个答案:

答案 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 statementsMySQLi

答案 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'];

同时检查:

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