簡體   English   中英

會話在第三頁PHP中過期

[英]session get expired in the third page PHP

我的問題是會話在頁面之間(在第三頁中)過期,或者當我刷新時,即第一頁

<?php
session_start();

if(empty($_POST['username']) || empty($_POST['password']))
{
    $this->HandleError("Missing username or password");
    return false;
}

$username = stripslashes($_POST['username']);
$password = stripslashes($_POST['password']);

$con = mysqli_connect('127.0.0.1' , 'root' , '' , 'Mini');

if (mysqli_connect_errno()) 
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$query = " SELECT * FROM User WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($con , $query);
$count = mysqli_num_rows($result);

if($count == 1)
{
    $_SESSION["username"] = $username;
    $_SESSION["login"] = 1;
    header("location:HomePage.php");
} else {
    session_destroy();
    header("location:Welcome.php");
    echo "Wrong username or password";
}
mysqli_close($con);
 ?>

第二個 :

<?php 
session_start();

if (!(isset($_SESSION["login"]))) 
{
    header ("Location: Welcome.php");
    exit();
}
?>

<!DOCTYPE html>
<html>
    <head>
        <link type="text/css" rel="stylesheet" href="Welcome.css"/>
        <title>eShop Hompage</title>
    </head>
    <body>
        <header>
            <div id="right-corner">
                <img id="logo" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQWgR8v763Veku3oLPsw7mqU7bKpSVu2nSXfMPZA8RrxEiDoRuF_Q">
                <p id="p1">eShop</p>
                <p id="p2">your virtual shop</p>
            </div>
            <div id="welcome">
                <h3>Welcome <?php echo $_SESSION["username"]; ?> </h3>
            </div>
            <a href="Edit.php">Edit info</a>
            <a href="Welcome.php">Logout! <?php session_destroy(); ?></a>
        </header>
        <hr style="margin-top:45px;">
        <div class="items">
            <?php
                $con = mysqli_connect('127.0.0.1' , 'root' , '' , 'Mini');
                if (mysqli_connect_errno()) 
                {
                    echo "Failed to connect to MySQL: " . mysqli_connect_error();
                }
                $query = "SELECT * FROM Item";
                $result = mysqli_query($con , $query);
                while ($row = mysqli_fetch_array($result)) 
                {
                    echo "<img src=".$row['pic']."/>";
                    echo "<p>".$row['name']."</p>";
                    echo "<p>".$row['price']."$"."</p>";
                    if($row['quantity'] > 0)
                    {
                        $id = $row['id'];
                        $link = "Buy.php?item=".$id;
                        echo "<a href=".$link.">Buy</a>";
                    } else {
                        echo "Sold out!";
                    }
                    echo "<br>";
                    echo "<br>";
                    echo "<br>";
                }

             ?>
        </div>
    </body>
</html> 

問題出在我轉到第三頁時,如果我注銷並且會話過期,它就會起作用:

<?php 
session_start();

if (!(isset($_SESSION["login"]))) 
{
    header ("Location: Welcome.php");
    exit();
}
?>

<!DOCTYPE html>
<html>
    <head>
        <link type="text/css" rel="stylesheet" href="Welcome.css"/>
        <title>eShop Hompage</title>
    </head>
    <body>
        <header>
            <div id="right-corner">
                <img id="logo" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQWgR8v763Veku3oLPsw7mqU7bKpSVu2nSXfMPZA8RrxEiDoRuF_Q">
                <p id="p1">eShop</p>
                <p id="p2">your virtual shop</p>
            </div>
            <div id="welcome">
                <h3>Welcome <?php echo $_SESSION["username"]; ?> </h3>
            </div>
            <a href="Edit.php">Edit info</a>
            <a href="Welcome.php">Logout! <?php session_destroy(); ?></a>
        </header>
        <h5>Are you sure you want to buy?</h5>
        <?php
                $con = mysqli_connect('127.0.0.1' , 'root' , '' , 'Mini');

                if (mysqli_connect_errno()) 
                {
                    echo "Failed to connect to MySQL: " . mysqli_connect_error();
                }
                $id = $_GET['item'];
                $query = "SELECT * FROM Item WHERE id = '$id'";
                $result = mysqli_query($con , $query);
                $row = mysqli_fetch_array($result);
                $name = $row['name'];
                echo "<p>".$name."</p>";
                echo "<img src=".$row['pic']."/>";
        ?>
        <a href="HomePage.php">Yes 
            <?php 
                $con = mysqli_connect('127.0.0.1' , 'root' , '' , 'Mini');

                if (mysqli_connect_errno()) 
                {
                    echo "Failed to connect to MySQL: " . mysqli_connect_error();
                }
                $id = $_GET['item'];
                $quantity = $_GET['quantity'];
                $query = "UPDATE Item SET quantity = quantity - 1  WHERE id = '$id'";
                mysqli_query($con , $query);
             ?>
            </a>
        <a href="HomePage.php">Cancel</a>
    </body>
</html>

問題出在您的代碼@第二頁中:

<a href="Welcome.php">Logout! <?php session_destroy(); ?></a>

您正在破壞會話,因此在會話中進行第三次運行時不存在。

我認為您想要的是實際的第四頁(稱為logout.php),其中將包含session_destory()部分並將第二頁和第三頁的注銷更新為:

<a href="logout.php">Logout!</a>

暫無
暫無

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

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