QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 680|回复: 0

php连接mysql的用户认证代码问题。

[复制链接]
发表于 2003-7-4 16:41:30 | 显示全部楼层 |阅读模式
   我的配置是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 uname , password FROM masterinfo";
    $query .= " WHERE uname = '$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 uname , password FROM masterinfo WHERE uname = ''
    无论输入任意用户名,返回值总为空。
2. @mysql_connect("localhost","ss","ss")处,如果主机名、用户名、密码任意一个为空
    或都为空,同样能连接数据库。
3. 如果在login.htm登录页面中的用户名框和密码框中填入任意数据或都为空,echo $result
    语句都能返回一个Resource id,且均为#3。即使用户名与masterinfo表中的用户名字段不一致,
    echo $result语句都能返回这个值,而不在前面报错为“该用户名不存在,数据操作请求失败!”。
以上问题困扰了我很长时间,从书中也找不到答案,我不知道是配置有问题,还是数据库定义有问题,
还是php代码有问题。望大虾们指点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 13:36 , Processed in 0.053301 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表