$_SESSION['a'] = $_SESSION['a'] + $submit1;
$_SESSION['a'] = $_SESSION['a'] + $submit2;
Ошибка в скрипте, предоставляющему счётчик каждому отдельному пользователю
Имеется скрипт на 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>
Заодно, хочу спросить: как можно сделать так, чтобы каждой сессии присваивался порядковый номер в общем массиве и выводить этот номер на той же страничке? Заранее благодарен.
Код:
Переменные $submit1 и $submit2 будут существовать только если в конфигурации PHP включен параметр register_globals. Если он не включен, надо просто заменить $submit1 и $submit2 на $_POST['submit1'] и $_POST['submit2'] соответственно.
Т.е. будет вот так:
Код:
$_SESSION['a'] = $_SESSION['a'] + $_POST['submit1'];
$_SESSION['a'] = $_SESSION['a'] + $_POST['submit2'];
$_SESSION['a'] = $_SESSION['a'] + $_POST['submit2'];
По поводу порядкового номера - для начала вам необходимо этот "общий массив" где-то хранить. Например в файле или в базе данных. Если храниться он будет в файле, то нужно записывать обязательно помимо порядкового номера еще и параметр PHPSESSID, который и будет являться идентификатором сессии.
Например в таком формате:
<номер>:<PHPSESSID>
т.е. например
Код:
1:5010f76de3fb95222907892f494f1c12
2:49d4242389feb8482934dc391ed9312
...
2:49d4242389feb8482934dc391ed9312
...
Можно в начале файла писать последний присвоенный номер, чтобы скрипт к нему потом прибавлял единицу и создавал новую запись. С базой данных легче, т.к. там можно задать параметру номера свойство auto_increment, т.е. база данных будет сама беспокоиться о ведении порядковых номеров.