PHP会话id重定向


php session id redirect

我要做的是使用$_SESSION['user_id']来检查'user_id'是否=" number",例如56,如果是,加载页面,如果不是将用户重定向到"billing/".$_SESSION['user_id'].".php";

到目前为止我有这个

<?php
    if ($_SESSION['user_id']) === 56) {
        //do nothing
    } else {
          header("Location: billing/".$_SESSION['user_id'].".php");
          exit();   
    }
?>

我知道这段代码是错误的,但希望它传达了我想要完成的。提前感谢您的帮助和代码片段。

  1. 不要根据答案编辑问题中的代码。你在让别人无法理解你在说什么。

  2. 问清楚、确定的问题。描述你面临的问题以及你需要什么样的解决方案。

  3. 独立很重要。事实上,会话与重定向无关。如果你想知道如何使用会话-询问如何使用会话。如果你已经有有效的和验证的会话变量,但不知道重定向-询问重定向。如果你不知道如何比较值-问它。如果您知道所有的东西,但是不确定代码样式的一些细节,那么请问这个问题。

现在,你的问题是什么?

您非常接近,但您可以使用php函数http_redirect代替重定向,更简洁(需要PECL库):

<?php
    if ($_SESSION['user_id'] == 56) {
        //do nothing
    } else {
        http_redirect("billing/".$_SESSION['user_id'].".php", array(), true, HTTP_REDIRECT_PERM);
    }
?>

PHP Doc for header()给出了很多关于如何使用header函数的信息。最重要的是:

  • 在调用header() 之前,确保没有html或文本被回显或发送到浏览器。
  • header()之后你需要一个exit();,因为你完成了渲染页面,一些浏览器更喜欢它。
  • HTTP/1.1需要一个绝对URI作为»Location:的参数,包括方案,主机名和绝对路径,所以你会想把完整的URL放在'Location:'后面。

为什么不选择相反的呢?为了可读性,明智的做法是使用{}而不是"。"(只要你的编辑强调这一点)

<?php 
if($_SESSION["user_id"] != 56) {
    header("location: billing/{$_SESSION['user_id']}.php");
    die();
}
?>