-1

我有这段代码,保存在一个名为“functions.php”的文件中

$host = $_SERVER['HTTP_HOST'];
$folder = rtrim(dirname($_SERVER['PHP_SELF']),'/\\'); 

function redirect_to_home(){    /*function to redirect the user ot his profile page, or       admin page if he is an administrator*/
if(admin_class::isadmin()){    
header("Location:http://$host$folder//adminindex.php"); 
exit();
}
 else{
 header("Location:http://$host$folder/profile.php");
 exit();
 }     
}

function redirect_to_welcome(){
header("Location:http://$host$folder/index.php");
exit;
}

function redirect_to_loan(){
header("Location:http://$host$folder/loan.php");
exit;
}

当浏览网站本身时,这些不能正常工作,我只能通过网站内的链接导航,不过我已经完成了整个事情(我只是使用了 header("Location:http:// localhost/YMMLS//pagename .php”)在我开发时)。

我在这里需要一些启发,我通过局域网启动这个网站,那些连接的人可以通过 xxx.xxx.xxx.x/YMMLS 访问它。但是,当然,当调用这些函数中的任何一个时,网站都无法正确重定向。

提前致谢,

4

2 回答 2

0

NetBeans 警告您,因为变量是在函数外部声明的。它们不存在于函数的范围内。当然,你可以调用函数——从函数外部,这些变量确实存在——但那是不同的。:)

这里——试试这个;

class redirect {

    public $host = '';
    public $folder = '';

    public function __construct() {
        $this->host = $_SERVER['HTTP_HOST'];
        $this->folder = rtrim(dirname($_SERVER['PHP_SELF']),'/\\');
    }

    public function home() {    /*function to redirect the user ot his profile page, or admin page if he is an administrator*/
        if(admin_class::isadmin()){
            header("Location: http://$host$folder/adminindex.php");
        } else {
            header("Location: http://$host$folder/profile.php");
        }
        exit();
    }

    public function welcome() {
        header("Location: http://$host$folder/index.php");
        exit;
    }

    public function loan() {
        header("Location: http://$host$folder/loan.php");
        exit;
    }
}

不是简单地redirect_to_home();调用 this 而是由redirect::home();.

希望有帮助。

于 2013-03-16T04:26:20.847 回答
0

尝试这个

host = $_SERVER['HTTP_HOST'];
$folder = rtrim(dirname($_SERVER['PHP_SELF']),'/\\'); 

function redirect_to_home(){  

 global $host, $folder;    

if(admin_class::isadmin()){    
  header("Location:http://$host$folder//adminindex.php"); 
  exit();
 }
 else{
 header("Location:http://$host$folder/profile.php");
exit();
}     
}

如果这可行,那么在所有其他功能中更改它祝你好运!

文档http://php.net/manual/en/language.variables.scope.php

于 2013-03-16T04:26:23.900 回答