【问题标题】:Redirect links using PHP with PDO使用带有 PDO 的 PHP 重定向链接
【发布时间】:2025-12-11 01:35:01
【问题描述】:

大家好,你们好吗?

我正在使用 PDO 语句处理一个项目,我想将用户重定向到某个 URL,它从数据库中将其带到该 URL,但是浏览器在重定向时给了我一个错误。如果我键入某个网站进入我的代码它重定向没有任何问题。

这是我的代码:

if (isset($_GET['r']) || !empty($_GET['r']))
{
        $l_url = $_GET['r'];

        $con = $db->prepare("INSERT INTO links (url) VALUE (?)");
        $con->execute(array($_POST['url']));

        header("location:" .$l_url);
        exit();
} 

如果我在“位置”之后输入任何 URL,它会毫无问题地重定向,但这里不是。

错误:

Firefox - Firefox 中的“页面未正确重定向”和“这 页面不工作,本地主机重定向你太多次。”在 Chrome 和我确实清除了会话和 Cookies

谢谢。

【问题讨论】:

  • 错误是什么?
  • “页面未正确重定向”在 Firefox 中和“此页面无法正常工作,本地主机重定向您的次数过多。”在 Chrome 中,我确实清除了会话和 Cookie。
  • 什么是 $l_url 值?以及为什么 (isset($_GET['r']) || !empty($_GET['r'])) 而不是 (isset($_GET['r']) && !empty($_GET['r' ])) ?
  • $l_url 的值和 DB 上的一样,就是正确的。另外,我已将 if 语句更改为 &&。

标签: php mysql redirect pdo


【解决方案1】:
isset($_GET['r']) || !empty($_GET['r'])

不需要的代码,可以把上面的表达式改成如下:

!empty($_GET['r'])

关于您的问题:

但是浏览器在重定向时给了我一个错误..

您收到什么错误消息?如果没有这些信息,我无能为力,但变量 $_POST['url'] 可能不存在。

【讨论】:

  • 如果我删除“isset .. etc”,它将自动重定向,但我的代码要求用户在重定向之前单击特定 URL。错误消息显示:“页面未正确重定向”在 Firefox 中和“此页面无法正常工作,本地主机重定向您的次数过多。”在 Chrome 中,我确实清除了会话和 Cookie。
  • 不,您可以删除,因为您要检查同一个变量 2 次。我几乎可以肯定变量$_POST['url']不存在,尝试执行var_dump($_POST); exit;进行调试
  • 输出是:“array(0){}”,这意味着它是空的。我该怎么办?