Столкнулся с такой проблемой - у меня есть форма и сам скрипт причем все в одном файле... Так вот, если я все делаю в одном файле, то почему-то сессии не работают, если же я код скрипта переношу в другой файл (тупо копирую), то работает все отлично... В первом файле (где и форма и скрипт) я делаю так:
<?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 написал(а):
Возможно я не совсем понял ту часть кода, которая не была приведена, но если логиниться с формы в этом файле, то с ней постоянно идет
которое скидывает скрипт в ветвь
где запускается сессия и пытается вывести значение сессионной переменной Логин, которая должна бы определиться в ветви
Но поскольку переменной reg в форме не видно, то эта ветвь никогда не выполняется при запуске скрипта из ътого файла. И потому не существует переменная сессии Логин.
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
дык проверка существования сессий есть-же и если нет того, что нужо отправляем куданибуть или так и остаемся на файле и смотрим на белый экран?
дык проверка существования сессий есть-же и если нет того, что нужо отправляем куданибуть или так и остаемся на файле и смотрим на белый экран?