我有一个重定向错误

时间:2012-08-11 22:26:54

标签: php

我正在处理一个简单的登录表单,我有这个重定向网址:

<form method="post" action="/incs/login.php?redirect=<?php echo $_SERVER['PHP_SELF'];?>">

但是当我填写表单并点击提交按钮时,我被重定向到错误的网址:

http://site/incs/login.php?redirect=/admin/index.php

它应该是这样的:

http://site/admin/index.php

我正在关注一位旧指南,我在互联网上寻找此(重定向)功能,但我找不到任何东西。这现在仍然有用还是不再受支持?

1 个答案:

答案 0 :(得分:1)

除非您在服务器端代码中实际使用它,否则只需在您的网址中添加query string即可。在你的php脚本中,你需要处理实际的重定向,如下所示:

<?php

/* Process form data */

if(isset($_REQUEST['redirect'])){
   $url = preg_replace('/[\?\&].*/','',$_REQUEST['redirect']);
   if ($url == '') $url='/';
}

header("Location: $url"); // <-- this is what actually redirects

?>

以上是一个很大的简化,但它显示了一般的想法。在实际应用程序中,如果表单数据有效(例如,成功登录),您可能只会重定向。您可能还需要验证重定向网址,以确保它是您网站中的有效网址。

如果您正在使用某种PHP框架,那么它将处理所有这些细节,您只需要正确配置它。