重定向到不同的网站

时间:2013-06-21 16:52:42

标签: php pdo

我搜索了有关重定向到其他网页的问题的各种解决方案 - 无论是在本网站还是google.com上,我都能弄清楚为什么我会在特定情况下不断收到错误 -

错误是::“警告:无法修改标头信息 - 已在第10行的login_submit3.php中发送的输出(在test_ecis_lib_pdo.php:3处开始输出)”。

login_submit3.php的代码:

<?php
//! include config file; includes session_start() and ecp php library
include 'config.php';

if(DBLoginSubmitA($mysql_hostname, $mysql_username, $mysql_password,$mysql_dbname))
{ 
 //redirect to webpage depending on SESSION paramter ['customertype'
 switch($_SESSION['customertype'])
 {
case 'member':
    header("location:members3.php",true,'301');
    die(); 
    break;
case 'admincrm':
    header("location:admincrm3.php"); 
    die();
    break;
default:
    break;
 }

};

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>PHPRO Login</title>
</head>

<body>

</body>
</html>

config.php的代码:     

/*** begin our session ***/
session_start();

//! include lib after session_start()
include 'test_ecis_lib_pdo.php';

/*** mysql hostname ***/
$mysql_hostname = 'localhost';

/*** mysql username ***/
$mysql_username = 'root';

/*** mysql password ***/
$mysql_password = 'xxxx';

/*** database name ***/
$mysql_dbname = 'xxx';

?>

test_ecis_lib_pdo.php的代码(带有函数的库 - 以及错误引用的位置)以:

开头
<?php
//GLOBAL VARIABLES
$error = "no error";
$timezone = date_default_timezone_set("Europe/Amsterdam");
$CUSTOMER_TYPE=array(
  "interested"=>"1",
  "member"=>"2",
  "chair"=>"3",
  "admincrm"=>"4",
  "adminfinance"=>"4",
  "adminenergymanagement"=>"5"
);

我检查了test_ecis_lib_pdo.php文件在调用header()之前没有发送任何标签或echo文本,但我仍然得到错误 - 我哪里出错???请你的帮助。

2 个答案:

答案 0 :(得分:1)

首先,使用

header("location: admincrm3.php"); 

而不是header("location:admincrm3.php");

第二,你的编码是什么?如果utf-8 确定utf-8 without BOM

并确保<?php

之前没有空格或其他文字

如果您想在发送header之前放置文字,请使用ob_start()ob_flush()

答案 1 :(得分:0)

我不确定您的套件中发生了什么,但您可能需要查看Output Buffering - 如果您尝试在数据已经发送到缓冲区后发送标头,那么您将获得错误。