$_SESSION

t3710

Новичок
Пример чисто для изучения PHP
Пожалуйста, подскажите что не так?
В index.php
if (isset($_REQUEST[session_name()])) session_start();
if (!empty($_SESSION['one']))
{
echo '--'.$_SESSION['one'].'++';
if ($_SESSION['one']='1')
{
echo '*********************************';
$_SESSION['one']='0';
}
} else {echo '++++++++++';}
При открытии index.php я получаю ++++++++++, это нормально.

Из index.php вызываю standards.php
и $_SESSION['one']='1';
и ниже echo '--'.$_SESSION['one'].'++';
получаю эту единицу.
В standards.php в форме form method="post" name="f1" id="f1" action="index.php"
При возврате в index.php я должна получить 1, но получаю ++++++++++
В standards.php тоже есть строчка
if (isset($_REQUEST[session_name()])) session_start();
Как я поняла, этого достаточно для работы с сессионными переменными.
$_SESSION['one'] остается пустой или я ее не так принимаю.
Вместо action="index.php" в форме попробовала указать полный путь, тоже не работает:(
Где я ошиблась?
 

Вурдалак

Продвинутый новичок
Во-первых, тут опечатка
PHP:
if ($_SESSION['one']='1')
Во-вторых, empty($_SESSION['one']) возвращает true, если там 0.
 

t3710

Новичок
Во-первых, тут опечатка
PHP:
if ($_SESSION['one']='1')
Во-вторых, empty($_SESSION['one']) возвращает true, если там 0.
Во-первых, если if (!empty($_SESSION['one'])) я написала правильно, то должен был сработать тогда echo '--'.$_SESSION['one'].'++';
он не сработал
Во-вторых, вот примеры из скриптов
$_SESSION['user1']=localtime();
$_SESSION['products30'] = "products30/";
т.е. передаются строчки
указано что empty($_SESSION['one']) предназначен для первого вхождения, т.е. для неинициализированной сессионной переменной
Как я понимаю, после инициализации должен сработать другой echo
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
t3710, открою тебе секрет, что 0, '0', false и null - это все empty переменные. На счет опечатки с присваиванием тебе Вурдалак все верно написал. Назови ка нам источник, по которому ты учишь язык, есть большие подозрения, что материал надо менять, и срочно
 

t3710

Новичок
t3710, открою тебе секрет, что 0, '0', false и null - это все empty переменные. На счет опечатки с присваиванием тебе Вурдалак все верно написал. Назови ка нам источник, по которому ты учишь язык, есть большие подозрения, что материал надо менять, и срочно
OK, опечатка была, должно было быть ==, но какая связь, до этого if там echo должно было отработать
Сейчас поставила ==, но не работает
Может быть дело в в способе вызова этого php из формы?

"открою тебе секрет, что 0, '0', false и null - это все empty переменные" источник?
Насчет null согласна, остальное хотелось бы уточнить
 

artoodetoo

великий и ужасный
В standards.php тоже есть строчка
if (isset($_REQUEST[session_name()])) session_start();
Как я поняла, этого достаточно для работы с сессионными переменными.
$_SESSION['one'] остается пустой или я ее не так принимаю.
Вместо action="index.php" в форме попробовала указать полный путь, тоже не работает:(
Где я ошиблась?
Что за фигня с $REQUEST ? Достаточно просто: session_start();
Упрости в этом месте, исправь ошибку с "=" в условии if и смотри что дальше…
 

artoodetoo

великий и ужасный
p.s. на форуме принято оформлять код в тегах [code] [/code] или [php] [/php]
 

t3710

Новичок
Что за фигня с $REQUEST ? Достаточно просто: session_start();
Упрости в этом месте, исправь ошибку с "=" в условии if и смотри что дальше…
Оставила
Код:
session_start();
Работает с условием "=". If в этой группе не работает, но эхо срабатывает
Спасибо!
 

Crys

Двинутый новичок
Что за фигня с $REQUEST ? Достаточно просто: session_start();
Тоже думал, откуда ноги растут. Нашел здесь (последний абзац "Области применения"). Вот тока последнее предложение не читают.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
OK, опечатка была, должно было быть ==, но какая связь, до этого if там echo должно было отработать
Сейчас поставила ==, но не работает
Может быть дело в в способе вызова этого php из формы?

"открою тебе секрет, что 0, '0', false и null - это все empty переменные" источник?
Насчет null согласна, остальное хотелось бы уточнить
Что именно тебе уточнить? Если переменная содержит 0, '0', false илт null, то проверка на empty всегда даст true
 

artoodetoo

великий и ужасный
Не понятно. Пожалуйста покажи скрипт как он есть в настоящий момент (оформленный в ббкод [php]), опиши что происходит и что хотелось увидеть.
 

t3710

Новичок
Не понятно. Пожалуйста покажи скрипт как он есть в настоящий момент (оформленный в ббкод [php]), опиши что происходит и что хотелось увидеть.
index.php
Код:
session_start();
if (!empty($_SESSION['one']))
{
echo '--'.$_SESSION['one'].'++';
if ($_SESSION['one']='1')
{
echo '*********************************';
$_SESSION['one']='0';
}
} else {echo '++++++++++';}
standards.php
Код:
session_start();
$_SESSION['one']='1';
В standards.php инициализирую $_SESSION['one'] и через форму по сабмит передаю в index.php.
В index.php получаю --1++

Увидеть хотела, просто как работает в PHP механизм передачи данных через сессионные перемеyные, в ASP немного не так. Увидела. Изучаю...
 

artoodetoo

великий и ужасный
Не уверен, что можно получить полезные знания из ошибочных примеров.

PHP:
if ($_SESSION['one']='1')
оператор сравнения в PHP "==" или "===". а ты присваиваешь единицу. соответственно условие в if будет всегда выполняться.
 

t3710

Новичок
Не уверен, что можно получить полезные знания из ошибочных примеров.

PHP:
if ($_SESSION['one']='1')
оператор сравнения в PHP "==" или "===". а ты присваиваешь единицу. соответственно условие в if будет всегда выполняться.
Все правильно, моя очепятка, но спич не за это. С REQUEST не работал этот if
Код:
if (!empty($_SESSION['one'])
Условие не выполняется, согласна, но до него все остальное должно работать, такой принцип всех скриптов, если нет синтаксической ошибки
 
Сверху