-2

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

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

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

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

它应该是这样的:

http://site/admin/index.php

我正在遵循一个旧指南,并且我在互联网上寻找了这个(重定向)功能,但我找不到任何东西。这现在仍然有效还是不再支持?

4

1 回答 1

1

除非您在服务器端代码中实际使用它,否则只需将查询字符串添加到您的 URL 不会做任何事情。在您的 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

?>

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

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

于 2012-08-11T22:42:35.540 回答