【发布时间】:2011-05-25 09:14:44
【问题描述】:
不是我想问的问题,但我真的需要另一双眼睛,因为它一定是我想念的一些愚蠢的东西。
我以前使用过相同的脚本,所以我不知道出了什么问题。
这是前端结束代码:http://jsfiddle.net/fU3Q3/1/
而后端PHP是:
<?php
require("../db.php");
// get the posted values
$email=$_POST['email'];
$password=$_POST['password'];
// now validating the username and password
$sql="SELECT * FROM admin WHERE email='".$email."'";
$result=mysql_query($sql) or die ("No such username exists!");
$row=mysql_fetch_array($result);
// if username exists
if(mysql_num_rows($result)>0)
{
// compare the password
if(strcmp($row['password'],$password)==0)
{
echo "yes";
// set the session from here
$_SESSION['email']=$email;
}
else
echo "no";
}
else
echo "no"; // invalid Login
?>
使用 firebug,发送到 ajax-login.php 的 url 似乎是 email=&password=&rand=0.636999888626322 显然最后的位是随机数。
非常感谢任何帮助。
马丁
【问题讨论】:
-
另外:您忘记了数据库输入转义。
-
这里还有一些您需要在生产前更改的内容。密码至少应该存储为哈希,你的会话应该被加密,会话也应该包含足够的信息来比较每个页面加载时的登录,以确保它们没有被劫持,你的 num_rows() 应该比较为 1 不 > 0 为唯一的电子邮件字段添加另一层强制执行(尽管这应该在很久以前在用户注册时进行检查)
-
这仅适用于我正在修改的个人网站,但我同意将密码存储为 md5 和
>0是==1。我不确定你是如何加密会话的?