<?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, исходя из соображений конфиденциальности и безопасности
Задача:
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__ написал(а):
малость отредактировал часть кода:
почему у меня в URL не отображается SID?
<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?
Я просто примеры из книги разбираю.
Вообще когда SID используется? ведь лучше чтобы он не отображался в URL?
Спустя 14 минут, 13 секунд (11.07.2010 - 18:15) Ice написал(а):
Фленов и Попов из одной степи вылезли. Выбросьте эту книгу или сожгите ее.
Настоятельно рекомендую Вам отключить register_globals в php.ini, а вместо них пользоваться глобальными массивами. А также не передавать сид в адресной строке. Если Вы хотите достучаться до него, используйте функцию session_id.
Но, перво-наперво, забудьте эту книгу!
Упд.: Еще хотелось бы добавить, что если у вас выводятся ошибки типа Deprecated, то используйте это во благо - как только вывелась такая ошибка, сразу же начинайте поиск либо ее эквивалента, либо подхода, которым можно заменить данную функцию. Данная ошибка значит, что функция устарела и в более поздних версиях будет вырезана из РНР, как уже было замечено выше.
Настоятельно рекомендую Вам отключить register_globals в php.ini, а вместо них пользоваться глобальными массивами. А также не передавать сид в адресной строке. Если Вы хотите достучаться до него, используйте функцию session_id.
Но, перво-наперво, забудьте эту книгу!
Упд.: Еще хотелось бы добавить, что если у вас выводятся ошибки типа Deprecated, то используйте это во благо - как только вывелась такая ошибка, сразу же начинайте поиск либо ее эквивалента, либо подхода, которым можно заменить данную функцию. Данная ошибка значит, что функция устарела и в более поздних версиях будет вырезана из РНР, как уже было замечено выше.