php - 无法使登录页面正常工作

标签 php mysql

我有这个 php 页面,它会向自己发送信息,然后检查天气是否登录某人。我遇到的问题是,如果它登录...那么它仍然显示用户名和密码文本框..但是如果我刷新它们就会消失,现在由于 session 而出现了欢迎的东西。

我想要的是一旦单击提交并且该人登录后立即不显示文本框(用户名,密码)并显示欢迎消息。现在我必须刷新。

请注意,我是 PHP 新手,任何明智的建议将不胜感激。

    <?php 

        echo "<form method=\"post\" action=\"index.php?form_type=$page_vals\">";
        echo "<body>";

        //Start session
         session_start();

       //Check whether the session variable SESS_MEMBER_ID is present or not
       if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {

         extract($_POST);

       $username = "";
       $password = "";
       $userrole = "";
       $userid ="";

       $login_query = "SELECT user_id, user_role, user_username FROM users WHERE user_username = '$_POST[logInUsername]' AND user_password = '$_POST[logInPassword]'";

        if(!($database = mysql_connect("localhost","root","")))
                die("<p>Could not connect to database</p></div></div>
                                 </body>
                                </html>");

            if(!mysql_select_db("mydatabase", $database))
                die("<p>Could not open my databases database</p></div>
               </div>
                                 </body>
                                </html>");

                if(!($result = mysql_query($login_query, $database)))
                {
                    print("Could not execute query!<br/>");
                    die(mysql_error()."</div>
               </div>            
                                 </body>
                                </html>");
                }


            if (mysql_num_rows($result) == 0) {
               print("Please verify your login information<br/>");
                }


            while ($row = mysql_fetch_assoc($result)) {
                  $username = $row["user_username"];
                  $userrole = $row["user_role"];
                  $userid = $row["user_id"];
              }

            echo "Hello - '$username'";
            mysql_close($database);

            session_regenerate_id();

            $_SESSION['SESS_MEMBER_ID'] = $userid;
            $_SESSION['SESS_NAME'] = $username;

            //Write session to disc
            session_write_close();

                   echo '<div id="login" class="login">
        <label for="login">User Name</label>
        <input type="text" name="logInUsername" />
        <label for="Password">Password</label>
        <input type="password" name="logInPassword" />
        <input type="submit" value="Submit" class="button" />
        </div>';
        }
   else 
   {
    $sessionName = $_SESSION['SESS_NAME'];
     echo '<div id="login" class="login">
        <label for="welcome">Welcome '. $sessionName.'!</label>
        </div>';
   }

    ?>

最佳答案

这里的问题只是你的代码不按顺序排列。我已更正,请立即尝试。

<?php 
   session_start();

    echo "<body>";

    //Start session
  //print_r($_SESSION);exit;

   //Check whether the session variable SESS_MEMBER_ID is present or not

     extract($_POST);

   $username = "";
   $password = "";
   $userrole = "";
   $userid ="";
if(isset($_POST))
{
   $login_query = "SELECT reg_id, role_id, f_name FROM registration WHERE f_name = '$_POST[logInUsername]' AND password = '$_POST[logInPassword]'";

    if(!($database = mysql_connect("sunlinux","pukhraj","pukhraj123")))
            die("<p>Could not connect to database</p></div></div>
                             </body>
                            </html>");

        if(!mysql_select_db("testbaj", $database))
            die("<p>Could not open my databases database</p></div>
           </div>
                             </body>
                            </html>");

            if(!($result = mysql_query($login_query, $database)))
            {
                print("Could not execute query!<br/>");
                die(mysql_error()."</div>
           </div>            
                             </body>
                            </html>");
            }


        if (mysql_num_rows($result) == 0) {
           print("Please verify your login information<br/>");
            }


        while ($row = mysql_fetch_assoc($result)) {
              $username = $row["f_name"];
              $userrole = $row["role"];
              $userid = $row["reg_id"];
          }

         $_SESSION['SESS_MEMBER_ID'] = $userid;
        $_SESSION['SESS_NAME'] = $username;
   }
   if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {

        echo "Hello - '$username'";
        mysql_close($database);

        session_regenerate_id();



        //Write session to disc
        session_write_close();

        echo "<form method=\"post\" ><div id=\"login\" class=\"login\">
        <label for=\"login\">User Name</label>
        <input type=\"text\" name=\"logInUsername\" />
        <label for=\"Password\">Password</label>
        <input type=\"password\" name=\"logInPassword\" />
        <input type=\"submit\" value=\"Submit\" class=\"button\" />
        </div>";
        }
   else 
   {
    $sessionName = $_SESSION['SESS_NAME'];
     echo "<div id=\"login\" class=\"login\">
        <label for=\"welcome\">Welcome '$sessionName' !</label>
        </div>";
   }

?>

小改动:

  1. 只需在适当的位置填写表单标签即可。
  2. 切勿在发布之后和发布之前混合代码。
  3. 这里所有数据库内容都应该在提交后执行,因此我将它们包含在条件 if(isset($_POST)) 中
  4. 由于代码的非线性,它在发布数据后再次刷新后会创建 session 。现已更正。

留言:

进行以下更改:

  1. 给出提交按钮的名称 <input type=\"submit\" name=\"submit\" value=\"Submit\" class=\"button\" />

  2. 将第一个 if 条件替换为 if(isset($_POST['submit']))

关于php - 无法使登录页面正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8075405/

相关文章:

mysql - INNER JOIN 与 2 CASE

php - 每次点击图像时 jCarousel 初始化/刷新/重新加载

php - 在 Behat 中配置 Symfony

MySQL选择等于多个值的地方

mysql - 如何在 Java 中为 mysql 查询设置超时?

php - 如果插入数据库的新值与数据库中的值冲突,如何将值更新 1?

php - TCPDF 只打印最后一行

javascript - 如何在 socketio 返回中中继 PHP 函数/变量

php - Laravel 5 获取数据库前缀

mysql - 如何使用外键约束从 2 个表插入 ... SELECT 到 1 个表