0

所有用户都有自己的个人资料页面:

www.mysite.com/profile.php?id=13

我现在要做的是将他们重定向到他们自己的个人资料页面,以防他们只键入:

www.mysite.com/profile.php

我已经尝试过了,但我不断收到重定向循环:

 if ((preg_match("{(?:profile)\.php$}", $_SERVER["PHP_SELF"])) && 
 (!empty($_SESSION["id"])) )
     {
         redirect ("profile.php?id=$id");        
     }

我错过了一步吗?

4

2 回答 2

1

$_SERVER['PHP_SELF']包含当前执行脚本的文件名,因此您的条件将始终匹配。

我会使用类似的东西:

if ( empty($_GET['id') && !empty($_SESSION['id']) )
于 2013-08-13T04:41:06.207 回答
0

$_SERVER["PHP_SELF"] 将始终返回 profile.php 以防它附加或不附加 id 即。为什么你的正则表达式总是匹配得很好并且你永远在重定向循环中移动

你为什么不做这样的正则表达式: -

if ((preg_match("/^\/profile\.php$/", $_SERVER[REQUEST_URI])) && 
 (!empty($_SESSION["id"])) )
     {
         redirect ("profile.php?id=$id");        
     }
于 2013-08-13T04:43:32.507 回答