Переменные PHP GET передаются во время просмотра - PullRequest
0 голосов
/ 25 января 2012

Мой сайт организован по темам.Пользователи могут переключаться между темами на любой странице в любое время.Я хотел бы иметь возможность передавать эту тему со страницы на страницу.Я предполагаю, что это должно быть сделано в посте PHP или получить переменнуюЯ могу взять тему из сообщения или получить переменную, а затем запустить остальную часть моего сайта.Однако, похоже, что для передачи этой переменной требуется форма на каждой странице.На данный момент единственный способ передать переменные post или get был из форм на предыдущей странице.Я никогда не передавал эти переменные на нескольких страницах.Нужна ли мне форма на каждой странице для передачи этих переменных?Кроме того, это стандартный способ сделать это?

Ответы [ 4 ]

1 голос
/ 25 января 2012

Наименьший излишний способ сделать это - добавить некоторый javascript, который устанавливает cookie каждый раз, когда кто-то переходит к новой теме. Это предполагает, что вы можете каким-то образом выбрать все ссылки, соответствующие темам (предположительно, через классы)

Лучший метод - из-за совместимости, надежности и накладных расходов - но не обязательно выполнимый, если требуется изменить большое количество ссылок, - это использовать запросы GET, как предложил другой автор

1 голос
/ 25 января 2012

Вам, вероятно, следует использовать GET, потому что звучит так, будто вы просто пытаетесь отобразить различную информацию, а POST предназначен для выполнения изменений или действий.

Если вы решили использовать переменные GET, все, что вам нужно сделать, это добавить их в конец ссылки href:

<a href="something.php?topic=bananas">MORE BANANAS</a>
0 голосов
/ 25 января 2012

Предложение Колинка о размещении темы через оператор эха PHP для каждого URL, безусловно, будет работать. Однако есть еще один вариант, который меня удивил, еще не подошел.

Вы можете использовать PHP Session Manager для хранения переменной. Это похоже на использование куки; однако это только временно (ограничено сеансом). Где файл cookie может быть постоянным в течение нескольких сеансов.

<?php
// use this code before the page is generated, before the topic is decided.
session_start();
if (isset($_GET['topic']) && $_GET['topic'] != $_SESSION['topic']) {
    // GET['topic'] is set, session variable does not match
    // you may want to sanitize or limit what can be passed via ?topic=
    $_SESSION['topic'] = $_GET['topic'];
} else if (isset($_SESSION['topic'])) {
    // Session topic is not empty, run code to display appropriate content
} else {
    // No topic is set, display default
}
?>

Это ни в коем случае не единственное решение, но оно дает вам дополнительную опцию.

0 голосов
/ 25 января 2012

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

<a href="page2.php?foo=bar&baz=bat">Foobar</a>

вы сделаете это:

<?php echo anchor('page2.php','Foobar'); ?>

где ваша функция будет выглядеть так:

/**
 * Function creates an anchor tag and optionally 
 * appends an existing query string
 * @param string $url
 * @param string $txt
 * @param bool $attach_qs Whether or not to follow a query string
*/
function anchor($url, $txt, $attach_qs = true) 
{
    $qs = '';
    if ($attach_qs === true) {
        $qs = (!empty($_SERVER['QUERY_STRING'])) ? '?' . $_SERVER['QUERY_STRING'] : '';
    }
    return '<a href="' . $url . $qs . '">' . $txt . '</a>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...