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

Форум MySQL

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

 

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

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

тема: Авторизация и сессии
 
 автор: _Scorpion_   (13.08.2005 в 09:30)   письмо автору
 
 

Вот уже давно парюсь над проблемой сессий :(
Мне надо, чтобы при введени логина и пароля и нажатии кнопки "Вход", загружались данные из базы майскюель (причем соответсвующие даному человеку).
Если говорить несколько упрощенно, то получается так:
Например в таблице 3 столбца: name, pass, text
И есть 2 пользователя:
1.name="vasya"
pass="123"
text="999"
2.name="galya"
pass="abur"
text="my_text"
Теперь задача:
Как сделать, чтобы при вводе логина vasya и пароля 123, выводился текст 999,
а при вооде логина galya и пароля abur, выводился текст my_text

Пожайлуста, помогите.
Заранее спасибо

   
 
 автор: Гость   (13.08.2005 в 10:19)   письмо автору
 
   для: _Scorpion_   (13.08.2005 в 09:30)
 

А при чем тут сессии, или хочешь сделать на них авторизацию?

   
 
 автор: _Scorpion_   (13.08.2005 в 10:40)   письмо автору
 
   для: Гость   (13.08.2005 в 10:19)
 

ну да, авторизацию...разве для этого не нужны сессии? :-0

   
 
 автор: axxil   (13.08.2005 в 11:05)   письмо автору
 
   для: _Scorpion_   (13.08.2005 в 09:30)
 

Чтобы просто при вводе логина пароля вывести текст не надо сессий
Представим что форма посылает данные
$POST=array('name'=>'vasya','pass'=>'123')
Предполагаем вид таблицы такой:
users:

id | name | pass | text

обрабатываем (без всякой защиты пока, просто принцип)

<?
  $sql
='select text from users where name=\''.$POST['name'].'\' and pass=\''.$POST['pass'].'\'';
$query=mysql_query($sql);
echo 
mysql_result($query,0,0);
?>


Вот и всё, только это не авторизация. Ваш сайт "забудет" о пользователе уже на следующей странице. Для того что бы улучшить память применяется следующее.
Создадим таблицу sessions
sid | user_id

в поле sid будем хранить уникальный идентификатор сессии, user_id думаю понятно...

Вот далее модернизируем скрипт приводившийся выше:

<?
  $sql
='select id,text from users where name=\''.$POST['name'].'\' and pass=\''.$POST['pass'].'\'';
$query=mysql_query($sql);
$r=mysql_fetch_assoc($query);
// Если пароль и логин верны:
if(!empty($r)){
  
session_start();
  
$sid=session_id();
  
$sql='insert into session(sid,user_id) values(\''.$sid.'\,'.$r['id'].'')';
  mysql_query($sql);
}else{
  echo "Не правильный логин/пароль";
  exit;
}
?>

Теперь мы имеев в таблице сессионс сеанс пользователя которого мы всегда можем узнать по sid и вытащить его из users по id/
На любой странице сайта можно теперь указать:
<?
 $sql
='select text from users t1,sessions t2 where t1.id=t2.user_id and t2.sid=\''.$GLOBALS['PHPSESSID'].'\'';
 
$query=mysql_query($sql);
 
$r=mysql_result($query,0,0);
 if(!empty(
$r)){
   echo 
$r;
 }else{
   echo 
"Здравствуй Гость!";
 }
?>

Естественно всё вышесказанное лучше организовать в виде функций

   
 
 автор: _Scorpion_   (14.08.2005 в 10:43)   письмо автору
 
   для: axxil   (13.08.2005 в 11:05)
 

Пасиба

   
Rambler's Top100
вверх

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