Php Header命令在一个文件中工作但不在其他文件上工作

时间:2013-07-01 15:55:28

标签: php redirect header

是的, 我目前的目录结构就像

  1. Admin(index.php,country.php)
  2. 类(connection.php,login.php中,country.php)
  3. 的header.php
  4. footer.php
  5. 的index.php
  6. 包括(的header.php,footer.php)
  7. 我的问题是在 /admin/country.php 时在网络服务器上,并使用表单发布方法和操作设置为 / classes添加国家/地区/country.php 我的标题语句“标题(”位置:../ Admin / country.php“)”工作正常,但当我在根目录中的索引页面上时尝试使用表单操作“classes / login.php”登录,并且在成功登录时我使用标题(“位置:../ Admin / index.php”)它永远不会重定向,但一切正常我的本地服务器,我不知道这里的问题,任何帮助将真的很感激, 我搜索了这个论坛和其他人,并试图使用他们告诉的技术,但没有任何工作

    我的索引页面index.php

    我的管理部门Admin/Country.php

    我的login.php脚本位于

    之下
    <?php 
            ob_start();
            include_once("classes/connection.php");
    ?>
    
    
    
    <?php
    
        class login
        {
            public static function validateLogin($userName,$password)
            {
                if(isset($userName) && isset($password))
                {
                    $connection  = dbconnection::getConnection();
                    $query = "Select * from tbllogin Where loginID ='" . $userName .
                    "' and password = '" . $password . "'";
    
                    $result = mysql_query($query);
                    $rowsAffected =  mysql_affected_rows();
    
                    if($rowsAffected==0)
                    {
    
                            //header("Location: ../index.php/");
                            //exit();
                            return false;
                    }
                    else
                    {
    
                        while($row = mysql_fetch_array($result))
                        {
                            //working
    
                            $role = $row["role"];
                            if($role == "Admin")
                            {
    
                                //header('Location: ../Admin/index.php');
                                //exit();
                                return true;
                            }
                            else
                            {
                                //echo "hello";
                                //header("Location: ../index.php/");
                                //exit();
                                return false;
                            }
    
                            //return $result;
                            //header("Location: ../index.php");
    
                        }
                    }
                }
                else
                {
                    //header("Location: ../index.php/");
                    return false;
                }
            }
        }
    
    
    ?>
    
    
    <?php
    
        if(isset($_POST["btnSumbit"]))
        {
            $isValid = login::validateLogin($_POST["userID"],$_POST["password"]);
            if(isset($isValid))
            {
                if($isValid ==true)
                {
                    $host  = $_SERVER['HTTP_HOST'];
                    $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
                    $extra = 'Admin/index.php';
                    header("Location: http://$host$uri/$extra");
                    exit();
                }
            }
        }
    
        ob_end_flush();
    

    &GT;

1 个答案:

答案 0 :(得分:0)

不要将标题重定向与相对路径一起使用。您应该重定向到前端URL路径或绝对路径。

你的“classes / login.php”可能是一个包含在“index.php”中的文件 - 所以你实际上试图走出网络服务器目录 - 这就是为什么它在本地运行但不在服务器。

相关问题