簡體   English   中英

如何在 php 登錄成功時重定向或更改 URL 以顯示 index.php 頁面?

[英]How to redirect or change the URL for display of index.php page on success of login in php?

我在 php 中使用 session 創建了一個登錄,但是在密碼匹配時( loginsubmit.php中的代碼)

所有登錄名和密碼檢查工作正常。 關於使用注銷選項重定向到索引頁面的唯一問題。

成功后我重定向到index.php但我發現 index.php 文件的內容顯示在登錄框下方,並且 URL 也沒有更改。

我附上了上述文件的圖片和我的代碼(所有這些文件都在同一個文件夾/rtest/中)。

1) 索引.php

<body>



<nav class="navbar navbar-inverse">
    <div class="container-fluid">
        <div class="navbar-header">
            <button class="navbar-toggle" data-target="#myNavbar" data-toggle="collapse" type="button">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>
        <div class="collapse navbar-collapse" id="myNavbar">
            <ul class="nav navbar-nav navbar-right">

                 <li>
                    <a href="index.php">Home</a>

                </li>
                 <li>
                    <a href="#about">About</a>

                </li>
                 <li>
                    <a href="#contact">Contact Us</a>

                </li>

                <?php

                    session_start();

                    if ( $_SESSION['State'] == 'Authenticated'){
                    ?>

                        <li>
                        <a href='Logout.php'>Logout</a>
                        </li>

                    <?php    

                    }else{

                    ?>

                        <li>
                            <a href='register.php'>Register/Login</a>

                        </li>

                      <?php  
                    }

                ?>


                <li>
                    <a href="#">Admin Login</a>

                </li>

            </ul>
        </div>
    </div>
</nav>

2) 登錄提交.php

if ($_POST['email'] != "" && $_POST['password'] != "") {

    $email = $_POST['email'];
    $password = $_POST['password'];

    include('connection.php');

    $stmt = $conn->prepare("SELECT Email, Password FROM `tbl_register` WHERE Email = ?");
    $stmt->bind_param( "s", $email); 
    $stmt->execute();
    $stmt->store_result(); 
    $stmt->bind_result($a, $b);   

    if($stmt->fetch() == 0){ 
    header("Location: ../Entrar.php?message=Error");
    exit();
    }
    else {  
        if(password_verify($password, $b)) {

            echo "Correct Password";
            session_start(); 
            $_SESSION['User'] = $a; 
            $_SESSION['State'] = 'Authenticated';  
            header("Location: ./index.php"); 
            exit; 
        }
        else{ 

            echo "Incorrect Password";
            /*header("Location: ../Entrar.php?message=Error");
            exit;*/
        }
    }

    }

    else
    {
        echo "<span style='color:red; font-weight:bold;'>
            Please enter required details.
          </span>";
    }
?>

3) 注銷.php

<?php 


session_destroy(); //Destroy it! So we are logged out now

header("location:index.php");
?>

問題圖片。

登錄圖片

帶索引的登錄圖像

在您的寄存器中使用它。php 頁面

if(!isset($_SESSION)){ 
    session_start();
}
if(isset($_SESSION['State'])) {
    header("Location: index.php");
}

在你的菜單中使用這個

if(isset($_SESSION['State'])) {
  //logout
}else{
  //login
}

並在您的注銷中取消設置 session

        session_destroy();
        unset($_SESSION['User']);
        unset($_SESSION['State']);

暫無
暫無

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

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