myform.php的代码
<html>
<head>
<title>My form</title>
</head>
<body>
<form action="success" method="post">
<h5>Username</h5>
<input type="text" name="username" value="" size="50" />
<!--
<h5>Password</h5>
<input type="password" name="password" value="" size="50" />
<h5>Confirm Password </h5>
<input type="password" name="passconf" value="" size="50" />-->
<h5>Email Address </h5>
<input type="email" name="email" value="" size="50" />
<div><input type="submit" value="submit" /></div>
</form>
</body>
</html>
控制器脚本1
<?php
class Form extends CI_Controller{
public function __construct(){
parent::__construct();
$this->load->library('session');
$this->load->helper('url');
}
public function index(){
$this->load->view('myform');
}
public function success(){
$_SESSION['username']=$_POST['username'];
$_SESSION['email']=$_POST['email'];
redirect('form/home');
}
public function home(){
$this->load->view('test_home');
}
}
?>
控制器脚本2
<?php
class Form extends CI_Controller{
public function __construct(){
parent::__construct();
$this->load->library('session');
$this->load->helper('url');
}
public function index(){
$this->load->view('myform');
}
public function success(){
$_SESSION['username']=$_POST['username'];
$_SESSION['email']=$_POST['email'];
echo $_SESSION['username'];
echo $_SESSION['email'];
redirect('form/home');
}
public function home(){
$this->load->view('test_home');
}
}
?>
问题是当我使用控制器1时,脚本按预期工作并将我重定向到form / home。但是,当我使用控制器2时,我收到此错误
A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /usr/local/apache2/htdocs/parth/application/controllers/Form.php:15)
Filename: helpers/url_helper.php
Line Number: 564
Backtrace:
File: /usr/local/apache2/htdocs/parth/application/controllers/Form.php
Line: 18
Function: redirect
File: /usr/local/apache2/htdocs/parth/index.php
Line: 292
Function: require_once
为什么代码表现如此?感谢您的时间。
答案 0 :(得分:1)
因为,你在第二种情况下echo
编了两个字符串。
注释掉这个:
//echo $_SESSION['username'];
//echo $_SESSION['email'];
由于这个原因,重定向没有发生。
在CodeIgniter中,重定向使用PHP的header("Location...")
构造。
这要求您当前的脚本不在屏幕上输出任何内容。
甚至没有空格(这就是为什么CodeIgniter建议您不要使用?>
来结束PHP文件,因为空格可以保留在那里。
答案 1 :(得分:0)
redirect()
使用PHP
header()
功能。如果您在任何标题之前输出,则会出现此错误。
这是你的输出:
echo $_SESSION['username'];
echo $_SESSION['email'];
redirect('form/home');
注释掉或删除它,导致重定向时你不需要它。
亲切的问候