【问题标题】:How to redirect the page if access it directly using PHP?如果直接使用 PHP 访问页面,如何重定向页面?
【发布时间】:2016-08-03 07:08:13
【问题描述】:

我有 2 个 php 页面。第一个是登录表单,第二个php页面是信息。

我希望仅当用户从第一个页面重定向重定向并阻止用户直接访问它时才能访问第二个 php 页面。

假设第一个名为“form.php”的 php 文件和我想要阻止直接访问的第二个名为“info.php”的 php 文件。

有什么建议吗?

到目前为止,请参阅下面的代码(我的代码不起作用)我得到了白色空白页

Form.php

if(isset($_POST['submit'])){
    if((isset($_POST['username']) && $_POST['username'] != '') && (isset($_POST['email']) && $_POST['email'] != '')){
        $_SESSION["username"] = $_POST['username'];
        $_SESSION["email"] = $_POST['email'];

    $loginform = (strlen($_SESSION["username"])>0 && strlen($_SESSION["email"])>0);
     if($loginform){
       $_SESSION['login'] = 1;
       echo("<script>location.href = '/info/';</script>");
     }
   }
}

info.php

if(!isset($_SESSION['login']){
    echo("<script>location.href = '/login/';</script>");
}

【问题讨论】:

  • 您是否希望只有登录用户才能访问 info.php 页面?
  • 是的,如果用户已经有一个会话

标签: php redirect url-redirection


【解决方案1】:

如果login 成功,则在login.php 页面开始session,并在login.php 中的header 之前设置session variable

login.php

<?php
session_start();// at top of page
..... after login means all your query running
if(querysuccess){
$_SESSION['loggedIn'] = 1;
header('location:info.php');

}


info.php// here check if session variable not 1 then redirect again to login.php


<?php
session_start();
if(!SESSION['loggedIn']){
header('location:login.php');
}

else{

// just do whatever you want
}
?>

更新答案

startsession 在表单页面的顶部

<?php
session_start();// should be at top
if(isset($_POST['submit'])){
    if((isset($_POST['username']) && $_POST['username'] != '') && (isset($_POST['email']) && $_POST['email'] != '')){
        $_SESSION["username"] = $_POST['username'];
        $_SESSION["email"] = $_POST['email'];

    $loginform = (strlen($_SESSION["username"])>0 && strlen($_SESSION["email"])>0);
     if($loginform){
       $_SESSION['login'] = 1;
       echo("<script>location.href = '/info/';</script>");
     }
   }
}

您忘记在info.php 中关闭isset。也在这里开始会话

<?php 
session_start();
if(!isset($_SESSION['login'])){
    echo("<script>location.href = '/login/';</script>");

}

【讨论】:

  • @user12345 请查看我的更新帖子和代码。我的代码不工作
  • @User014019 请在您设置 $_SESSION["username"] 和 $_SESSION["email"] 的位置显示您的代码
  • @User12345,请查看我帖子中的更新代码。 form.php 中定义的用户名和电子邮件的 $_SESSION
【解决方案2】:

你可以在 php 中使用 header() 方法。

header('location:info.php');

【讨论】:

    【解决方案3】:

    尝试在 form.php 页面上的 session 中存储一个标志,然后在 info.php 中检查标志是否存在于 session 中,如果是则继续 info.php。如果不重定向回 form.php 或随心所欲地死去。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 2017-06-25
      • 2016-08-13
      • 2017-10-28
      • 2012-05-22
      • 1970-01-01
      相关资源
      最近更新 更多