用PHP登录实现

时间:2017-05-16 06:21:00

标签: php session post

假设我有两个页面login.php和index.php。在index.php中我有两个按钮登录和注册。单击按钮后,用户将被定向到login.php。

如果我想使用PHP实现登录功能,那么与facebook相关的东西,如果用户以前登录过,那么一旦设置了用户名和密码就会绕过索引页面并直接进入登录页面。 $ _SESSION是一种正确的做法。

例如:

   <?php
    session_start();
?><!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Ayu</title>
    </head>
    <body>
<?php if (isset($_SESSION["user"])) { ?>
        <h1>Hi <?php echo $_SESSION["user"]; ?></h1>
        <a href="logout.php">Logout</a>
<?php } else { ?>
        <h1>Login</h1>
<?php echo (isset($_GET["error"])) ? '<p>You idiot!</p>' : ""; ?>
        <form action="new-user.php" method="post">
            <div>
                <label>
                    <strong>Username</strong>
                    <input type="text" name="username" />
                </label>
            </div>
            <div>
                <label>
                    <strong>Password</strong>
                    <input type="password" name="password" />
                </label>
            </div>
            <input type="submit" value="Log In" />
        </form>
<?php } ?>
    </body>
</html>

在登录功能中,我设置了$ _SESSION值

<?php
    session_start();
    if (count($_POST))
        if ($_POST["username"] == "ayu" && $_POST["password"] == "shee") {
            $_SESSION["user"] = "Ayushi";
            header("Location: ./");
        } else {
            unset($_SESSION["user"]);
            header("Location: ./?error");
        }
?>

2 个答案:

答案 0 :(得分:4)

是使用和创建($_SESSION)会话是检查登录用户的正确方法。

  

$_SESSION是一个“超全球”或自动全局变量。这个   只是意味着它在整个脚本的所有范围内都可用。   没有必要做全局$变量;在功能中访问它   或方法。

检查页面顶部的会话,如果发现重定向到索引,则返回登录页面。

if(!isset($_SESSION['login_user'])){
      header("location:login.php");
   }

在php Here

中使用我的sql参考这个简单的登录示例

修改

根据OP的要求 - 如果您想根据会话值隐藏index.php页面中的特定部分,或者说用户是否已登录,可以这样做:

<?php
if(isset($_SESSION['login_user'])){
?>
<form>
   <input type="submit" name="whatever" />
   <!-- Other Fields -->
</form>
<?php
}
?>

上述代码中的Html表单仅在用户登录时显示,否则将被隐藏。

答案 1 :(得分:0)

是的,Session是实现相同的最佳方式。您可以使用以下PHP代码来解决您的问题

<?php
    session_start();
    if (!empty($_POST))
        if ($_POST["username"] == "ayu" && $_POST["password"] == "shee") {
            $_SESSION["user"] = "Ayushi";
            header("Location: ./");
        } else {
if($_SESSION["user"]!=''){
            unset($_SESSION["user"]);
}
            header("Location: ./?error");
        }else{
/* Write code for form */
}
?>