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

时间:2014-02-02 01:02:56

标签: php url query-string pageload

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

然而,如果有人在没有网址中包含查询字符串的情况下访问网页时会出现问题,则菜单选项不会突出显示。

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

网址是www.mysite.co.uk/Folder1/Folder2/Page.php?id=3

我希望默认的查询字符串为?id=1,如果网址中不存在。{/ p>

关于你如何做到这一点的任何想法?

如果用户使用网址www.mysite.co.uk/Folder1/Folder2/Page.php?

进行访问会发生什么情况

网址最终会以www.mysite.co.uk/Folder1/Folder2/Page.php??id=1

结尾

或者是www.mysite.co.uk/Folder1/Folder2/Page.php?id=1

谢谢,

4 个答案:

答案 0 :(得分:11)

也许有很多方法。如果不存在,您可以为$ _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 :(得分:1)

这应该有效:

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

答案 2 :(得分:-1)

做类似的事情:

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

答案 3 :(得分:-1)

在php中,查询字符串被加载到$ _REQUEST变量中。在您的情况下,$ _REQUEST ['id']将等于1,3或查询字符串中的任何内容。

为了解决当没有通过GET提供id时的问题,我认为足以在每个php页面的开头添加这一行:

<?php
if ( $_REQUEST['id']=='' ) {$_REQUEST['id']=1;}
?>

无需动态更改网址。