PHP标头未在HTTPS上重定向
我想在保存数据后重定向到特定的url 我用过: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
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我刚刚编辑过,谢谢大家的提醒!