PHP标头未在HTTPS上重定向

PHP标头未在HTTPS上重定向,php,http-redirect,Php,Http Redirect,我想在保存数据后重定向到特定的url 我用过: header('位置:https://linkbook.co/index.php/site/saveUrl'); 但它没有起作用 为什么? 整个代码: public function actionSaveUrl(){ $criteria = new CDbCriteria(); $criteria->limit = 1; $criteria->order = 'id

我想在保存数据后重定向到特定的url

我用过:

header('位置:https://linkbook.co/index.php/site/saveUrl');

但它没有起作用

为什么?

整个代码:

public function actionSaveUrl(){
            $criteria = new CDbCriteria();
            $criteria->limit = 1;
            $criteria->order = 'id asc';
            $model_url = Url::model()->FindByAttributes(array('saved_to_file'=>0,'status'=>1),$criteria);
            if($model_url){
                echo $model_url->link;
                CurlTool::downloadFile($model_url->link,'url_' . $model_url->id . '.html');
                $model_url->saved_to_file = 1;
                if( $model_url->validate() && $model_url->save() ){
                    echo 1;
                    header('Location: https://linkbook.co/index.php/site/saveUrl');
                    exit();
                }
                else{
                    echo 2;
                }
            }
        }
这是你的问题:

echo 1;

将输出发送到浏览器后,不能发送标题(除非正在缓冲输出)。当您执行此操作时,应该从PHP收到一条警告消息。

首先,在重定向之前不应该有任何输出(什么是
echo 1;

其次,在Yii中,您可以像这样重定向:

$this->redirect('https://linkbook.co/index.php/site/saveUrl');
报告明确指出:

记住,在发送任何实际输出之前,必须调用header(),可以是通过普通HTML标记、文件中的空行,也可以是通过PHP。使用include或require函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行,这是非常常见的错误。使用单个PHP/HTML文件时也存在同样的问题

你可以:

 // <-- THIS LINE OUTPUTS SOMETHING
 echo $model_url->link;
 ...
 echo 1; // <-- THIS LINE OUTPUTS SOMETHING AS WELL
 // SO THIS WON'T WORK
 header('Location: https://linkbook.co/index.php/site/saveUrl');
//链接;
...

回声1;// 标题前不能有任何输出,输出可以是:

  • 无意的:
    • 前空格
    • UTF-8字节顺序标记
    • 以前的错误消息或通知
  • 有意的:
    • 打印、回显和其他产生输出的功能(如var_dump)
    • 未加工区域
有关更多信息,请查看

在将来,如果您在php中启用错误,它可能会有所帮助,这样您将得到一个错误,告诉您其他输出是在哪里生成的。您可以通过将以下内容放在php页面顶部来启用错误:

<?php 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 
?>


您收到错误了吗?没有返回错误您是否测试过在echo$model\u url->link;回声1号呢?不,即使没有回声,它还是没有work@lonut-在调用该函数之前,代码的其他部分是否向浏览器发送输出?还有
echo$model\u url->链接。我删除了回音,现在。。。它重定向到超时。。。。让我看看发生了什么;yu可能是对的,因为这毕竟是一个包装器谢谢你花时间回答这个用户。然而,你的回答只引出了下一个问题:-根据这本书的定义,这意味着你的回答在技术上没有帮助,所以a-1。请考虑明智地选择哪些问题回答,哪个更好。我们只需要在这些用户之后进行清理。在问题的任何地方都没有提到yii-你从哪里得到的?我可以看到他的代码结构,我自己和yii一起工作,我认识到了这一点。这真的是否决投票的理由吗?和其他人一样,我也提到了他在更改标题之前显示输出的事实:/@ChenAsraf这里没有人听,尤其是如果他们有很高的代表性的话:(我被否决了,什么都不做,一定要删除
echo$model\u url->link;
。@RocketHazmat我刚刚编辑过,谢谢大家的提醒!