2011-10-03 150 views
-2

我什么尝试做的是使用$_SESSION['user_id']检查'user_id'是=到“数字”,说56例如,如果是负载页面,如果不重定向用户到"billing/".$_SESSION['user_id'].".php";PHP会话ID重定向

到目前为止,我有这

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

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

+0

在'header'行之后加'exit;'。 – hakre

+1

除了'Location'需要一个完整的url,''exit'''在'header'之后,'''user_id']'在'if'之后的错误括号。这是怎么回事? –

+0

我想知道这个目标.. –

回答

0

你是相当接近,但你可以使用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); 
    } 
?> 
+0

无效的PHP atm并且需要一个PECL我能看到的图书馆。 –

+0

什么是PHP无效? – Jez

+0

'if($ _SESSION ['user_id'])=== 56){' –

0

为什么不检查相反?为了可读性,使用{}不是“明智的”。“ (只要您编辑凸显了这款)

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

谁低估,谨慎解释?我打算提出这个建议。测试true是没有意义的,然后只运行代码为false。为了便于阅读,这是更好的方法。 – Anonymous

+0

我没有downvote,但我不能让重定向工作?无论如何,如果user_id不正确,代码仍然会加载页面。谢谢你的帮助 :) –

0

PHP Doc for header()给出了很多有关如何使用头功能信息的。最重要的是:

  • 确保没有HTML或文本一直回荡或打电话header()之前发送给浏览器。
  • 由于您完成了渲染页面并且一些浏览器更喜欢它,因此您需要header()之后的exit();
  • HTTP/1.1需要一个绝对URI作为»位置的参数:位置:包括方案,主机名和绝对路径,因此您需要在'位置:'之后放置完整的URL。例如,请参阅php文档。
1
  1. 基础上,答案不在你的问题编辑代码。你正在让你无法理解你在说什么。
    如果您想添加内容 - 将其添加到原始文本下方。

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

  3. 分开的事项。事实上,会话与重定向无关。如果你想知道如何使用会话,请询问如何使用会话。如果您已经拥有有效并经过验证的会话变量,但不知道重定向 - 请询问重定向。如果你不知道如何比较价值 - 问问。如果你知道一切,但不知道代码风格的一些花招和哨声 - 问这个问题。

现在,你的问题是什么?