-1

当我在服务器上上传时,我的 php 代码不起作用。当我在 localhost 上运行它时,它工作正常..为什么?

<?php
ob_start();
include 'CUserDB.php';
session_start(); 
include 'config.php';
$myusername=$_POST['txtusername']; 
$mypassword=$_POST['txtpassword']; 
$typ= $_POST['type'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$typ = stripslashes($typ);    
$myusername = mysql_real_escape_string($myusername);
$mypassword=mysql_real_escape_string($mypassword);
 $typ = mysql_real_escape_string($typ);          
        try {
            $oUser = new CUserDB();
            $result = $oUser->Login($myusername,$mypassword,$typ);
            } 
        catch (PDOException $pe)
         {
            die("Error occurred:" . $pe->getMessage());
         }   
    if($result[0][0][UserName] != '')
        {
            session_start(); 
            $_SESSION['UserId'] = $myusername;
           if( $typ == "Dealer")
            { 
            header('location:Dealer/ManageProfile.php'); 
            }
           else if ($typ == "Individual")
            {
             header('location:Individual/managep.php'); 
            }
           else 
            {
             header('location:Builder/managep.php'); 
            }
        }
   else 
    { 
    header('location:header.php'); 
    }
?>

当我在服务器上运行此页面时,这是检查登录页面。单击登录后,此页面被调用。但在服务器上,登录页面后它不会重定向,它停留在 checklogin.php 页面上。为什么这会发生在服务器上?

4

2 回答 2

2

根据http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html, Location 标头应该是一个绝对 URI,例如:

Location: http://yourserver/header.php

此外,正确的标题名称是Location大写的。
冒号字符和标头值之间也应该存在空格字符。

根据 PHP 文档:

您通常可以使用 $_SERVER['HTTP_HOST']、$_SERVER['PHP_SELF'] 和 dirname() 自己从相对的 URI 中创建绝对 URI:

<?php
/* Redirect to a different page in the current directory that was requested */
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");

现在,我不能肯定你的重定向不会像你写的那样工作,可能还有另一个问题,但你应该尽量尊重 HTTP 协议以避免兼容性问题。

于 2013-10-30T10:13:52.667 回答
1
  1. 检查您的代码没有任何语法错误。http://phpcodechecker.com/之类的东西应该可以正常工作。
  2. 仔细检查您包含的文件是否实际包含在内。尝试将它们更改为 requires 看看会发生什么
  3. 确保 PDO 扩展存在并且工作正常。快速phpinfo()查看已启用的内容。
  4. 启用错误(如果还没有)并按照自己的方式解决它们。
于 2013-10-30T10:14:34.600 回答