Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка в скрипте, предоставляющему счётчик каждому отдельному пользователю

3.0K
29 августа 2011 года
crujer
20 / / 29.01.2004
Думаю, похожая тема обсуждалась, но не могу найти таковой.

Имеется скрипт на php, который предоставляет пользователю две кнопки: первая увеличивает значение некоторой переменной на единицу, другая уменьшает. При этом, переменная может иметь разные значения для разных пользователей. Однако, скрипт не работает, не могу понять, в чём ошибка:

<?php
session_start();

if(isset($_SESSION['a'])){
if (isset($_POST['submit1'])) {$_SESSION['a'] = $_SESSION['a']+$submit1;}
if (isset($_POST['submit2'])) {$_SESSION['a'] = $_SESSION['a']+$submit2;}}
else {$_SESSION['a']=0;
session_register("a");}
?>
<html>
<body>
<?php
echo $_SESSION['a'];
?>
<FORM METHOD=POST ACTION="addsubtr.php">
<INPUT TYPE="submit" NAME="submit1" VALUE="1">
<INPUT TYPE="submit" NAME="submit2" VALUE="-1">
</FORM>
</body>
</html>

Заодно, хочу спросить: как можно сделать так, чтобы каждой сессии присваивался порядковый номер в общем массиве и выводить этот номер на той же страничке? Заранее благодарен.
7.2K
29 августа 2011 года
polaroid
94 / / 05.07.2008
Обратите внимание на эти строки:
 
Код:
$_SESSION['a'] = $_SESSION['a'] + $submit1;
$_SESSION['a'] = $_SESSION['a'] + $submit2;

Переменные $submit1 и $submit2 будут существовать только если в конфигурации PHP включен параметр register_globals. Если он не включен, надо просто заменить $submit1 и $submit2 на $_POST['submit1'] и $_POST['submit2'] соответственно.
Т.е. будет вот так:
 
Код:
$_SESSION['a'] = $_SESSION['a'] + $_POST['submit1'];
$_SESSION['a'] = $_SESSION['a'] + $_POST['submit2'];


По поводу порядкового номера - для начала вам необходимо этот "общий массив" где-то хранить. Например в файле или в базе данных. Если храниться он будет в файле, то нужно записывать обязательно помимо порядкового номера еще и параметр PHPSESSID, который и будет являться идентификатором сессии.
Например в таком формате:
<номер>:<PHPSESSID>
т.е. например
 
Код:
1:5010f76de3fb95222907892f494f1c12
2:49d4242389feb8482934dc391ed9312
...


Можно в начале файла писать последний присвоенный номер, чтобы скрипт к нему потом прибавлял единицу и создавал новую запись. С базой данных легче, т.к. там можно задать параметру номера свойство auto_increment, т.е. база данных будет сама беспокоиться о ведении порядковых номеров.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог