簡體   English   中英

如果用戶已登錄,如何顯示頁面

[英]How to display a page if the user is logged in

我有一個基本的登錄名,其中的代碼將用戶重定向到頁面(此刻為google.com)。 我如何做才能使重定向到您的頁面僅在用戶登錄后才能訪問(他們不能僅輸入URL並訪問該頁面)。 我了解您必須使用會話啟動,但是已經閱讀了並且無法提出解決方案。

login.php

<?php
error_reporting(E_ALL | E_STRICT);

$servername = "localhost";
$serverUsername = "root";
$serverPassword = "";

// Create connection
$conn = new mysqli($servername, $serverUsername, $serverPassword, "users");

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";


$loginError = "";

if (isset($_POST["submit"])) {
    $username = $conn->real_escape_string($_POST["username"]); 
    $stmt = $conn->prepare("SELECT Password FROM user_logons WHERE Username = ? LIMIT 1"); 
    $stmt->bind_param("s", $username);
    $stmt->bind_result($password);
    $stmt->execute();
    $stmt->fetch();
    $stmt->close();
    if (password_verify($_POST['password'], $password)) { 
        header("Location: https://google.com/");
    }
    else {
        $loginError = "Invalid username or password!";
    }
}

mysqli_close($conn);
?>
<!DOCTYPE HTML>  
<html>
<head>
<style>
    .error {color: #FF0000;}
</style>
</head>
<body>

<h2>Login Test</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Username: <input type="text" name="username">
  <br><br>
  Password: <input type="password" name="password">
  <br><br>
  <input type="submit" name="submit" value="Submit">
  <span class = "error"><?php echo $loginError; ?></span>


</form>
</body>
</html>

login.php

<?php
error_reporting(E_ALL | E_STRICT);

$servername = "localhost";
$serverUsername = "root";
$serverPassword = "";

// Create connection
$conn = new mysqli($servername, $serverUsername, $serverPassword, "users");

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";


$loginError = "";

if (isset($_POST["submit"])) {
    $username = $conn->real_escape_string($_POST["username"]); 
    $stmt = $conn->prepare("SELECT Password FROM user_logons WHERE Username = ? LIMIT 1"); 
    $stmt->bind_param("s", $username);
    $stmt->bind_result($password);
    $stmt->execute();
    $stmt->fetch();
    $stmt->close();
    if (password_verify($_POST['password'], $password)) { 
        session_start();
        $_SESSION["loggedIn"] = "true";
        header("Location: redirect.php");
    }
    else {
        $loginError = "Invalid username or password!";
    }
}
mysqli_close($conn);
?>
<!DOCTYPE HTML>  
<html>
<head>
<style>
    .error {color: #FF0000;}
</style>
</head>
<body>

<h2>Login Test</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Username: <input type="text" name="username">
  <br><br>
  Password: <input type="password" name="password">
  <br><br>
  <input type="submit" name="submit" value="Submit">
  <span class = "error"><?php echo $loginError; ?></span>


</form>
</body>
</html>

redirect.php

<?php
error_reporting(E_ALL | E_STRICT);

session_start();

if(!empty($_SESSION['loggedIn'])) {

?>
<!DOCTYPE HTML>  
<html>
<head>
<style>

</style>
</head>
<body>

<h1>Welcome User<h1>

</body>
</html>

<?php
    }
    else { 
?>

<!DOCTYPE HTML>  
<html>
<head>
</head>
<body>

<h1 align = "center">Unfortunately, you will need to be logged in to view this section!<h1>
<p align = "center">To return to the login page <a href = "login.php">Click Here</a></p>

</body>
</html>
<?php
    }
    session_destroy();

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM