相关疑难解决方法(0)

ob_start()和ob_end_flush()的PHP标头问题

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 header

2
推荐指数
1
解决办法
3万
查看次数

标题已发送...在哪里?

有谁看到如何在此脚本中发送标头?我正在使用此脚本来验证表单.因此,它会导致标头被发送,因此当我在实现此脚本后尝试引导用户时,会导致正常的"警告:无法修改标头信息 - 标头已发送"消息.这是脚本:

<?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

2
推荐指数
1
解决办法
498
查看次数

Codeigniter错误消息无法修改标头信息

当我运行我的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)

php codeigniter

2
推荐指数
1
解决办法
2万
查看次数

ob_start在PHP 5.5中不起作用

所以我有这个非常简单的脚本:

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)

每时每刻.

我有两台服务器:

  • 我的开发服务器有PHP 5.3.10-1ubuntu3.9和Suhosin-Patch(cli)
  • 我的直播服务器有PHP 5.5.9-1 + sury.org~precision + 1(cli)

我的开发服务器上的输出是:

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标记下,然后是空行然后是注释.

php

2
推荐指数
2
解决办法
6720
查看次数

如何修复错误无法修改标头信息-标头已发送

我在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 warnings codeigniter

2
推荐指数
1
解决办法
9921
查看次数

PHP 重定向与 URL 变量

我对 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 redirect

2
推荐指数
1
解决办法
2万
查看次数

使 PHP 变量在多个网页中全局化

我对 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。谁能告诉我如何启用此功能?谢谢你的帮助!

php global-variables

2
推荐指数
1
解决办法
6897
查看次数

在重定向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)

php redirect

2
推荐指数
1
解决办法
678
查看次数

codeigniter(CI)的会话问题

我在使用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工作很好.但当我在服务器上升时,我们正面临着这个问题.

我该怎么办 ...

php mysql codeigniter

2
推荐指数
1
解决办法
6611
查看次数

禁用cookie的php setcookie行为

当客户端禁用cookie时,任何人都可以确认PHP的setcookie()函数的行为吗?根据文件:

"如果在调用此函数之前存在输出,则setcookie()将失败并返回FALSE.如果setcookie()成功运行,它将返回TRUE.这并不表示用户是否接受了cookie."

我不确定'成功运行'究竟意味着什么,但这让我相信实现并不关心客户端是否接受cookie,而且我们不必担心与此相关的PHP错误/警告实际上是否设置了cookie.是对的吗?

提前致谢

php cookies setcookie

2
推荐指数
1
解决办法
260
查看次数