检查查询字符串是否存在,如果不存在则创建一个 - PHP

13

我有几个页面使用查询字符串来突出显示菜单选项,页面上的所有URL都包含当前查询字符串,因此如果用户点击链接,下一页将突出显示相同的菜单选项。

但是,当某人访问未包含在URL中的查询字符串的页面时,菜单选项不会突出显示。

我想要做的是检查URL以查看是否存在查询字符串,如果没有,则创建一个。

URL的格式为 www.mysite.co.uk/Folder1/Folder2/Page.php?id=3

如果URL中不存在默认查询字符串,则希望默认查询字符串为?id=1

你有什么想法如何实现?

如果用户使用URL www.mysite.co.uk/Folder1/Folder2/Page.php? 访问会发生什么?

URL会变成www.mysite.co.uk/Folder1/Folder2/Page.php?id=1还是www.mysite.co.uk/Folder1/Folder2/Page.php??id=1

谢谢。

4个回答

18

也许有很多种方法。如果$_GET键不存在,您可以为其分配一个值。或者,如果您真的需要查询字符串,您可以将用户重新导航到带有现有查询字符串的同一页面。

if (!isset($_GET['id'])) {
    header("Location: Page.php?id=1");
    exit;
}

它应该在页面上的任何输出之前。因此,如果用户访问Page.phpPage.php?Page.php?someDifferentParamThanId=10, 它将在isset($_GET['id'])上返回false,因此将重定向到Page.php?id=1


1
这应该有效:

if(isset($_GET['id'])){
    //It exists
}else{
    //It does not, so redirect
    header("Location: Page.php?id=1");
}

-1

做类似这样的事情:

if(!isset($_GET['id'])){
  header('LOCATION:www.mysite.co.uk/Folder1/Folder2/Page.php?id=1'); die();
}

-1
在PHP中,查询字符串被加载到$_REQUEST变量中。在您的情况下,$_REQUEST['id']将等于查询字符串中获取的1、3或其他值。
为了解决没有通过GET传递ID的问题,我认为只需要在每个PHP页面的开头添加这一行代码即可:
<?php
if ( $_REQUEST['id']=='' ) {$_REQUEST['id']=1;}
?>

没有必要动态更改URL。


$_GET 是 $_REQUEST 的子集,我建议你使用 $_GET。 - Dizzley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接