入门问题:php连接mysql的用户认证代码,不能按书上的正常实现。
我的配置是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代码有问题。望大虾们指点。
一段连接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代码有问题。望大虾们指点。
...全文
相关推荐
PHP书上的许愿墙项目源码
**数据库设计**:项目可能包含一个MySQL数据库,存储用户的愿望信息,如愿望内容、用户名、发表时间等。
构建PHP和MySQL用户认证登录系统
密码在存储之前通常会使用加密算法进行加密处理,以防止数据库泄露时用户的密码被直接读取。当前较为常见的加密算法有和,这两个函数分别用于生成密码的哈希值和验证密码的哈希值。会根据提供的算法选项,生成安全的随机盐(salt),并将盐与密码结合生成最终的哈希值。
html 中php mysql 完美实现连接
本教程将详细讲解如何通过PHP和MySQL实现这种连接,以及如何读取并显示数据库中的信息。首先,我们需要理解PHP、HTML和MySQL各自的角色。
php连接mysql数据库代码
**处理错误**:在描述中的第二段代码中,使用了`@`符号来抑制错误报告。这是一个错误控制运算符,可以防止错误消息显示在页面上。然而,这种方式并不推荐,因为它可能导致问题难以调试。
php连接不上mysql但mysql命令行操作正常的解决方法
- **权限问题**:检查MySQL用户是否有从PHP运行的主机连接的权限。可以通过`GRANT`语句在MySQL中添加权限。


基础编程
