【问题标题】:PHP MYSQL verify user from table and set SESSION 'username'PHP MYSQL 从表中验证用户并设置 SESSION 'username'
【发布时间】:2014-11-05 22:41:23
【问题描述】:

我有一个论坛页面,并希望使用预定义的 mysql 用户表中的用户名进行简单的用户登录。我使用来自论坛的login.php 表单文件链接,获取$_POST 用户名,然后使用调用函数的login_handle.php 文件连接到数据库,查询用户数组,并尝试验证@987654325 @username 在查询列表数组中。

函数如下,然后在login_handle.php 中调用我遇到各种错误,不知道这是否是一个好方法。我还想在表单和验证期间启动一个会话,该会话可以将$_POST 用户名作为$_SESSION 用户名并应用于后续论坛页面。

    function isUsername($username){ //Test if proper Username from array.   
            $query = "SELECT username FROM users";
            $result = mysql_query($query);  
            $usernames = mysql_fetch_assoc($result);
            $isUname = true;

            if(!in_array("username", $usernames)) {
                echo "Please enter valid user name.<br>";
                    $isUname = false;
                    } //Search for proper username in username array.

                    return $isUname;

            }
------------------handler call-----------
            $username = $_POST["username"];
            $password = $_POST["password"];

                if(isUsername($username)==true){ // Check if username is valid.

                //$Uname = $_SESSION['username'];
                //echo "Username = " . $Uname;  
                echo '<a href="../fourm.php">go to forum</a>';
                }

【问题讨论】:

  • 欢迎来到 S.O.我建议您重写/编辑您的问题并具体说明您的问题。请阅读:stackoverflow.com/help/how-to-ask
  • Tnx 表示欢迎。我是一个新手,并尽我所能提出一个经过深思熟虑的信息问题。我可能功亏一篑。
  • 没问题,我认为这里更好的思考方式是:帮助我们帮助你。想想那些回答陌生问题的人以帮助和学习。

标签: php mysql function session


【解决方案1】:

首先,不推荐使用 mysql。请使用mysqli。

其次,你为什么不使用类似...

function isUsername($username){   
        $query = "SELECT username FROM users WHERE username == '" . $username . "'";

第三:你搜索和研究了吗? 这类问题随处可见。

【讨论】:

  • Tnx 的回复,我已经研究过了。作为一个新手,很难知道如何提出正确的问题,但我会尽力而为。
【解决方案2】:

虽然很简单,但您需要从 $_POST 查询特定的用户名,而不是整个用户表。 我认为请求行数(幻影数是获取用户是否在数据库中的好方法,您可以使其更大(>=)而不是一个用户条件(==))。

function isUsername($username){ //Test if proper Username from array.   
        $query = "SELECT username FROM users where username='$username'";
        $result = mysql_query($query);  
        $rows = mysql_num_rows($result);
        $isUname = true;

        if($rows==1) {
               $isUname = true;
         }else{
            echo "Please enter valid user name.<br>";
                $isUname = false;
         }
                return $isUname;

}

当我手动将一个 txt 数组分配给一个变量 $username 进行比较时,我使用了几乎相同的函数。现在我正在使用用户表,我只想将查询用户的数组(认为 mysql_fetch_assoc($result) 创建相同类型的关联数组)分配给 $username 而不是之前使用的硬复制元素.查询生成的数组是否不同于 $usernames=array("jes34","pes22","jis44","jll124");这阻止我这样做?

    function isUsername($username){ //Test if proper Username from array.
        $usernames=array("jes34","pes22","jis44","jll124");

        $isUname = true;            
        if(!in_array($_POST["username"], $usernames)) {
            echo "Please enter valid user name.<br>";
                $isUname = false;
                } //Search for proper username in username array.

                return $isUname;
        }

-----函数调用--- if(isUsername($username)==true){ 做某事}

【讨论】:

  • 我认为在函数内部打印“回声”或计算返回的行数不是一个好主意,但无论如何,这不是一个好问题。
猜你喜欢
  • 2013-07-06
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多