[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работают сессии если в одном файле
Tihondrius
Доброго времени суток!

Столкнулся с такой проблемой - у меня есть форма и сам скрипт причем все в одном файле... Так вот, если я все делаю в одном файле, то почему-то сессии не работают, если же я код скрипта переношу в другой файл (тупо копирую), то работает все отлично... В первом файле (где и форма и скрипт) я делаю так:

<?php

if ($_POST['reg'] == 1) {

session_start();
if ($_POST['login'] == "aaa") {$_SESSION['login'] = $_POST['login'];}

echo "<form action = \"$_SERVER['PHP_SELF']\" method = post>";
...

echo '<input type = hidden name = "script" value=1>';
echo '</form>';

} else if ($_POST['script'] == 1) {

session_start();
echo $_SESSION['login'];

}

?>


В начале ФАЙЛА я добавил условие:

if (!isset$_POST['login']) {

if (!isset($_SESSION['login'] {Header('Location:registration.php');}}


Выкидывает...(((

ничего... че не так?



Спустя 22 минуты, 35 секунд (23.11.2009 - 23:09) doberman написал(а):
Возможно я не совсем понял ту часть кода, которая не была приведена, но если логиниться с формы в этом файле, то с ней постоянно идет
echo '<input type = hidden name = "script" value=1>';

которое скидывает скрипт в ветвь
} else if ($_POST['script'] == 1) {

где запускается сессия и пытается вывести значение сессионной переменной Логин, которая должна бы определиться в ветви
if ($_POST['reg'] == 1)

Но поскольку переменной reg в форме не видно, то эта ветвь никогда не выполняется при запуске скрипта из ътого файла. И потому не существует переменная сессии Логин.

Спустя 27 минут, 5 секунд (23.11.2009 - 23:36) Tihondrius написал(а):
я логинюсь с другого файла, а в этом типо 1) главная страница 2)добавление файла на сервер...

Спустя 26 минут, 43 секунды (24.11.2009 - 00:03) doberman написал(а):
Тогда все работает.
Входил отсюда
<form action = "test.php" method = "post">
<input
type = "text" name = "login" value=1>
<input
type = "hidden" name = "reg" value=1>
</form>


ваш код слегка подправил (ругался интерпретатор)

<?php

if ($_POST['reg'] == 1) {
session_start();


if ($_POST['login'] == "aaa") {$_SESSION['login'] = $_POST['login']; print_r($_SESSION);}
?>
<form action = "<?php $_SERVER['PHP_SELF'] ?>" method = "post">
<
input type = "hidden" name = "script" value=1>
</
form>
<?php
} else if ($_POST['script'] == 1) {

session_start();
echo $_SESSION['login'];
echo "<br />";
print_r($_SESSION);
}

?>

Спустя 2 минуты, 57 секунд (24.11.2009 - 00:06) Tihondrius написал(а):
Спасибо, ошибка в другом была) просто я $_SESSION['login'] проверял перед тем как стартовал сессии, естественно, переменной не было и меня выбрасывало)

Спустя 3 часа, 35 минут, 27 секунд (24.11.2009 - 03:42) Gabriel написал(а):
зачем 2 раза заводить сессию если она заводиться в ЛЮБОМ варианте?

Спустя 15 часов, 55 минут, 22 секунды (24.11.2009 - 19:37) doberman написал(а):
Цитата (Gabriel @ 24.11.2009 - 00:42)
зачем 2 раза заводить сессию если она заводиться в ЛЮБОМ варианте?

Почему в любом? Есть два конкретных условия, когда запускается сессия. А если просто войти на скрипт, то она не запускается, или не должна запускаться.

Спустя 5 минут, 12 секунд (24.11.2009 - 19:42) Gabriel написал(а):
doberman
дык проверка существования сессий есть-же и если нет того, что нужо отправляем куданибуть или так и остаемся на файле и смотрим на белый экран?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.