Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите, пожалуйста, разобраться в сессиях…
 
 автор: Tayna   (23.02.2006 в 16:25)   письмо автору
 
 

Помогите, пожалуйста, разобраться в сессиях…
(((
Я вот пытаюсь постигнуть секреты программирования на 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> 



Может это вообще полный бред, но тогда каким образом можно передать данные из формы на другую страничку??? (если куки отключены)

   
 
 автор: Ученик   (23.02.2006 в 16:53)   письмо автору
 
   для: 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>";
?>

   
 
 автор: WebTech   (23.02.2006 в 16:59)   письмо автору
 
   для: 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.

   
 
 автор: Tayna   (23.02.2006 в 17:44)   письмо автору
 
   для: WebTech   (23.02.2006 в 16:59)
 

Т.е. сессия мне нужна только для того, чтобы идентифицировать, какой пользователь идет по ссылки, а данные я могу получить при помощи функции _POST.
Так?

   
 
 автор: Денис   (23.02.2006 в 18:09)   письмо автору
 
   для: Tayna   (23.02.2006 в 17:44)
 

Сессии нужны чтобы идентифицировать пользователя. Т.е. когда вы заходите на сайт, на вас заводится уникальный идентификатор. Он будет вас сопровождать на протяжении всей "прогулки" по сайту. Когда вы закроете браузер и снова зайдете на этот же сайт, на вас заведется новый идентификатор. Т.о. id сессии заводится каждый раз по-новому.
Если вы указали в начале скрипта session_start(), то создается уникальный ключ - id сессии, переданного через GET-переменную или куку. С помощью функции session_id() вы можете установить/получить id текущей сессии.
Если вы хотите использовать именованную сессию, вы обязаны вызвать session_name() до вызова session_start().

   
 
 автор: Tayna   (23.02.2006 в 17:55)   письмо автору
 
   для: WebTech   (23.02.2006 в 16:59)
 

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

   
 
 автор: Axxil   (23.02.2006 в 18:05)   письмо автору
 
   для: Tayna   (23.02.2006 в 17:55)
 

WWW так устроен что в нем всё происходит в окне браузера. И все переменные исчезают как-только закончилась загрузка страницы.
Теперь представьте что на странице A вы спросили у юзера пароль, на странице B вы этот пароль получили и определили например ID юзера, по которому вы даёте ему какие-то права. А теперь представьте что юзер пошёл на страницу C. ПРидя туда он снова с ужасом обнаруживает маленькое окошечко с просьбой ввести пароль. Потому что переменная хранящая его ID пропала! А теперь вопрос: через какое время пользователь навсегда покинет сайт?
Для того чтобы этого не происходило механизм сессий. Это как-бы промежуточный буфер. Данные записываются в специальный каталог на сервере (обычно \tmp) И когда загружается новая страница вспециальном массиве $_SESSION можно найти все зарегистрированные переменные. Т.е. в одном месте вы написали например:
session_start();
$_SESSION['ID']=20;
И всё. Теперь эта переменная $_SESSION['ID'] Доступна в любом месте вашего сайта, влюбое время (в рамках времени жизни сессий естественно).

Это как жёсткий диск на компьютере который в отличии от оперативной памяти, способен долго хранить данные. (возможно не самая точная аналогия, но суть мне кажется проявляет)
(хотя прикольный параметр бы получился: "время жизни файлов" :)))

Примерно так.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования