запоминание флажков для сессии - PullRequest
0 голосов
/ 26 марта 2012

У меня есть несколько таких флажков:

<input type="checkbox" name="regions[]" value="north-east" />North East<br />
<input type="checkbox" name="regions[]" value="north-west" />North West<br />
<input type="checkbox" name="regions[]" value="east-midlands" />East Midlands<br />
<input type="checkbox" name="regions[]" value="west-midlands" />West Midlands<br />
<input type="checkbox" name="regions[]" value="south-east" />South East<br />
<input type="submit" name="selectionsSubmit" value="Submit" />

Имена и значения не могут быть установлены по-разному, потому что я использую его для этого php-кода:

if(isset($_POST['selectionsSubmit'])) {
$regions=$_POST["regions"];
$how_many=count($regions);
if($how_many>0)
{
    $link=home_url('/') ."?tag=";
    if($how_many!=12 && $how_many!=0)
    {
        for($i=0; $i<$how_many; $i++)
        { 
            $link=$link ."+". $regions[$i]; 
        } 
    }
wp_redirect($link);
}
else 
{
    echo 'You did not select anything.';
}}

Создает ссылку на тег и перенаправляет на эту ссылку. Это мой первый PHP-код, и я должен упомянуть, что я использую WordPress.

Теперь мне нужен способ сделать выбранные флажки запоминающимися для сеанса ... пока пользователь не закроет сайт. Я нашел много способов, как это сделать, но я не мог заставить его работать. Я думаю, что HTML5 sessionStorage может быть полезным, но мое отсутствие знаний мешает мне найти путь.

Ответы [ 3 ]

2 голосов
/ 26 марта 2012

Попробуйте сеансы php, и если ваши значения не отслеживаются, обязательно объявите начало сеанса.Попробуйте сначала без него на случай, если WordPress уже начал сеанс, что вполне вероятно.http://php.net/manual/en/features.sessions.php

$regions=$_POST["regions"];
$_SESSION["regions"] = $regions;

РЕДАКТИРОВАТЬ: @Chibuzu прав, если сеансы не работают, просто используйте этот код выше, где вы пытаетесь получить доступ или установить переменные сеанса

if(session_id() == '') {
    session_start();
}
0 голосов
/ 26 марта 2012

Вы должны поместить

 <?php session_start ?>

в верхней части страницы, чтобы вы могли использовать $ _SESSION, помните: если вы обращаетесь к сеансу или используете его, вам нужно сначала объявить session_start

Затем

 $_SESSION['religion'] = $_POST['religion'];

и т. Д.

0 голосов
/ 26 марта 2012

Да, Wordpress не поддерживает сессию. Таким образом, вы должны начать сеанс самостоятельно.

session_start();

Может быть где-то в начале, перед отправкой заголовка. Люди обычно добавляют его в файл конфигурации или файл функций. Просто попробуйте и посмотрите. А затем используйте переменную сеанса для хранения ваших данных.

$_SESSION['regions'] = $regions;

Кроме того, вы можете использовать «foreach» в цикле вместо «for». Просто взгляните на «foreach». Это поможет гораздо больше, чем «для».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...