是否可以通过使用PHP将用户重定向到其他页面?
假设用户转到www.example.com/page.php,我想将他们重定向到www.example.com/index.php,如果不使用meta-refresh,我该怎么做?有可能吗?
这甚至可以保护我的页面不被未经授权的用户访问。
- 可以在php:header中更新header
- @山姆:就像侧节点一样,不要通过重定向实现任何类型的protection from unauthorized users;这不是应该怎么做;)
- @Strae用重定向保护页面有什么问题?那最好的办法是什么?
- @pravindamarathunga重定向是其中一个元素,但不是唯一一个。只需确保未经授权的用户根本不会输出受保护的元素;浏览器的重定向可以在客户端禁用,例如:如果浏览器不执行重定向,并且原始页面正常输出,用户会看到什么?CMS通常会进行重定向,不会打印出受保护的项目,将正常输出替换为礼貌消息。
- @ PravindaAmarathunga从马库斯的答案中检查链接:DayIyWTF.COM/ToeSt/ HouthActhiDebug。ASPX
总结现有的答案加上我自己的两分钱:
1。基本回答
您可以使用header()函数发送新的HTTP头,但必须在任何HTML或文本之前(例如,在声明之前)将其发送到浏览器。
2。重要细节
DIE()或Ext()
1 2
| header("Location: http://example.com/myOtherPage.php");
die(); |
为什么要使用die()或exit():每日WTF
绝对或相对URL
自2014年6月起,可以使用绝对和相对URL。请参阅RFC7231,它取代了旧的RFC2616,只允许绝对URL。
状态码
PHP的"location"头仍然使用HTTP302重定向代码,但这不是您应该使用的代码。您应该考虑301(永久重定向)或303(其他)。
注意:W3C提到303头与"许多pre-http/1.1用户代理"不兼容。当前使用的浏览器都是HTTP/1.1用户代理。对于蜘蛛和机器人等许多其他用户代理来说,情况并非如此。
三。文档
HTTP头和PHP中的header()函数
- PHP手册上说了什么
- 维基百科怎么说
- W3C怎么说
4。选择
您可以使用http_redirect($url);的替代方法,它需要安装pecl包pecl。
5。帮助程序函数
此功能不包含303状态代码:
1 2 3 4 5 6 7 8
| function Redirect ($url, $permanent = false)
{
header('Location: ' . $url, true, $permanent ? 301 : 302);
exit();
}
Redirect ('http://example.com/', false); |
这更灵活:
1 2 3 4 5
| function redirect ($url, $statusCode = 303)
{
header('Location: ' . $url, true, $statusCode);
die();
} |
6。解决办法
如前所述,header()重定向只在写出任何内容之前工作。如果在HTML输出中调用,它们通常会失败。然后您可以使用HTML头解决方案(不是很专业!)像:
1
| <meta http-equiv="refresh" content="0;url=finalpage.html"> |
或者一个javascript重定向。
1
| window.location.replace("http://example.com/"); |
- 此答案的一些问题:303可能不是"正确"的状态代码。例如,谷歌可能需要301。其次,header('Location: '.$newURL);必须在任何HTML(或文本)传递到浏览器之前,否则将无法正常工作。
- 另外,如果新的URL是通过连接用户输入来构建的,那么需要进行一些清理。:)
- 可悲的是,每日世界贸易基金会的故事很普通。不管怎样,这不是失踪的模具造成的问题,而是一个坏的设计。在99.9%的案例中,剧烈关闭流程是错误的。一个常见的、更干净的解决方案(无论如何我都不喜欢)是抛出一个重定向异常,并在应用程序入口点捕获它。之后,您可以进行所有的"after*"调用(日志/关闭连接/以前的任何操作)
- 并非所有浏览器都支持http-equiv="Location"。你应该用refresh代替!
- 除非你是认真的,否则不要发301。301意味着永久性,永久性意味着永久性,意味着它将被用户代理缓存,意味着长时间的、充满咖啡因的夜晚,盯着应用程序日志,想知道你是不是疯了,因为你发誓某个页面应该被调用或更新,而且你向上帝发誓它在你的机器上工作,而不是在客户机上工作。如果你绝对必须全部是301,在资源上放置一个缓存控制最大期限。你没有无穷的智慧,你不应该表现得像你一样。
- 但是在出口上使用模具是有原因的吗?退出似乎更干净,更合适。
- 关于PECl:PECl 2。x由于某些原因不包括EDOCX1,0,因此在EDCX1〔0〕上打赌可能是长期的错误。
- WTF故事中的评论员@ TGAPE说,应该使用"Ext()"代替"die-()":<如果在头重定向后立即有一个骰子,代码总是命中它,并且您的错误日志将填满无用的"错误">
- 我想知道为什么所有这些代码在我的本地主机工作良好,但失败时,系统是在一个托管网站。隐马尔可夫模型。。
- 6解决方案在需要使用客户端跟踪脚本(如Google Analytics)进行跟踪重定向时非常有用。
- +1对于绝对的URL信息——这导致我的重定向在chrome上无声地失败(实际上,我缺少了"http://",但它指出了我的方向)。
- 不要忘记在行前添加头("cache-control:no-cache");
- 我结合了头解决方案,使用die("echo here" )命令来回送meta-refresh标签,所有有效的JS解决方案都应该有一个非常兼容的小重定向器!
- 我一直在读,在HTML流输出过程中发送一个头部会产生"无法修改头部"的错误,但我现在还没有看到。在HTML开始运行后,浏览器甚至接受了cookie。我刚刚设置了代码笔,150行HTML被PHP发送的头中断。如果在php错误日志或chrome检查器中出现问题,我找不到任何通知。代码pen.io/danallenhtn/pen/oogggd
- @Danallen您可能已经打开了输出缓冲区;因为在代码运行时,它实际上并没有将数据输出到客户机,所以在将缓冲区刷新到客户机之前,它会命中header()调用并附加该调用。
- 自2014年7月以来,位置头中允许使用相对URL。请参阅answer stackoverflow.com/a/25643550/1657819中的最新更新(请参阅tools.ietf.org/html/rfc7231第7.1.2节)
- 世界跆拳道联盟????爬虫可以读取PHP代码吗????我以为他们读HTML和JS…但是如果读php意味着他在你的服务器中,那不是一个病毒爬虫,你需要担心的不仅仅是"重定向"…我很惊讶没有人注意到这个…
- 我同意@robertoecurnex。每日wtf的问题在于,它使用重定向来防止未经授权的用户进行删除。那是个非常糟糕的设计。你不应该依靠重定向来阻止任何事情。
使用header()函数发送HTTP Location头:
与一些人的想法相反,die()与重定向无关。仅当您希望重定向而不是正常执行时才使用它。
文件example.php:
1 2 3 4 5 6 7
| <?php
header('Location: static.html');
$fh = fopen('/tmp/track.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') ."
");
fclose($fh);
?> |
三次执行的结果:
1 2 3 4
| bart@hal9k:~> cat /tmp/track.txt
127.0.0.1 2009-04-21T09:50:02+02:00
127.0.0.1 2009-04-21T09:50:05+02:00
127.0.0.1 2009-04-21T09:50:08+02:00 |
恢复强制的die()或exit()是一些与实际php无关的城市传说。它与客户端"尊重"EDCOX1×5的头没有任何关系。发送报头不会停止PHP执行,不管客户端使用的是什么。
- die()或exit()用于不尊重"location:…"头的客户机
- @不,exit()是为了防止页面显示剩余的内容(想想受限页面)。vartec是对的,它与HTTP位置头无关,您不需要exit。我选择把它包括在我的答案中,因为对于一个不知道如何做一个简单的重定向的人来说,一个人最好安全地进行操作,而不是不执行一个简单但关键的步骤,这样他就可以利用高级过程控制。
- 但是,当脚本仍在执行时,尊重头部的浏览器将离开页面并关闭连接。这太糟糕了。PHP将继续执行脚本一段时间(这就是您的代码执行的原因),但在执行过程中可能会随机中止脚本,从而导致代码中断。调用ignore_user_abort()可以避免这种情况,但我真诚地说,这不值得。只需继续使用HTML写东西(虽然可能没用),但不要在头后写磁盘或数据库上的东西("位置");如果可能的话,在重定向之前写到磁盘上。[另外:URL应该是绝对的。]
1 2 3 4 5 6 7 8 9 10 11
| function Redirect ($url, $permanent = false)
{
if (headers_sent() === false)
{
header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
}
exit();
}
Redirect ('http://www.google.com/', false); |
不要忘记DIE()/EXIT()!
- 不要忘记输出缓冲,否则最终会得到"headers already sent"。
- …别忘了打印出来的东西,比如"你会在$n秒内被重定向到$nepage,如果没有重定向,点击$link这里"一些broser和一些浏览器的设置,可能会使重定向失败。
- 丹尼尔:这种重定向不会花费"$N秒"。如果发生的话,它将是即时的,任何符合要求的浏览器都应该处理它。我认为你正在考虑"元刷新"重定向,当人们不知道更好的时候使用。
- @米拉多…适用于旧浏览器和专业浏览器。你应该首先做你的位置头,如果失败的元重定向与"你将重定向到页面在X秒"与一个链接的情况下,元重定向失败。这是做重定向的正确和失败的安全方法。
- 这些是哪些浏览器?
- 安德鲁:HTTP浏览器怎么能不尊重位置呢?
- 不包含303状态。
- @Kuroki Kaze:由于headers_sent()检查,您不会以"headers already sent"结束。
- @vartec不必是浏览器,它可能是蜘蛛或恶意用户。
- @Mariovilas为什么蜘蛛或恶意用户有问题?如果目的是引导访问者远离网站的机密部分,那么应用程序的设计已经存在很大的缺陷…
- 为什么我们需要exit()或die()?
- @TannerSummers:所以不再对PHP进行处理,也不会向用户显示任何内容。前者可能有害(删除记录等),而且很难调试
使用echo从PHP输出javascript,这将完成该任务。
1 2 3
| echo '<script type="text/javascript">
window.location ="http://www.google.com/"
'; |
除非缓冲页面输出,然后检查重定向条件,否则不能在PHP中真正执行此操作。那可能太麻烦了。记住,头是从页面发送的第一件事。大多数重定向通常需要在页面的后面进行。为此,您必须缓冲页面的所有输出,并稍后检查重定向条件。在这一点上,您可以重定向页面用户头()或者简单地回显缓冲的输出。
有关缓冲的更多信息(优势)
什么是输出缓冲?
- 简单明了的回答!非常适合简单的页面重定向!
- 这样就不会遇到常见的Cannot modify header information - headers already sent by错误。
- @hmd,如果禁用了javascript怎么办?
- @现在几乎总是启用Istaqueahmed JavaScript,但如果禁用了它,则可以使用PHP缓冲区。这个问题回答了这个问题。如果您使用的是PHP缓冲,那么您就不需要使用这种方法了。
- 错误,即使没有缓冲,也可以(并且应该)在PHP中进行:在设计良好的页面中,所有相关的PHP处理都应该在任何HTML内容发送给用户之前进行。这样PHP重定向就可以正常工作了。
1. Using header function with exit()
1 2 3 4
| <?php
header('Location: target-page.php');
exit();
?> |
但是如果你使用页眉函数,那么有时你会得到"警告"。类似的报头已经发送"解决在发送报头之前不回传或打印",或者在头函数之后可以简单地使用EDCOX1×13或EDCOX1×0。
2. Without header
1 2 3
| <?php
echo"location.href='target-page.php';";
?> |
在这里你不会面临任何问题
3. Using header function with ob_start() and ob_end_flush()
1 2 3 4 5
| <?php
ob_start(); //this should be first line of your page
header('Location: target-page.php');
ob_end_flush(); //this should be last line of your page
?> |
- 像魅力一样工作。我用<?PHP回声"位置.HeRF="GooGo.Fr/';测试它,它做了我想要的
大多数答案都忘记了一个非常重要的步骤!
离开这条至关重要的第二条线,你可能会看到你在每天的世界跆拳道上结束。问题是浏览器不必考虑页面返回的标题,因此在忽略标题的情况下,页面的其余部分将在不重定向的情况下执行。
- 在终止脚本之前,如何向用户提供一些输出?你知道,人们喜欢知道发生了什么…
- 您假设脚本除了重定向之外没有其他功能。这可能根本不是真的。
- @丹尼尔:把它换成死亡("别再忽视我的头了!")
- 我喜欢你对die();的简单解释-如果你不这样做,用户可能会看到一个完整的页面,如果你使用它;用户将被重定向,没有暂时的内容问题将显示+1
- 有可能在发送头之后发生有用的活动,这些活动不会向浏览器发送任何内容,但会记录活动或完成记录事务。因此,对die/exit的需求取决于脚本。
用途:
1
| <?php header('Location: another-php-file.php'); exit(); ?> |
或者,如果已经打开了php标记,请使用以下命令:
您还可以重定向到外部页面,例如:
1
| header('Location: https://www.google.com'); exit(); |
确保包括exit()或include die()。
您可以使用会话变量控制对页面的访问并授权有效用户:
http://php.net/manual/en/reserved.variables.session.php。
最近,我受到网络攻击,并决定,我需要知道用户试图访问管理面板或Web应用程序的保留部分。
所以,我在一个文本文件中为IP地址和用户会话添加了一个日志访问,因为我不想打扰我的数据库。
这些答案中有许多是正确的,但它们假定您有一个绝对的URL,而事实并非如此。如果您想使用一个相对的URL并生成其余的,那么您可以这样做…
1 2 3 4
| $url = 'http://' . $_SERVER['HTTP_HOST']; // Get the server
$url .= rtrim(dirname($_SERVER['PHP_SELF']), '/\'); // Get the current directory
$url .= '/your -relative /path -goes /here /'; // <-- Your relative path
header('Location : ' . $url, true, 302); // Use either 301 or 302 |
header( 'Location: http://www.yoursite.com/new_page.html' );
我已经回答了这个问题,但我会再次回答,因为与此同时,我已经了解到,如果您在CLI中运行(重定向不会发生,因此不应该在exit()中运行),或者如果您的Web服务器将php作为(f)cgi运行(它需要一个以前设置的Status头来正确重定向),则会出现一些特殊情况。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function Redirect ($url, $code = 302)
{
if (strncmp('cli', PHP_SAPI , 3) !== 0)
{
if (headers_sent() !== true)
{
if (strlen(session_id()) > 0) // If using sessions
{
session_regenerate_id(true); // Avoids session fixation attacks
session_write_close(); // Avoids having sessions lock other requests
}
if (strncmp('cgi', PHP_SAPI , 3) === 0)
{
header(sprintf('Status: %03u', $code), true, $code);
}
header('Location: ' . $url, true, (preg_match('~^30[1237]$~', $code) > 0) ? $code : 302);
}
exit();
}
} |
我还处理了支持不同HTTP重定向代码(301、302、303和307的问题,正如我先前回答的评论中所述。以下是说明:
- 301-永久移动
- 302找到
- 303 -见其他
- 307-临时重定向(HTTP/1.1)
您可以使用下面的一些javascript方法
self.location="http://www.example.com/index.php";
window.location.href="http://www.example.com/index.php";
document.location.href = 'http://www.example.com/index.php';
window.location.replace("http://www.example.com/index.php");
- Javascript在客户机上运行,这可能是您想要的,也可能不是。
用途:
1 2 3 4 5 6
| <?php
header('Location: redirectpage.php');
header('Location: redirectpage.php');
exit();
echo"location.href='redirectpage.php';";
?> |
这是一个普通的PHP重定向,但是您可以通过下面的代码在几秒钟内完成重定向页面:
1 2 3
| <?php
header('refresh:5;url=redirectpage.php '); // Note: here 5 means 5 seconds wait for redirect.
?> |
像这里其他人说的,发送位置标题时使用:
1
| header("Location: http://www.mywebsite.com/otherpage.php" ); |
但在将任何其他输出发送到浏览器之前,您需要执行此操作。
此外,如果您要使用此功能阻止某些页面上未经身份验证的用户(如您所提到的),请记住,某些用户代理将忽略此功能并继续在当前页面上运行,因此发送后您需要死亡()。
- 太棒了!!在搜索分钟内,我为什么一直收到已发送的邮件头出错。+ 1!!
- 更一般的是,您已经/完全停止了脚本/。die()只是其中一种方法。
以下是我的想法:
imho,重定向传入请求的最佳方法是使用location headers,即
1 2 3
| <?php
header("Location: /index.php");
?> |
一旦执行此语句并发送输出,浏览器将开始重新定向用户。但是,确保在发送头之前没有任何输出(任何echo/var_dump),否则会导致错误。
虽然这是一个快速和肮脏的方式来实现最初的要求,它最终会成为一个搜索引擎优化灾难,因为这种重定向总是被解释为301/302重定向,因此搜索引擎将始终看到你的索引页是一个重新定向的页,而不是一个登陆页/主页。
因此它会影响网站的SEO设置。
- exit()应在头()之后立即使用
- @医生。同意。。应在header()调用后立即调用exit()。然而,我觉得,如果在header()语句之后没有更多的输出到浏览器,那么exit()可能不是必需的-只是我的观点
- 是的,但是你必须解释这一点,因为有人可以将你的代码行复制到他的脚本中,这可能会导致长时间的自寻烦恼。
- @Bhaskarpramanik想象你必须快速锁上一扇门,但是你必须再次拉/推/砸它们,以确保它是否已经锁上。
是的,可以使用header()函数,
1 2
| header("Location: http://www.yourwebsite.com/user.php"); /* Redirect browser */
exit(); |
最好的做法是在header()函数之后调用exit()函数,以避免下面的代码执行。
根据文档,在发送任何实际输出之前,必须调用header()。
要将访问者重定向到另一个页面(在条件循环中特别有用),只需使用以下代码:
1 2 3
| <?php
header('Location: mypage.php');
?> |
在这种情况下,mypage.php是您希望重定向访问者的页面地址。此地址可以是绝对地址,也可以包括此格式的参数:mypage.php?param1=val1&m2=val2)。
相对/绝对路径
在处理相对或绝对路径时,最好从服务器的根目录(文档根目录)中选择绝对路径。使用以下格式:
1 2 3
| <?php
header('Location: /directory/mypage.php');
?> |
如果目标页面位于其他服务器上,则包括完整的URL:
1 2 3
| <?php
header('Location: http://www.ccm.net/forum/');
?> |
HTTP头处理模块
根据HTTP协议,HTTP报头必须发送EDCOX1,9,任何类型的内容。这意味着任何字符都不应该在页眉前发送——甚至没有一个空的空间!
临时/永久重定向
默认情况下,上述重定向的类型是临时的。这意味着搜索引擎,如谷歌搜索,在索引时不会考虑重定向。
如果您想通知搜索引擎页面已永久移动到另一个位置,请使用以下代码:
1 2 3 4
| <?
header('Status: 301 Moved Permanently', false, 301);
header('Location: new_address');
?> |
例如,此页具有以下代码:
1 2 3 4 5
| <?
header('Status: 301 Moved Permanently', false, 301);
header('Location: /pc/imprimante.php3');
exit();
?> |
当你点击上面的链接时,你会自动重定向到这个页面。此外,它是一个永久重定向(状态:301永久移动)。因此,如果您在谷歌中输入第一个URL,您将自动重定向到第二个重定向链接。
PHP代码解释
服务器将解释位于header()后面的PHP代码,即使访问者移动到重定向中指定的地址。在大多数情况下,这意味着您需要一种方法来遵循exit()函数的header()函数,以减少服务器的负载:
1 2 3 4 5
| <?
header('Status: 301 Moved Permanently', false, 301);
header('Location: address');
exit();
?> |
- 为什么是¶(在第二段末尾附近)?你的意思是"EDOCX1"〔2〕而不是"EDOCX1"〔3〕吗?(html实体para)是"&182;"-也许是某个外部程序进行了转换?).
使用PHP重定向的最佳方法是以下代码…
1
| header("Location: /index.php"); |
确保之后没有代码可用
1
| header("Location: /index.php"); |
所有代码必须在上述行之前执行。
假设,
案例1:
1 2
| echo"I am a web developer";
header("Location: /index.php"); |
它将正确地重定向到位置(index.php)。
案例2:
1 2
| return $something;
header("Location: /index.php"); |
上面的代码不会重定向到位置(index .php)。
- 已经有了一个包含您提供的信息以及更多信息的1085答案。
在语义Web的前夕,正确性是值得考虑的。不幸的是,PHP的"location"头仍然使用HTTP302重定向代码,严格来说,这不是最好的重定向代码。它应该使用的是303。
W3C非常客气地提到303头与"许多HTTP/1.1之前的用户代理"不兼容,这意味着当前没有浏览器。所以,302是一件文物,不应该使用。
…或者你可以像其他人一样忽略它…
是的,可以使用PHP。我们将重定向到另一个页面。
尝试以下代码:
1 2 3 4 5
| <?php
header("location:./"); // Redirect to index file
header("location:index.php"); // Redirect to index file
header("location:example.php");
?> |
我们可以用两种方式做到:
当用户访问https://bskud.com/pincode/bihar/index.php时,重定向至https://bskud.com/pincode/bihar.php。
通过下面的PHP代码
1 2 3 4
| <?php
header("Location: https://bskud.com/PINCODE/BIHAR.php");
exit;
?> |
将上述代码保存在https://bskud.com/pincode/bihar/index.php中
如果任何条件为真,则重定向到另一页:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php
$myVar ="bskud";
if ($myVar =="bskud") {
?>
window.location.href="https://bskud.com";
<?php
}
else {
echo"Check the website name again";
}
?> |
- 这是什么?请不要使用链接到您自己的网站。第二个例子使用的是javascript重定向,而不是php header()函数。
对于重定向,请使用此代码
1
| header("Location: http://www.example.com/blog"); |
用途:
1 2 3 4 5 6 7 8
| <?php
$url ="targetpage"
function redirect $url(){
if (headers_sent()) == false{
echo 'window.location.href="' . $url . '";';
}
}
?> |
- 你能解释一下你的代码的功能吗?您的答案因其长度和内容而被标记。
1。使用header,一个内置的php函数
a)无参数的简单重定向
1 2 3
| <?php
header('Location: index.php');
?> |
b)使用get参数重定向
1 2 3 4
| <?php
$id = 2;
header("Location: index.php?id=$id&msg=succesfully redirect");
?> |
2。用PHP中的javascript重定向
a)无参数的简单重定向
1 2 3
| <?php
echo"location.href='index.php';";
?> |
b)使用get参数重定向
1 2 3 4
| <?php
$id = 2;
echo"location.href='index.php?id=$id&msg=succesfully redirect';";
?> |
您可以使用此代码从一个页面重定向到另一个页面
1
| header("Location: index.php"); |
或者,如果您尝试在PHP中使用javascript重定向,则使用脚本标记进行重定向。
1
| echo"window.open('your path where you redirect ','_self')"; |
如果您运行的是Apache,那么也可以使用.htaccess进行重定向。
1
| Redirect 301 / http://new-site.com/ |
有多种方法可以做到这一点,但是如果您更喜欢php,我建议您使用header()功能。
基本上
1 2 3
| $your_target_url ="www.example.com/index.php";
header("Location : $your_target_url");
exit(); |
如果你想提高一个等级,最好在函数中使用它。这样,您就可以在其中添加身份验证和其他检查元素。
让我们通过检查用户级别来尝试。
因此,假设您已将用户的权限级别存储在名为u_auth的会话中。
在function.php中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?php
function authRedirect ($get_auth_level,
$required_level,
$if_fail_link ="www.example.com/index.php"){
if ($get_auth_level != $required_level){
header(location : $if_fail_link);
return false;
exit();
}
else{
return true;
}
}
. . . |
然后,您将为要进行身份验证的每个页面调用该函数。
就像在page.php或任何其他页面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php
// page.php
require"function.php"
// Redirects to www.example.com/index.php if the
// user isn’t authentication level 5
authRedirect($_SESSION[‘u_auth’], 5);
// Redirects to www.example.com/index.php if the
// user isn’t authentication level 4
authRedirect($_SESSION[‘u_auth’], 4);
// Redirects to www.someotherplace.com/somepage.php if the
// user isn’t authentication level 2
authRedirect($_SESSION[‘u_auth’], 2,"www.someotherplace.com/somepage.php");
. . . |
参考文献;
- http://php.net/manual/en/function.header.php
您可以尝试使用php header函数进行重定向。您需要设置输出缓冲区,这样浏览器就不会向屏幕发出重定向警告。
- exit()应在头()之后立即使用。同时,默认情况下,out buffering已经自动打开一段时间了。
使用此代码进行更好的重定向:
1 2 3
| $ref="http://www.example.com';
echo 'window.location ="'.$ref.'";';
exit; |