|
|
|
| Помогите, пожалуйста, разобраться в сессиях…
(((
Я вот пытаюсь постигнуть секреты программирования на php. В частности как работают сессии. Прочитала несколько подробных статей, но почему-то на практике не все получается… Скажите, в чем моя ошибка???
<?php
session_start();
session_register("name");
session_register("password");
?>
<html>
<body>
<form action=123.php method=post>
Имя посетителя : <input type=text name='name' ><br>
Пароль : <input type=password name='password' ><br>
<input type=submit value=Отправить>
</form>
</body>
</html>
|
Файл 123.php:
<?php
session_start();
if (!$_SESSION['session_id']) {
echo "Вам сюда нельзя!!!";
die();
}
else {
echo "Вам сюда можно !!!";
echo $_SESSION['name'];
echo $_SESSION['password'];
?>
|
Пыталась также записать вот так передачу данных из формы:
<form action=123.php?name=<?php echo $_POST['name']; ?>&pass=<?php echo $_POST['password']; ?> method=post>
|
Может это вообще полный бред, но тогда каким образом можно передать данные из формы на другую страничку??? (если куки отключены) | |
|
|
|
|
|
|
|
для: Tayna
(23.02.2006 в 16:25)
| | Чего-то не совсем понятно что вы хотели сделать при помощи сессий. :-)
<?
$uname="Tayna";
$upass="Tayna"
session_start();
$_SESSION['name'] = "$uname";
$_SESSION['password'] = "$upass";
echo "Ваше имя, ".$_SESSION['name']."<br>";
echo "пароль - ".$_SESSION['password']."<br>";
?>
<a href="123.php">На следующую страницу </a>
|
123.php
<?
session_start();
$_SESSION['name'] = "$uname";
$_SESSION['password'] = "$upass";
echo "Ваше имя, ".$_SESSION['name']."<br>";
echo "пароль - ".$_SESSION['password']."<br>";
?>
<a href=# onClick='history.back()'>назад </a>
|
А данные из формы с другой странички можно глянуть таким образом
Ваш файл с формой
<html>
<body>
<form action=123.php method=post>
Имя посетителя : <input type=text name='name' ><br>
Пароль : <input type=password name='password' ><br>
<input type=submit value=Отправить>
</form>
</body>
</html>
|
123.php
<?
echo "Имя пользователя: ".$_POST[name]."<br>";
echo "Его пароль: ".$_POST[password]."<br>";
?>
|
| |
|
|
|
|
|
|
|
для: Tayna
(23.02.2006 в 16:25)
| | Данные из формы надо передавать в 123.php и там проверять. Если такие записи имеются, то только тогда организовывать сессию. Т.е.
123.php
<?php
$name = $_POST['name'];
$password = $_POST['password'];
if ($name == 'vasya' and $password == 'pupkin')
{
$_SESSION['name'] = $name;
$_SESSION['password'] = $password;
}
else
echo 'Вам сюда нельзя!';
?>
|
Вместо "vasya" и "pupkin" можно выбирать значения из базы данных или еще откуда.
Еще. Лучше не использовать глобальные переменные без крайней нужды. Лучше передавать их через массив $_SESSION. | |
|
|
|
|
|
|
|
для: WebTech
(23.02.2006 в 16:59)
| | Т.е. сессия мне нужна только для того, чтобы идентифицировать, какой пользователь идет по ссылки, а данные я могу получить при помощи функции _POST.
Так? | |
|
|
|
|
|
|
|
для: Tayna
(23.02.2006 в 17:44)
| | Сессии нужны чтобы идентифицировать пользователя. Т.е. когда вы заходите на сайт, на вас заводится уникальный идентификатор. Он будет вас сопровождать на протяжении всей "прогулки" по сайту. Когда вы закроете браузер и снова зайдете на этот же сайт, на вас заведется новый идентификатор. Т.о. id сессии заводится каждый раз по-новому.
Если вы указали в начале скрипта session_start(), то создается уникальный ключ - id сессии, переданного через GET-переменную или куку. С помощью функции session_id() вы можете установить/получить id текущей сессии.
Если вы хотите использовать именованную сессию, вы обязаны вызвать session_name() до вызова session_start(). | |
|
|
|
|
|
|
|
для: WebTech
(23.02.2006 в 16:59)
| | В принципе, с передачей данных я теперь вроде бы разобралась... Спасибо...
А вот для чего используются сессии, пока не могу до конца понять... | |
|
|
|
|
|
|
|
для: Tayna
(23.02.2006 в 17:55)
| | WWW так устроен что в нем всё происходит в окне браузера. И все переменные исчезают как-только закончилась загрузка страницы.
Теперь представьте что на странице A вы спросили у юзера пароль, на странице B вы этот пароль получили и определили например ID юзера, по которому вы даёте ему какие-то права. А теперь представьте что юзер пошёл на страницу C. ПРидя туда он снова с ужасом обнаруживает маленькое окошечко с просьбой ввести пароль. Потому что переменная хранящая его ID пропала! А теперь вопрос: через какое время пользователь навсегда покинет сайт?
Для того чтобы этого не происходило механизм сессий. Это как-бы промежуточный буфер. Данные записываются в специальный каталог на сервере (обычно \tmp) И когда загружается новая страница вспециальном массиве $_SESSION можно найти все зарегистрированные переменные. Т.е. в одном месте вы написали например:
session_start();
$_SESSION['ID']=20;
| И всё. Теперь эта переменная $_SESSION['ID'] Доступна в любом месте вашего сайта, влюбое время (в рамках времени жизни сессий естественно).
Это как жёсткий диск на компьютере который в отличии от оперативной памяти, способен долго хранить данные. (возможно не самая точная аналогия, но суть мне кажется проявляет)
(хотя прикольный параметр бы получился: "время жизни файлов" :)))
Примерно так. | |
|
|
|