ob_start()在页面开头和ob_end_flush()结尾使用时出现标题问题。因为我在执行一些查询后使用头函数。
ob_start();
include_once("header.php");
global $db;
$countstmt="SELECT COUNT(*) FROM tbl_lib_hours dh WHERE book_id IN(SELECT book_id FROM tbl_book WHERE user_id=".$_SESSION['uid'].") ";
$delHourExist=$db->query($countstmt);
if($delHourExist){
header("location:edit_delivery_hours.php");
}
....
include_once('footer.php');
ob_end_flush();
Run Code Online (Sandbox Code Playgroud)
在header.php中,我还添加了ob_start();。在footer.php中,我添加了ob_end_flush(); ,但我认为这不是问题,尽管其他页面正在使用我上面编写的相同脚本运行
我得到的错误:
警告:无法修改标头信息-标头已在第9行的D:\ xampp \ htdocs \ project \ add_book_hours.php中发送
有谁看到如何在此脚本中发送标头?我正在使用此脚本来验证表单.因此,它会导致标头被发送,因此当我在实现此脚本后尝试引导用户时,会导致正常的"警告:无法修改标头信息 - 标头已发送"消息.这是脚本:
<?php
class ValidatorObj
{
var $variable_name;
var $validator_string;
var $error_string;
}
/**
* Base class for custom validation objects
**/
class CustomValidator
{
function DoValidate(&$formars,&$error_hash)
{
return true;
}
}
/** Default error messages*/
define("E_VAL_REQUIRED_VALUE","Please enter the value for %s");
define("E_VAL_MAXLEN_EXCEEDED","Maximum length exceeded for %s.");
define("E_VAL_MINLEN_CHECK_FAILED","Please enter input with length more than %d for %s");
define("E_VAL_ALNUM_CHECK_FAILED","Please provide an alpha-numeric input for %s");
define("E_VAL_ALNUM_S_CHECK_FAILED","Please provide an alpha-numeric input for %s");
define("E_VAL_NUM_CHECK_FAILED","Please provide numeric input for %s");
define("E_VAL_ALPHA_CHECK_FAILED","Please provide …Run Code Online (Sandbox Code Playgroud) 当我运行我的php CodeIgniter项目时,我收到此错误消息:
遇到PHP错误
严重性:警告
消息:无法修改标题信息 - 头已经发出(输出开始在C:\的appserv\WWW \树\程序\型号\ mtree.php:17)
文件名:core/Common.php
行号:442
第17行:
echo $row->members_id . "</br>";
Run Code Online (Sandbox Code Playgroud)
这是我的模特功能:
function convert_all() {
$this->db->empty_table('table1');
$this->db->empty_table('table2');
$this->db->query("INSERT INTO `table1` (`members_id`, `members_username`);
$query = $this->db->get('table2');
foreach ($query->result() as $row) {
if ($row->members_id > 1) {
echo $row->members_id . "</br>";
}
if ($this->isadvanced($row->members_id, $row->members_direct_id)) {
$this->insert_to_right($row, $row->members_direct_id);
} else {
$this->insert_to_left($row, $row->members_direct_id);
}
}
}
Run Code Online (Sandbox Code Playgroud) 所以我有这个非常简单的脚本:
echo "lalalaal";
ob_start();
var_dump(headers_sent());
echo "heretoo";
$html = ob_get_contents();
ob_end_clean();
echo $html;
Run Code Online (Sandbox Code Playgroud)
它是从命令行运行的:
php n.php
Run Code Online (Sandbox Code Playgroud)
每时每刻.
我有两台服务器:
我的开发服务器上的输出是:
lalalaal
bool(false)
heretoo
Run Code Online (Sandbox Code Playgroud)
在我的实时服务器上:
lalalaal
bool(true)
heretoou
Run Code Online (Sandbox Code Playgroud)
我在两台服务器上显示所有错误,为什么我的实时服务器返回true?自5.3以来发生了什么变化?
使用var_dumping来自headers_sent的结果它只是告诉我lalalaal导致它:
lalalaalbool(true)
string(18) "/home/ubuntu/n.php"
int(4)
Run Code Online (Sandbox Code Playgroud)
int(4)指向,echo "lalalaal";因为它位于PHP标记下,然后是空行然后是注释.
我在codeigniter中遇到以下类型的错误,我无法解决它,任何人都知道导致此错误的原因。
A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /home/samples1/public_html/venture-test/application/controllers/admin/admin_notifications.php:158)
Filename: helpers/url_helper.php
Line Number: 540
Run Code Online (Sandbox Code Playgroud)
我使用了两种方法,它们都在下面的控制器中。
<?php
public function approve_recent_user() {
$user_id = $this->uri->segment(4);
$notification_id = $this->uri->segment(5);
$status = 1;
if($this->admin_notification_db->user_approve_flag($user_id,$status) == true) {
redirect('admin/admin_notifications/unapproved_users');
}
else {
redirect('admin/admin_home');
}
} ?>
Run Code Online (Sandbox Code Playgroud)
执行此功能后,我在下面的方法中重定向如下。
<?php
public function unapproved_users() {
$result = $this->admin_notification_db->get_unapproved_users();
$data['users'] = $result;
$this->load->view('admin/recent_users', $data);
} ?>
Run Code Online (Sandbox Code Playgroud) 我对 php 非常陌生,并尝试构建一个重定向,该重定向使用 URL 中的参数,该 URL 因人而异。
人们将访问的 URL 如下所示:www.website1.com/redirect.php? p= p123 &r= 4 &s= 567
每个人的 p、r 和 s 都会改变
然后我想将它们重定向到其他一些网站,如下所示:
www.website2.com/p123.aspx?r= 4 & s = 567
这是到目前为止我所拥有的,但它给了我一个错误“无法修改标头信息 - 标头已由...发送”
<html>
<?php
$fpvalue = $_GET['p'];
$frvalue = $_GET['r'];
$fsvalue = $_GET['s'];
header("Location: http://website2.com/".$fpvalue.".aspx?r=".$frvalue."&s=".$fsvalue);
?>
</html>
Run Code Online (Sandbox Code Playgroud)
我非常感谢对初学者的帮助。
谢谢!
我对 PHP 相当陌生,如果这是一个天真的问题,我很抱歉,但我想构建一个 php 函数库,它利用跨多个页面的全局变量。我正在使用这3个文件来测试:
函数.php
<?php
function report()
{
echo "Value = ".$GLOBALS["var"];
}
?>
Run Code Online (Sandbox Code Playgroud)
索引.php
<?php
$var = "ABC";
require "functions.php";
echo "<h1>index.php</h1>";
report();
?>
<br /><br />
<input type=button onClick="location.href='page2.php'" value="Page2">
Run Code Online (Sandbox Code Playgroud)
page2.php
<?php
require "functions.php";
echo "<h1>page2.php</h1>";
report();
?>
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,由echoreport调用的函数。但是,当单击该按钮时,by 调用的函数会显示in引发的错误。index.phpValue = ABCPage2reportpage2.phpUndefined index$GLOBALS["var"]functions.php
我想$GLOBALS["var"]在从 引用它时使用它page2.php。谁能告诉我如何启用此功能?谢谢你的帮助!
我想在txt文件(用户名,用户邮件和IP地址)中写一些信息,然后重定向到另一个html文件.如果我尝试重定向,则文本文件中不会出现任何内容.但是,如果我不重定向到HTML文件,PHP脚本正常工作.我错过了什么?
<?php
$myfile = fopen("newfile.txt", "a") or die("Unable to open file!");
$txt1 = file_get_contents("newfile.txt");
$ip = get_client_ip_server();
$txt2 = $_COOKIE["userName"] ."\t" .$_COOKIE["userEmail"]." \t".$ip. "\r\n";
$txt3 = $txt1 . $txt2;
fwrite($myfile, $txt3);
fclose($myfile);
die();
header( "HTTP/1.0 302 Found" );
header( "Status: 302" ); # this is for chrome compliance
header( "Location: general.html" . $_SERVER["REQUEST_URI"] );
// Function to get the client ip address
function get_client_ip_server() {
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress =getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress …Run Code Online (Sandbox Code Playgroud) 我在使用codeigniter开发的live上获得了php会话错误
A PHP Error was encountered
Severity: Warning
Message: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/userts4m/public_html/development/relatioweb/admin/index.php:1)
Filename: Session/Session.php
Line Number: 140
Backtrace:
File: /home/userts4m/public_html/development/relatioweb/application/admin/controllers/User.php
Line: 9
Function: __construct
File: /home/userts4m/public_html/development/relatioweb/admin/index.php
Line: 293
Function: require_once
Run Code Online (Sandbox Code Playgroud)
在localhost工作很好.但当我在服务器上升时,我们正面临着这个问题.
我该怎么办 ...
当客户端禁用cookie时,任何人都可以确认PHP的setcookie()函数的行为吗?根据文件:
"如果在调用此函数之前存在输出,则setcookie()将失败并返回FALSE.如果setcookie()成功运行,它将返回TRUE.这并不表示用户是否接受了cookie."
我不确定'成功运行'究竟意味着什么,但这让我相信实现并不关心客户端是否接受cookie,而且我们不必担心与此相关的PHP错误/警告实际上是否设置了cookie.是对的吗?
提前致谢