[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сессии
_Dimarik__
<?php
if (session_start())
{
print("OK");
}
$user = $userName;
session_register("user");//какую переменную будем хранить в сеансе
?>
<form action "session.php" method "get">
Login: <input name = "userName">
Password: <input name = "password">
<
input type = "submit" name = "sub" value = "Go">
</
form>
<
a href = "session1.php">AAAAAAAAAAAAA</a>

session1.php

<?php
session_start();
print(<P>"$user");
?>

резальтат:

session.php (первый файл) при запуске даёт вот такие ошибки: Notice: Undefined variable: userName in C:\wamp\www\session.php on line 6

Deprecated: Function session_register() is deprecated in C:\wamp\www\session.php on line 7
Ну в принципе понятно. сразу идёт обращение к несуществующей переменной. Но почему тогда выполняется условие session_start()???? она ведь по идее должна начаться когда я введу логин и пароль и нажму на кнопочку?
Но после того как я ввёл в поля логин и пароль первая ошибка ликвидируется, а вторая, Deprecated: Function session_register() is deprecated in C:\wamp\www\session.php on line , остаётся. Причём, когда я перехожу по ссылке, у меня в session1.php выфскакивает ошибка Parse error: parse error in C:\wamp\www\session1.php on line 3
Поскажите плиз как всё это исправить и как сделать так, чтобы всё работало грамотно



Спустя 3 минуты, 15 секунд (11.07.2010 - 16:35) qpayct написал(а):
register globals потому что off
$username = isset($_POST['username']) ? $_POST['username'] : Null;

<input type="text" name="username" />

Спустя 7 минут, 40 секунд (11.07.2010 - 16:42) Self написал(а):
session_register() 'устаревшая' функция, лучше её не использовать.

Спустя 2 минуты, 21 секунда (11.07.2010 - 16:45) _Dimarik__ написал(а):
а что вместо неё лучше использовать?

Спустя 1 минута, 13 секунд (11.07.2010 - 16:46) _Dimarik__ написал(а):
и глобальные переменые у меня включены

Спустя 5 минут, 49 секунд (11.07.2010 - 16:52) qpayct написал(а):
Цитата (_Dimarik__ @ 11.07.2010 - 15:46)
и глобальные переменые у меня включены

а вот этого лучше никогда не делать

Спустя 2 минуты, 23 секунды (11.07.2010 - 16:54) Ice написал(а):
Сообщение обновлено!
1. Здесь логика не совсем правильная.
2. Пароли настоятельно не рекомендуется пересылать методом _GET, исходя из соображений конфиденциальности и безопасности
Задача:
Цитата
когда я введу логин и пароль и нажму на кнопочку


Реализуем обработчик:

<?php

session_start();
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
!
empty($_POST['userName']) &&
!
empty($_POST['password']) ) {

$_SESSION['user'] = $_POST['userName']; //какую переменную будем хранить в сеансе
print("OK");
} else {
print('Введите данные');
}

?>


не так
<form action "session.php" method "get">
а так
<form action="session.php" method="post">


Функция session_register - динозавр. Рекомендуется работать напрямую с массивом _SESSION

Далее - страница session1.php
Вторая строчка содержит ошибки:
  • Литеральная чать вывода (HTML) должна быть заключена в кавычки скорее, чем переменная.
  • Переменная $user не будет определена в скрипте.
  • Тег абзаца <P></p> является тегом-контейнером, поэтому требует обязательного закрывающего тега.
Всё должно выглядеть следующим образом:

session_start();
print("<P>{$_SESSION['user']}</p>");

Спустя 38 минут, 38 секунд (11.07.2010 - 17:33) _Dimarik__ написал(а):
2. Переменная $user не будет определена в скрипте - в смысле?

Спустя 4 минуты, 15 секунд (11.07.2010 - 17:37) Ice написал(а):
Выскочит ошибка Undefined variable $user in..., потому, что под переменной $user подразумевается $_POST['userName'], которая находится совсем на другой странице.

Спустя 3 минуты, 32 секунды (11.07.2010 - 17:40) _Dimarik__ написал(а):
малость отредактировал часть кода:
<form action = "session.php?<?=SID?>" method = "get">
Login: <input name = "userName">
Password: <input name = "password">
<
input type = "submit" name = "sub" value = "Go">
</
form> [spoiler][/spoiler]

почему у меня в URL не отображается SID?

Спустя 5 минут, 59 секунд (11.07.2010 - 17:46) Ice написал(а):
короткие теги разрешены? (лучше запретить) Передача сида в адресной строке настроена в РНР?

Спустя 3 минуты, 57 секунд (11.07.2010 - 17:50) _Dimarik__ написал(а):
ты про это???
<form action = "session.php?<?php=SID?>" method = "get">
Login: <input name = "userName">
Password: <input name = "password">
<
input type = "submit" name = "sub" value = "Go">
</
form>

всё равно не работает

Спустя 1 минута, 24 секунды (11.07.2010 - 17:52) _Dimarik__ написал(а):
Передача сида в адресной строке настроена в РНР? - а вот этого я не знаю и не наю как её настроить

Спустя 2 минуты, 53 секунды (11.07.2010 - 17:55) Ice написал(а):
а зачем ее настраивать? Веское основание этому есть?

Спустя 5 минут, 58 секунд (11.07.2010 - 18:01) _Dimarik__ написал(а):
Та вот сейчас читаю php глазами хакера Михаила Флёнова. Вообще он хорошо книги пишет, но по сравнению с Библией C3 эта написана отвратительно.Куча что приведено не работает.
Я просто примеры из книги разбираю.
Вообще когда SID используется? ведь лучше чтобы он не отображался в URL?

Спустя 14 минут, 13 секунд (11.07.2010 - 18:15) Ice написал(а):
Фленов и Попов из одной степи вылезли. Выбросьте эту книгу или сожгите ее.

Настоятельно рекомендую Вам отключить register_globals в php.ini, а вместо них пользоваться глобальными массивами. А также не передавать сид в адресной строке. Если Вы хотите достучаться до него, используйте функцию session_id.
Но, перво-наперво, забудьте эту книгу!

Упд.: Еще хотелось бы добавить, что если у вас выводятся ошибки типа Deprecated, то используйте это во благо - как только вывелась такая ошибка, сразу же начинайте поиск либо ее эквивалента, либо подхода, которым можно заменить данную функцию. Данная ошибка значит, что функция устарела и в более поздних версиях будет вырезана из РНР, как уже было замечено выше.
Быстрый ответ:

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