收到警告“标题可能不包含多个标题,检测到新行”

时间:2013-05-01 14:48:47

标签: php oop

我正在使用oops进行编码,以便在PHP中上传图像。但提交图片后,它会发出警告

“标题可能不包含多个标题,检测到新行”

下面是我的函数,它给出了错误

public function ft_redirect($query = '') {

    if (REQUEST_URI) {

        $_SERVER['REQUEST_URI'] = REQUEST_URI;

    }

    $protocol = 'http://';

    if (HTTPS) {

        $protocol = 'https://';
    }

    if (isset($_SERVER['REQUEST_URI'])) {

        if (stristr($_SERVER["REQUEST_URI"], "?")) {

            $requesturi = substr($_SERVER["REQUEST_URI"], 0, strpos($_SERVER["REQUEST_URI"], "?"));

            $location = "Location: {$protocol}{$_SERVER["HTTP_HOST"]}{$requesturi}";
        } else {


            $requesturi = $_SERVER["REQUEST_URI"];

            $location = "Location: {$protocol}{$_SERVER["HTTP_HOST"]}{$requesturi}";

        }

    } else {

        $location = "Location: {$protocol}{$_SERVER["HTTP_HOST"]}{$_SERVER['PHP_SELF']}";

    }

    if (!empty($query)) {

        $location .= "?{$query}";

    }

    header($location);

    exit;

}

8 个答案:

答案 0 :(得分:21)

您不应在URL地址中放置两行以上的内容。检查你的网址。

Good URL - "http://mail.google.com"  - 1 line

Bad URL - "http://mail.              - 2 lines
            google.com/"

答案 1 :(得分:1)

问题可能在您的phpMyAdmin中,表wp_options和option_value中。

如果URL前面有一个空格,它将生成错误:警告:标头不能包含多个标头,在...中检测到新行。

答案 2 :(得分:1)

发生此警告表示您的变量的字符串内容中可能会有新行[/ n]。 例子

  header("Location: ../control.php?post='$title1'&sample='$val'");

这里有2个变量

  

$ title1   和    &$ val

因此在运行时,如果此警告发生警告

  

“标头不得包含多个标头,已检测到新行”

解决方案是  删除像这样的变量的可通过换行内容

    $val=str_replace(PHP_EOL, '', $val);
    $title1=str_replace(PHP_EOL, '', $title1);

然后您可以在标头中包含变量


解决问题的理想方法就是这样

$url="../control.php?post='$title1'&sample='$val'";
 $url=str_replace(PHP_EOL, '', $url);
 header("Location: $url");

**这将100%起作用; **

答案 3 :(得分:0)

看起来像您用来创建Location属性的变量中有一个换行符。将它们传递给urlencode()

答案 4 :(得分:0)

尝试对您的网址进行编码,它应该有效:http://php.net/manual/en/function.urlencode.php

答案 5 :(得分:0)

您应该像这样放置网址" http://example.com,请避免" http://example.com/" " /"确实给URL不匹配,所以避免,同样的问题也会出现wordpress。所以试着这样使用。

答案 6 :(得分:0)

“ Illuminate \ Auth \ Middleware \ Authenticate”中的方法“ redirectTo”应返回一个URL路径,而不是Redirect响应。

...
protected function redirectTo()
{
    if(\Auth::user()->hasRole('copy')){
        return '/copy/dashboardCopy';
    }       
}
...

答案 7 :(得分:0)

当我在 PhpmyAdmin 中复制/粘贴我网站的 URL 时发生了这种情况,当我打算更改 wp_options URL(siteurl 和 home)时。

我通过删除 wp_options 网站 URL 中的空格解决了这个问题!