仅具有参数的页面的URL重定向

时间:2013-09-08 21:13:09

标签: php url redirect

修改

如果我使用下面的脚本,它会与其他页面产生一些冲突:

 if (!isset( $_GET[ "id" ] ) ) {
  header( "Location: home.php" );
 }

这允许访问者使用我不想要的URL参数访问所有页面,例如:friends.php?id=22访问者应该可以访问的唯一具有参数的网址是profile.php?id=$id


处理需要用户注册/登录的小项目。

到目前为止,如果访问者(未登录)在profile.php中输入,他们将自动重定向到主页。

现在,我想要完成的是,如果他们想特别查看用户的个人资料,请不要重定向他们,例如profile.php?id=22

这是我到目前为止所做的:

if ((!preg_match("  {(?:login|logout|signin|register|profile)\.php$}",      
$_SERVER["PHP_SELF"])) && (empty($_SESSION["id"])) )
{     
    header('Location: home.php');
}

不幸的是,这会重定向所有输入profile.php?id=22的访问者。

简而言之,

profile.php应该重定向,profile.php?id=$id不应该。

2 个答案:

答案 0 :(得分:1)

Try this: 

if (!isset($_GET["id"]))
{     
    header('Location: home.php');
}

答案 1 :(得分:1)

这可以很简单:

if ( !isset( $_GET[ "id" ] ) ){
  header( "Location: home.php" );
  exit();
}

Bassicaly,我在这里做的是测试魔术id变量中是否存在$_GET键。 $_GET变量由您在网址中传递的所有参数填充。如果未设置$_GET[ "id" ],则会重定向到home.php

参考文献: