php eregi()问题

时间:2010-07-31 08:20:51

标签: php redirect header

我的代码存在此问题,页面正在重定向并且不会停止..浏览器会停止它,因为它一直在重定向,并且我有一个包含 global.php 的文件在所有的php页面中,所以我把这个代码用于会话,它就像我说的那样

if (!session_is_registered('username')) {
    if(!eregi('login.php', $PHP_SELF)) header('Location: login.php');
}

global.php 还包含在 login.php 中,但是当我在我的网站的网络服务器上启动它时,它会执行我之前说过的,但在我的网站上在计算机上的基于服务器它工作正常,所以请快速帮助我

抱歉我的英文..

2 个答案:

答案 0 :(得分:2)

试试这个:

session_start();
if (!isset($_SESSION['username']) && stripos($_SERVER['PHP_SELF'], 'login.php') === false) {
    header('Location: login.php');
}

session_is_registered()eregi()都是不推荐使用的功能,不应使用。另外,正则表达式对于你正在做的事情来说是过度的。

答案 1 :(得分:0)

尝试:

if (!isset($_SESSION('username'))) {
    if(FALSE === strpos($_SERVER['PHP_SELF'], 'login.php')) {
      header('Location: login.php');
      exit();
    }
}

一些建议:

  • 确保将session_start()置于脚本之上
  • 使用isset($_SESSION.......
  • 使用strpos代替弃用eregi
  • 请勿使用已弃用的session_is_registered
  • 在标题重定向后使用exit/die
  • $_SERVER['PHP_SELF']不是$PHP_SELF
  • 使用错误处理,将这些行放在脚本之上:

    • ini_set('display_errors', true);
    • error_reporting(E_ALL);