PHP/MySQL - 如何在没有表单的情况下将 MySQL 数据添加到地址栏中的 url

PHP/MySQL - how to add MySQL data to url in address bar without a form

我在 localhost:8888/documents/index.php 有一个网站。

在这个文件中,我从 MySQL table 中加载了一个 随机 行。我有大约 1000 行,它会随机选择一行,并将该行中的一些数据 return 放入我的页面。例如,如果它选择第 467 行:

name = George
age = 23
key = fe4v6

它会在我的 index.php 上显示:hello, George (23 years old)。键是每行的随机唯一变量。

我想要的:我希望地址栏中的URL在刷新时自动更新具有键属性.所以我想要:localhost:8888/documents/index.php?key=fe4v6。当我刷新页面时,我希望它用 MySQL 数据库中相应行的新键值更新 URL。

我不使用表格。我与我的数据库建立连接,并在随机行上使用查询和 fetch_assoc()。在我的 index.php 中,我这样显示名称:

<?php echo $row['name'] ?>

我不知道这有多容易或多难,也许有更简单的解决方案。我想听听你的意见,谢谢!

一个快速的解决方案是使用 header 重定向

if(!isset($_GET['UniqueKey'] {
    header('location: localhost:8888/documents/index.php?UniqueKey='.$row['name']);
}

代码首先检查是否设置了 UniqueKey,因此它不会无限重定向。

您可以按如下方式使用header。在您拥有要作为查询字符串参数传入的行值之后添加此代码段。

<?php header('Location: localhost:8888/documents/index.php?key='.$row['key']); ?>

如果您只需要公平地支持recent browsers,您可以使用历史API。

<script>
    var path = "<?php echo "localhost:8888/documents/index.php?key=".$row['key']; ?>";
    var page_title = "Custom Title";
    history.pushState({}, page_title, path);
    document.title = page_title;
</script>

一旦此代码在浏览器中 运行(即在页面加载期间),这将更新添加密钥的路径。无需重新加载,因此无需编写任何逻辑来防止分配新的随机行。