If语句:如何拉第二个GET变量

时间:2010-02-13 05:14:45

标签: php variables get

如何让我的第二个变量? (我已经设置了switch


<body id="<?php if (! isset($_GET['page'])) { echo "home"; } else { $_GET['page']; echo $page; } ?>">

我有一个switch语句从

中提取页面
index.php?page=#####

我已将此部分添加到我的switch

index.php?page=####&section=#####

现在,如果我在页面上=照片,我的代码最终会成为:

<body id="photos">

我需要这样做,以便如果任何链接上有“sections”变量,就像 page = photos&amp; section = cars 一样,它使用相同的ID:

<body id="photos">

4 个答案:

答案 0 :(得分:0)

首先,HTML元素只能有一个id。因此,如果您想创建混合(例如页面部分),您可以执行以下操作:

<body id="<?php echo isset($_GET['page']) ? $_GET['page'] : "home"; echo isset($_GET['section']) ? ("-".$_GET['section']) : ''; ?>">

有关PHP中的三元运算符的更多信息(?和:我在echo语句中使用),请参阅http://php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:0)

将PHP代码移到body的id属性之外以提高可读性,并使用else if。通过清理或验证来自$_GET的输入,确保您的代码不易受到注入攻击。例如:

<?php
    function isValidID($x) {
        return preg_match('/^[A-Z][-_.A-Za-z0-9]$/i', $x);
    }

    if (isset($_GET['section']) && isValidID($_GET['section'])) {
        $bodyID = $_GET['section'];
    } else if (isset($_GET['page']) && isValidID($_GET['page'])) {
        $bodyID = $_GET['page'];
    } else {
        $bodyID = 'home';
    }
?>
...
<body id="<?php echo $bodyID; ?>">

可替换地,

<?php
    function isValidID($x) {
        return preg_match('/^[A-Z][-_.A-Za-z0-9]$/i', $x);
    }
    $bodyID='home';
    foreach (array('section', 'home') as $key) {
        if (isset($_GET[$key]) && isValidID($_GET[$key])) {
            $bodyID = $_GET[$key];
            break;
        }
    }
?>
...
<body id="<?php echo $bodyID; ?>">

在这种情况下,我会使用第一个展开的版本。如果必须检查更多输入键,请使用基于循环的方法。

如果您决定要同时使用页面&amp; ID中的部分,您可以尝试以下内容:

<?php
    function isValidID($x) {
        return preg_match('/^[A-Z][-_.A-Za-z0-9]$/i', $x);
    }

    if (isset($_GET['page']) && isValidID($_GET['page'])) {
        $bodyID = $_GET['page'];
    } else {
        $bodyID = 'home';
    }
    if (isset($_GET['section']) && isValidID($_GET['section'])) {
        $bodyID .= '_' . $_GET['section'];
    }
?>
...
<body id="<?php echo $bodyID; ?>">

答案 2 :(得分:0)

我不完全确定我理解你的问题,但你在做什么:

$_GET['page']; echo $page;

您认为发生了什么?你正在回应一个没有定义的变量。如果你想回显url中传递的值,只需执行:

echo $_GET['page'];

GET并不意味着你获得变量,它是将变量传递给页面的方法。可能的方法是get(在url中)或post(not)。

答案 3 :(得分:0)

如果该部分被定义,那么这不是一个如果找出它吗?即

if(isset($_GET['section'])){
     //create div
} elseif(isset($_GET['page']){
    //create fallback div
}