powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Куда пропадает переменная из сессии?
18 сообщений из 18, страница 1 из 1
(PHP) Куда пропадает переменная из сессии?
    #33027446
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю простую конструкцию:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
if (isset($_POST["operation"]))
{
	$operation = $_POST["operation"];
	switch ($operation)
	{
	...
	case "Утвердить":
		$sql_str = "exec ... ";
		$sql_res = mssql_query($sql_str);
		if (!$sql_res)
			$_SESSION["sql_error"] = mssql_get_last_message();
		break;
	}
	header ("Location: http://.../?list=".$_GET["list"]);			
}

if (isset($_SESSION["sql_error"]))
{
	$sql_err_msg = $_SESSION["sql_error"];

	echo "sql_err_msg ".$sql_err_msg."<br>"; // --------- (000)

	$_SESSION["sql_error"] = ""; // -------------- (!!!!!!)

}

Далее, в конце страницы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if ($sql_err_msg)
{
	echo "sql_err_msg ".$sql_err_msg."<br>";
	?>
	<table>
		<tr>
			<td>
				<?echo $sql_err_msg;?>
			</td>
		</tr>
	</table><?
}

Так вот. Я не пойму почему, если закоментировать строку (!!!!!!), то сообщение выдается, а если не коментировать, то не выдается. Что еще более странно, что при раскоментированной строке (!!!!!!) $sql_err_msg не выводится и в строке (000)! Почему так? Как с этим справиться?
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33027490
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Чушь какая.
Ничего не понял, однако с чего вы взяли, что после $_SESSION["sql_error"] = ""; isset($_SESSION["sql_error"]) будет false?
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33027500
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Чушь какая.
Ничего не понял, однако с чего вы взяли, что после $_SESSION["sql_error"] = ""; isset($_SESSION["sql_error"]) будет false?
Остаток прошлого кода...
И ничего не чушь. Разбираться просто нужно.
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33027540
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОстаток прошлого кода...
И ничего не чушь. Разбираться просто нужно.
Вам господин Звездочка все уже ответил. В его ответе-вопросе - решение Вашей проблемы. Если что-то не ясно, прочтите ман isset()
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33027563
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c авторОстаток прошлого кода...
И ничего не чушь. Разбираться просто нужно.
Вам господин Звездочка все уже ответил. В его ответе-вопросе - решение Вашей проблемы. Если что-то не ясно, прочтите ман isset()
Вообще-то, у меня проблема не с isset(). Она вообще здесь не при чем.
Я не понимаю, почему если так, то не пишется сообщение:
Код: plaintext
1.
2.
3.
 1    $sql_err_msg = $_SESSION["sql_error"];
 2    echo "sql_err_msg ".$sql_err_msg."<br>";
 3    $_SESSION["sql_error"] = "";
а если так, то пишется:
Код: plaintext
1.
2.
3.
 1       $sql_err_msg = $_SESSION["sql_error"];
 2       echo "sql_err_msg ".$sql_err_msg."<br>";
 3    // $_SESSION["sql_error"] = "";
Повторяю, isset() можете убрать. Он не влияет ни как.
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33027589
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удали (или закомментируй) все, что находится между
Код: plaintext
1.
2.
3.
4.
5.
if (isset($_SESSION["sql_error"])) {
	$sql_err_msg = $_SESSION["sql_error"];
	echo "sql_err_msg ".$sql_err_msg."<br>"; // --------- (000)
	$_SESSION["sql_error"] = ""; // -------------- (!!!!!!)

}
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if ($sql_err_msg)
{
	echo "sql_err_msg ".$sql_err_msg."<br>";
	?>
	<table>
		<tr>
			<td>
				<?echo $sql_err_msg;?>
			</td>
		</tr>
	</table><?
}

ошибка осталась ?
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33027603
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не знаете, как ведут себя операторы сравнения и как поведет себя оператор if. Учите матчасть.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33027677
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у меня крыша едет. Вот этот код тоже не работает так как я хочу. В чем проблема?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?
if (isset($_POST["a"]))
{
	$aa = $_POST["a"];
	//echo $aa;
	switch ($aa)
	{
		case "1":
			$_SESSION["msg"] = "1111";
		break;
		case "2":
			$_SESSION["msg"] = "2222";
		break;
	}
	header("Location: 0.php");
}
//$my_msg = $_SESSION["msg"];
//echo "my_msg1 ".$my_msg."<br>";
if (isset($_SESSION["msg"]))
{
	$my_msg = $_SESSION["msg"];
	echo "my_msg2 ".$my_msg."<br>";
	$_SESSION["msg"] = "";
}
?>
<html>
<body>
<form method="post">
<?
if ($my_msg)
{
	echo $my_msg."<br>";
}
?>
<input type="submit" value="1" name="a">
<br>
<input type="submit" value="2" name="a">
</form>
</body>
</html>

...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33027972
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Вот это правильный вариант, но он тоже не работает.
<code>
<?
session_start();
if (isset($_POST["a"]))
{
	$aa = $_POST["a"];
	$_SESSION["msg"] = "-";
	switch ($aa)
	{
		case "1":
			$_SESSION["msg"] = "111";
		break;
		case "2":
			$_SESSION["msg"] = "222";
		break;
	}
	header("Location: 0.php");
}
echo "my_msg ".$_SESSION["msg"]."<br>";
if ($_SESSION["msg"] != "-")
{
	echo "my_msg ".$_SESSION["msg"]."<br>";
	$_SESSION["msg"] = "-";
}
if (session_is_registered("msg"))
{
	echo "yes<br>";
}
else 
{
	echo "no<br>";
}
?>
<html>
<body>
<form method="post">
<input type="submit" value="1" name="a">
<br>
<input type="submit" value="2" name="a">
</form>
</body>
</html>
</code>

...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028034
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Научитесь грамотно задавать вопросы. что значит не работает? Неужели так сложно написать. Задачу, поставленную перед скриптом. Сам скрипт, результат работы скрипта. подсветка тех строк, в которых ошибка.
Когда вы уже поймете, что здесь телепатов нет?
авторВот это правильный вариант, но он тоже не работает.
Гы-гы-гы... Как раз на мою подпись похоже.. Может, поменять?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028191
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм на словах.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
1. После поста формы, выполняется
    if (isset($_POST["a"]))
    {
        $aa = $_POST["a"];
         $_SESSION["msg"] = ""; // пустое значение  
        switch ($aa)
        {
        case "1":
            $_SESSION["msg"] = "111";
            break;
        case "2":
            $_SESSION["msg"] = "222";
            break;
        }
        header("Location: 0.php");
    }
     Переменной сессии присваивается какая-то строка и производится обновление страницы. 

2. Потом, когда страница снова загружается, выполняется
    if ($_SESSION["msg"] != "")
    {
        echo "my_msg ".$_SESSION["msg"]."<br>";
         $_SESSION["msg"] = "";  // строка, которая влияет на проявление ошибки
    }
     При загрузке страницы проверяем чему равна переменная сессии. В случае, если значение отличается от
  принятого "пустого" значения, скрипт должен вывести строку и присвоить "пустое" значение 
  переменной сессии, чтоб при следующем обновлении пользователем страницы сообщение 
  исчезло

Так вот, если закоментировать подчеркнутую строку, то сообщение выводится, но после обновления остается (это и понятно). Если эта строка разкоментирована, то сообщение не выводится, а значение переменной сессии равно "пустому". Вот это мне не понятно. Как от этого избавиться? И почему вообще так происходит?
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028263
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexG
Код: plaintext
1.
2.
        echo "my_msg ".$_SESSION["msg"]."<br>";
         $_SESSION["msg"] = ""; 


Удивительно еще то, что если выводится, то выводится то, что в выделенной строке присваивается. Бред какой-то. Такое ощущение, что происходит два предварительных парсинга и строки заменяются на их значения и выводятся...
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028381
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы привели 2 полных листинга кода. А объяснять начали за третий. Причем вы рассказываете КАК вы делаете, а не ЧТО вам НУЖНО сделать.
Если слушать ваши рассуждения и смотреть на полные коды, то при нажатии на кнопки формы
автор2. Потом, когда страница снова загружается, выполняетсявот этого никогда не будет.
P.S. Что интересно, ответ Вам дал господин звездочка. Плюс вы проигнорировали просьбы Макс М. и не прочли ссылки на ман, что я Вам дал.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028425
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
4m@t!cP.S. Что интересно, ответ Вам дал господин звездочка.Ой да ладно вам, господин :)
А вообще - он уже в этом плане код поправил. Дело ещё может быть как-то связано с кэшированием. PHP FAQ: Самые основы. Просмотр обмена HTTP заголовками
Но вообще - если уж совсем не в моготу - гораздо правильнее было либо дать ссылку и привести сам скрипт (не кусочек жалкий, а так, чтобы его реально можно было запустить и убедиться в том, что работает не так. И желательно не раздувать это на сотни строк - думаю, строк 20-25 более чем достаточно. Хотя обычно хватает 10-15). Тогда кому не лень мог бы сам увидеть что происходит.
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028440
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cВы привели 2 полных листинга кода. А объяснять начали за третий. Причем вы рассказываете КАК вы делаете, а не ЧТО вам НУЖНО сделать.
Если слушать ваши рассуждения и смотреть на полные коды, то при нажатии на кнопки формы
автор2. Потом, когда страница снова загружается, выполняетсявот этого никогда не будет.
P.S. Что интересно, ответ Вам дал господин звездочка. Плюс вы проигнорировали просьбы Макс М. и не прочли ссылки на ман, что я Вам дал.
----------------------------------------
Артисты не приехали, приехали цыгане

Во-первых, я знаю, что мне возвращает isset(). Опять повторю: он не причина моей проблемы.

Во-вторых, я объясняю последний акутальный код, написанный с учетом Макса М. Написать новый простой код было проще, чем вырезать из старого кусок. Но это не изменило проблемы.

В-третьих, в алгоритме указано, что требуется. После алгоритма не выделенным шрифтом описана проблема.

*
Но вообще - если уж совсем не в моготу - гораздо правильнее было либо дать ссылку и привести сам скрипт (не кусочек жалкий, а так, чтобы его реально можно было запустить и убедиться в том, что работает не так.

Самый последний привиденный мною код таковым и является. Можете его попробовать запустить. Специально написал маленький код.
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028444
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Хотя вообще похоже проблема в том, что кто-то наивно думает, что команда header завершает работу скрипта.
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028452
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Хотя вообще похоже проблема в том, что кто-то наивно думает, что команда header завершает работу скрипта.
Т.е. ты хочешь сказать, что PHP вставки все равно все прорабатываются, только не происходит отсылки HTML? Да?

Кстати, http://www.sql.ru/forum/actualthread.aspx?tid=178082#1486592 код рабочий.
...
Рейтинг: 0 / 0
(PHP) Куда пропадает переменная из сессии?
    #33028464
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Хотя вообще похоже проблема в том, что кто-то наивно думает, что команда header завершает работу скрипта.

Спасибо тебе, о * !!! Все получилось! Спасибо!!!!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Куда пропадает переменная из сессии?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]