If-оператор: как вытащить 2-ю переменную GET - PullRequest
0 голосов
/ 13 февраля 2010

Как мне получить это, чтобы вытащить мою 2-ю переменную? (У меня уже есть настройка 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">

Мне нужно сделать так, чтобы, если на какой-либо ссылке была переменная "section", например page = photos & section = cars , она использовала тот же идентификатор:

<body id="photos">

Ответы [ 4 ]

0 голосов
/ 13 февраля 2010

Разве это не было бы, если бы выяснить, определен ли раздел? т.е.

if(isset($_GET['section'])){
     //create div
} elseif(isset($_GET['page']){
    //create fallback div
}
0 голосов
/ 13 февраля 2010

Переместите код PHP за пределы атрибута 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; ?>">

В этом случае я бы использовал первую развернутую версию. Если вам нужно было проверить больше клавиш ввода, используйте циклический подход.

Если вы решите, что хотите, чтобы в идентификаторе были указаны страница и раздел, попробуйте что-то вроде:

<?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; ?>">
0 голосов
/ 13 февраля 2010

Я не совсем уверен, что понимаю ваш вопрос, но где вы делаете:

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

Как вы думаете, что происходит? Вы повторяете переменную, у которой нет определения. Если вы хотите отобразить значение, переданное в URL, просто выполните:

echo $_GET['page'];

GET не означает, что вы получаете переменную, это метод, которым переменная была передана на страницу. Возможные методы: get (в URL) или post (нет).

0 голосов
/ 13 февраля 2010

Прежде всего, элемент HTML может иметь только один идентификатор. Поэтому, если вы хотите создать гибрид (например, раздел страницы), вы можете сделать что-то вроде этого:

<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

...