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

sphinx135 sphinx135 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我的配置是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代码有问题。望大虾们指点。
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
sphinx135
基础编程 21,889 成员 140,329 内容