入门问题:php连接mysql的用户认证代码,不能按书上的正常实现。

sphinx135 2003-07-04 04:51:56
我的配置是win2000 server sp3平台下apache_2.0.44-win32-x86-no_ssl + php-4.3.1-Win32 + mysql-3.23.56-win
一段连接mysql数据库的代码
<?php
$username = $_POST['user']; //user是接login.htm传来的用户名
$password = $_POST['psw']; //psw是接login.htm传来的用户密码
$connection = @mysql_connect("localhost", "ss", "ss") or die("无法连接数据库!");
@mysql_select_db("master", $connection) or die("选择数据表失败!");
$query = "SELECT username , password FROM masterinfo";
$query .= " WHERE username = '$username'";
echo $query;
$result = @mysql_query($query, $connection) or die("该用户名不存在,数据操作请求失败!");
echo $result;
//@mysql_close($connection) or die("关闭数据库失败!");
while($row = mysql_fetch_array($result))
{
if($row["password"] == $password)
echo "<p><center><font color = red>恭喜您,登陆成功!</font></center>";
else
{
echo "对不起,不能登陆!";
echo "<p><center><a href=login.php>返回重填</a></center>";
}
}
我发现三个问题:
1. 如果代码开头不用$_POST系统变量把传来的用户名和密码转换成本页所用变量名,而
仅用$user和$psw,即直接使用login.htm文件定义的变量名,就不能连接数据库。
echo $query语句返回SELECT username , password FROM masterinfo WHERE username = ''
无论输入任意用户名,返回值总为空。
2. @mysql_connect("localhost","ss","ss")处,如果主机名、用户名、密码任意一个为空
或都为空,同样能连接数据库。
3. 如果在login.htm登录页面中的用户名框和密码框中填入任意数据或都为空,echo $result
语句都能返回一个Resource id,且均为#3。即使用户名与masterinfo表中的用户名字段不一致,
echo $result语句都能返回这个值,而不在前面报错为“该用户名不存在,数据操作请求失败!”。
以上问题困扰了我很长时间,从书中也找不到答案,我不知道是配置有问题,还是数据库定义有问题,
还是php代码有问题。望大虾们指点。
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vitalgg 2003-07-05
  • 打赏
  • 举报
回复
user.user字段值为 % 的项相当于匿名用户.
sphinx135 2003-07-04
  • 打赏
  • 举报
回复
感谢楼上两位的帮助
关于mysql的匿名用户我也知道,但我以为新建了用户名和相应的密码就可以解决了
应该如何解决呢?在mysqladmin里面是看不见匿名用户的。
还有,如果用收费的服务器,数据库名和密码是不是要做相应的改变呢?
否则临时改工作量就太大了。
xuzuning 2003-07-04
  • 打赏
  • 举报
回复
1、正确。这是php为提高安全性的一个举措
2、这是因为你的mysql存在匿名用户
3、$result只是一个指针,若是Resource id则表示有查询结果。注意,空记录集也是结果
检查时用if(mysql_num_rows($result)) == 1) // 有此用户
否则无此用户或用户重名
FlySpace 2003-07-04
  • 打赏
  • 举报
回复
是的 PHP的新版本中已经不再使用 $user,$psw这种直接传递变量的方法了
代之以更安全的 $_REQUEST["user"]

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧