2

编辑:

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

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

这允许访问者使用 URL 参数访问所有页面,例如:friends.php?id=22我不想要的。访问者应该可以访问的唯一带有参数的 URL 是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不应该。

4

2 回答 2

1
Try this: 

if (!isset($_GET["id"]))
{     
    header('Location: home.php');
}
于 2013-09-08T21:55:15.890 回答
1

这可能很简单:

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

基本上,我在这里所做的是测试id魔法$_GET变量中键的存在。该$_GET变量由您在 URL 中传递的所有参数填充。如果$_GET[ "id" ]未设置,则我重定向到home.php.

参考:

于 2013-09-08T21:55:22.730 回答