Как увеличить количество чего-либо с помощью сеансов? - PullRequest
0 голосов
/ 29 января 2012

Я хочу, чтобы сессия увеличивала число с каждым нажатием кнопки.Проблема в том, что я не могу заставить его увеличиваться.Казалось, что он получает одно и то же значение все время.Сценарий ниже.

$no = 1;
session_start();

session_register("sess_id");
$_SESSION['sess_id'][]=$no;

$no++;

Ответы [ 6 ]

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

Основная проблема заключается в том, как вы увеличиваете свою переменную.PHP по умолчанию не назначает переменные по ссылке, поэтому $_SESSION['sess_id'][] = $no; фактически присваивает значение (в дополнение к индексации переменной как целого числа).Ваш последующий вызов $n++ не изменит значения, хранящегося в вашем сеансе PHP.

Я думаю, что вам нужно присвоить по ссылке , например

$no = 1;
session_start();
$_SESSION['your_session_var_name'] =& $no; // value is '1'

$no++; // $no is now '2'
echo $_SESSION['your_session_var_name']; // outputs '2'
1 голос
/ 29 января 2012

Использование session_register УСТАРЕЛО с PHP 5.3.0

<?php
session_start(); 
$_SESSION['count']=(isset($_SESSION['count']))?$_SESSION['count']+1:0;
?> 
1 голос
/ 29 января 2012

Все, что вам нужно , нужно , чтобы увеличить значение в массиве $_SESSION:

session_start();
$_SESSION['no'] = empty($_SESSION['no']) ? 0 : $_SESSION['no'];
$_SESSION['no'] += 1;
0 голосов
/ 30 января 2012

При запуске нового сеанса все переменные сеанса пусты (не установлены).Если вы хотите увеличить один из них, вам нужно сначала создать его, если он не существует, или, если он существует (после запросов), увеличить его:

session_start();
if (FALSE === isset($_SESSION['no']))
{
    # session is new
    $_SESSION['no'] = 1;
}
else
{
   # session already exists
   $_SESSION['no']++;
}

Вы можете использовать isset Документы языковая конструкция для проверки, установлена ​​ли переменная или нет.Если он не установлен (FALSE), переменная сеанса инициализируется значением 1.

Если он существует, переменная сеанса увеличивается с помощью оператора ++ Документы .

Убедитесь, что это не связано с идентификатором сеанса.Для вашего вопроса нет необходимости изменять или устанавливать идентификатор сеанса, PHP сделает это за вас.

Я надеюсь, что это поможет вам лучше понять, с чем вы имеете дело, как вы написали в комментарии выше, что выпонятия не имею, почему это работает;)

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

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

session_start();
if (isset($_SESSION['number'])) { /* If there is already a value set */
  $_SESSION['number']++; /* Increment by 1 */
}
else { /* If there is no value set, ie the user is clicking the button for the first time */
  $_SESSION['number'] = 1; /* Set to 1 */
}
0 голосов
/ 29 января 2012

Больше не используйте session_register, просто используйте массив $_SESSION.

 session_start();
 if(!isset($_SESSION['sess_id'])) $_SESSION['sess_id'] = 0;
 $_SESSION['sess_id']++;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...