13

我正在用 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;

}
4

8 回答 8

27

您不应在 URL 地址中放置超过两行。检查你的网址。

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

Bad URL - "http://mail.              - 2 lines
            google.com/"
于 2014-04-18T02:02:29.460 回答
5

在 "Illuminate\Auth\Middleware\Authenticate" 方法 "redirectTo" 应该返回一个 url 路径,而不是 Redirect 响应。

...
protected function redirectTo()
{
    if(\Auth::user()->hasRole('copy')){
        return '/copy/dashboardCopy';
    }       
}
...
于 2020-07-04T13:30:46.720 回答
2

问题可能出在您的 phpMyAdmin、表 wp_options、option_value 中。

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

于 2019-07-11T00:50:51.373 回答
2

出现此警告表示您的变量的字符串内容中可能有一个新行 [/n]。例子

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

这里有2个变量

$title1 和 & $val

所以在运行时如果出现此警告警告

“标题不能包含多个标题,检测到新行”</p>

解决方案是 去掉变量的可通过的新行内容像这样

    $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% 工作;**

于 2019-09-27T15:00:10.417 回答
1

似乎您用于创建 Location 属性的变量中有一个换行符。通过urlencode()传递它们

于 2013-05-01T14:54:53.037 回答
0

尝试对您的 URL 进行编码,它应该可以工作: http: //php.net/manual/en/function.urlencode.php

于 2013-05-01T14:59:38.287 回答
0

你应该把URL“ http://example.com ”这样放,请避免“ http://example.com/”“/ ”确实给出URL不匹配,所以避免,同样的问题也会出现wordpress。所以尝试使用像这样。

于 2017-08-20T18:39:59.027 回答
-1

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

我通过在 wp_options 删除我的站点 URL 中的空格来解决它!

于 2021-04-26T03:55:31.990 回答