2010-05-25 97 views
0

尝试写一张支票的登录脚本来查看这个用户名可用。基本登录脚本使用PHP和MySQL查询

会写这个查询的最好方法是检查

如果isset(!_ POST [])的两个值(Nick和传递)

然后连接到数据库

WHERE MySQL的数据库中usernick要求,如果存在usernick

评估是否isset($ ID),看看用户名

返回用户ID取

,并用它来继续创建条目

这是否逻辑听起来像一个方法来检查的登录,而无需使用过多的代码

抱歉没有张贴的代码,它是另一台计算机上并且此计算机通过我的工作管理员锁定了下来...

此外,有另一种方式,如果在数据库中存在的值来评价?

例如,而不是将$ id设置为mysql数据库的返回值,我可以ping通mysql数据库的信息,并让它返回一个布尔结果,所以我不放出任何用户信息。

谢谢, 马特

回答

2

你可以这样做:

SELECT NULL FROM <Table> WHERE <Conditions> 

当你运行你的查询,如果你得到一个行/列,那么你的条件得到满足,如果你得到0行,那么他们不这样做(所以不管你正在寻找不存在)。

正如鲍里斯所提到的,不要忘了净化你的投入!

什么这个查询是应该做的,是一个NULL值返回行,如果你在你的标准找什么是满足。也就是说,例如你做:

SELECT NULL FROM Users WHERE Name = 'something'; 

,你会得到:

| NULL | 
1 row(s) returned. 

这意味着,与该名称的用户存在,另一方面,你会得到:

0 rows returned. 

这意味着它不存在。

在PHP中,你可以很容易地使用mysql_num_rows($ result)来测试这个,如果你得到0行,那么你的用户不存在。

这当然是唯一有用的,如果你只是测试的东西的存在,如果你真的需要的信息,你需要做一个正常的查询。

+0

好吧,我通过SQL壳试过你的方法,看看它会返回... 什么是真正回到了查询?这个WHERE评估的行数是否为真? 啊,我忘了提及,我正在离开卫生设施,直到我写得更好......出于某种原因,它让我困惑于所有额外的代码,这更具可读性。 当我完成我的项目写作时,我将清理用户输入。 – Matt 2010-05-25 22:13:26

+0

让我编辑答案。 – 2010-05-25 22:17:17

+0

你完全回答了我的问题,谢谢你和鲍里斯!:) – Matt 2010-05-25 22:38:24

0

你可以只SELECT username WHERE username LIKE $username(不要忘了消毒和过滤$username之前在查询中使用它)。

然后使用$result = mysql_fetch_array($query);count($result);

如果count($result)是等于0或为空,然后,有在数据库中没有这样的用户名。

0

试试这个。

$username = $_POST['username']; 
$password = $_POST['password']; 

$result = mysql_query("SELECT * from <table name> WHERE username = $username AND password = $password", $connection); 

$row = mysql_fetch_array($result); 

if(mysql_num_rows($row) == 1) //assuming username, password pair is unique 
echo "Login Successful"; 
else 
echo "Login Unsuccessful";