首页  >  问答  >  正文

使用会话和会话变量的PHP登录脚本

<p>我刚刚在PHP中完成了一个完整的登录和注册系统,但我的问题是我还没有使用任何会话。我在PHP方面是个新手,以前从未使用过会话。我想要做的是,用户在注册并填写登录表单后,仍然停留在同一页上。因此,页面的一部分将是如果会话已登录,另一部分将是否则(用户未登录,因此显示登录表单)。有人可以告诉我如何入门吗?</p>
P粉726133917P粉726133917448 天前473

全部回复(2)我来回复

  • P粉573809727

    P粉5738097272023-08-22 13:18:23

    这是使用PHP编写的最简单的会话代码。 我们使用了3个文件。

    login.php

    <?php  session_start();   // 使用此函数启动会话
    
    
    if(isset($_SESSION['use']))   // 检查会话是否已存在,如果存在则直接重定向到主页
     {
        header("Location:home.php"); 
     }
    
    if(isset($_POST['login']))   // 检查用户是否点击了登录按钮
    {
         $user = $_POST['user'];
         $pass = $_POST['pass'];
    
          if($user == "Ank" && $pass == "1234")  // 用户名默认为“Ank”,密码默认为1234
             {                                   
    
              $_SESSION['use']=$user;
    
    
             echo '<script type="text/javascript"> window.open("home.php","_self");</script>';            // 登录成功后重定向到home.php
    
            }
    
            else
            {
                echo "无效的用户名或密码";        
            }
    }
     ?>
    <html>
    <head>
    
    <title> 登录页面   </title>
    
    </head>
    
    <body>
    
    <form action="" method="post">
    
        <table width="200" border="0">
      <tr>
        <td>  用户名</td>
        <td> <input type="text" name="user" > </td>
      </tr>
      <tr>
        <td> 密码  </td>
        <td><input type="password" name="pass"></td>
      </tr>
      <tr>
        <td> <input type="submit" name="login" value="登录"></td>
        <td></td>
      </tr>
    </table>
    </form>
    
    </body>
    </html>

    home.php

    <?php   session_start();  ?>
    
    <html>
      <head>
           <title> 主页 </title>
      </head>
      <body>
    <?php
          if(!isset($_SESSION['use'])) // 如果会话未设置,则重定向到登录页面
           {
               header("Location:Login.php");  
           }
    
              echo $_SESSION['use'];
    
              echo "登录成功";
    
              echo "<a href='logout.php'> 退出</a> "; 
    ?>
    </body>
    </html>

    logout.php

    <?php
     session_start();
    
      echo "成功退出";
      session_destroy();   // 销毁会话
      header("Location: Login.php");
    ?>

    回复
    0
  • P粉348088995

    P粉3480889952023-08-22 12:03:57

    开始会话,需要在页面顶部或在调用会话代码之前说这句话

    session_start();

    将用户ID放入会话中以跟踪谁已登录

    $_SESSION['user'] = $user_id;

    检查是否有人已登录

    if (isset($_SESSION['user'])) {
       // 已登录
     } else {
       // 未登录
     }

    找到已登录用户的ID

    $_SESSION['user']

    在您的页面上

    <?php
     session_start();
    
    
     if (isset($_SESSION['user'])) {
     ?>
       已登录的HTML和代码在这里
     <?php
    
     } else {
       ?>
       未登录的HTML和代码在这里
       <?php
     }

    回复
    0
  • 取消回复