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

Форум PHP

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

 

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

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

тема: Сессии
 
 автор: Lelik   (27.02.2006 в 18:21)   письмо автору
 
 

Как написать скрипт-обработчик формы входа на сайт, что-бы у разных пользователей были разные сессионыые переменные.
Например:

<?php
include "config.php";
session_start();
//В БД  в таблице USERS пользователей есть строка со статусами пользователей
// User_status ENUM('admin', 'user', 'dear_friend') default 'user' NOT NULL,
//Часть кода со страницы скачивания файла
...
//Производим проверку на статус юзера в БД
$query="SELECT User_status FROM users";
$result=@mysql_query($query);
if(
$result$status=@mysql_fetch_array($result);
...
//HTML-форма
echo "<html><head></head><body>";
echo 
"<table>";
echo 
"<tr><td><img src='http://some.site.ru/images/pict.gif' border="0"></td></tr>";//Рисунок-описание файла для скачивания
echo "<tr><td>";
//Далее идут допустимые действия для каждого юзера согласно статусу
 
if($status['admin'])
  {
    echo 
'<a href="http://some.site.ru/admin/index.php">Редактировать</a>';
  }
 else if(
$status['user'])
  {
    echo 
'<p>Классный рисунок?</p>';
  }
 else if(
$status['dear_friend'])
  {
    echo 
'<a href="http://some.site.ru/admin/index.php">Crfxfnm afqk</a>';
  }
 else echo 
'<p>Рисунок;)</p>';
echo 
"</td></tr>";
echo 
"</table></body></html>";
...
?>

   
 
 автор: partizan   (27.02.2006 в 18:22)   письмо автору
 
   для: Lelik   (27.02.2006 в 18:21)
 

У разных юзеров и так будут разные сессионные переменные

   
 
 автор: Lelik   (27.02.2006 в 18:34)   письмо автору
 
   для: partizan   (27.02.2006 в 18:22)
 

Неправильно объяснил.
Чтоб при входе разным юзерам(например если это админ) приписывалось(из ранее приведенного примера $status["admin"], или $status["dear_friend"]
Примерный файл-обработчик о котором я говорю:

<?php
include "config.php";
session_start();
$name$_POST['name'];
$password=$_POST['password'];
$query "SELECT * FROM users WHERE name=".$name." AND password=password(".$password.")";
$result=@mysql_query($query);
if(!
$result)
 {
  echo 
"<p>Для вас вход невозможен</p>";
 }
else
 {
   
$user=@mysql_fetch_array($result);
   if(
$user['User_status'] == 'user')
       {
        
$_SESSION['user'] = $name;
        
//Далее следует автоматический переход на какую-то страницу
       
}
   if(
$user['User_status'] == 'admin')
       {
        
$_SESSION['admin'] = $name;
        
//Далее следует автоматический переход на какую-то страницу
       
}
 ...
?>

   
 
 автор: partizan   (27.02.2006 в 18:49)   письмо автору
 
   для: Lelik   (27.02.2006 в 18:34)
 

Так в чем проблема? Этот кож будет работать

   
 
 автор: partizan   (27.02.2006 в 18:50)   письмо автору
 
   для: partizan   (27.02.2006 в 18:49)
 

Или это должна быть одна и таже сессия, только разные переменные?

   
 
 автор: Lelik   (27.02.2006 в 20:22)   письмо автору
 
   для: partizan   (27.02.2006 в 18:50)
 

>Или это должна быть одна и таже сессия, только разные
>переменные?
Да

   
 
 автор: partizan   (27.02.2006 в 21:13)   письмо автору
 
   для: Lelik   (27.02.2006 в 20:22)
 

А зачем тогда вообще сессию использовать? Можно в БД переменные сохранять

   
 
 автор: Lelik   (27.02.2006 в 23:55)   письмо автору
 
   для: partizan   (27.02.2006 в 21:13)
 

>А зачем тогда вообще сессию использовать? Можно в БД
>переменные сохранять
Не знаю я про такой прикол. А ну просвяти меня пожалуйста

   
 
 автор: cheops   (28.02.2006 в 00:17)   письмо автору
 
   для: partizan   (27.02.2006 в 18:50)
 

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

   
 
 автор: Lelik   (28.02.2006 в 15:49)   письмо автору
 
   для: cheops   (28.02.2006 в 00:17)
 

Я хочу понять в этом месте правильно из БД вынимаються данные по-поводу статуса посетителя

<?php
//Почти полный скрипт-обработчик в каком-то моем предыдущем посте
...
   
$user=@mysql_fetch_array($result); 
   if(
$user['User_status'] == 'user'
       { 
        
$_SESSION['user'] = $name
        
//Далее следует автоматический переход на какую-то страницу 
       

   if(
$user['User_status'] == 'admin'
       { 
        
$_SESSION['admin'] = $name
        
//Далее следует автоматический переход на какую-то страницу 
       

... 
?>

   
 
 автор: cheops   (28.02.2006 в 23:24)   письмо автору
 
   для: Lelik   (28.02.2006 в 15:49)
 

Да, по крайней мере никакой крамолы в коде нет.

   
 
 автор: Lelik   (01.03.2006 в 04:37)   письмо автору
 
   для: cheops   (28.02.2006 в 23:24)
 

Я использовал этот код на локалхосте и вход не получался, может локалхост настроен неправильно

   
 
 автор: Lelik   (01.03.2006 в 16:44)   письмо автору
 
   для: Lelik   (01.03.2006 в 04:37)
 

Гляньте, а этот скрипт-обработчик должен работать? Ибо у меня после входа на нем и зависает

<?php
 
include 'config.php';
 include 
'functions.php';

 
$name htmlspecialchars(stripslashes($_POST['name']));
 
$passwordhtmlspecialchars(stripslashes($_POST['password']));

 if(
$name && $password)
  {
    if(
login($name$password)
     
//Функция login из файла functions.php
     //function login($name, $password)
    //   {
     //   $query = 'SELECT * FROM user WHERE name="$name"';
     //   $result = @mysql_query($query);
     //   if($result) $user_status = @mysql_fetch_array($result);
     //   if(!$result)
     //   return 0;
     //   if (mysql_num_rows > 0)
     //    return 1;
     //   else
    //    return 0;
     //  }
     
{
      
$query 'SELECT * FROM user WHERE name="$name"';
      
$result mysql_query($query);
      
$usay mysql_fetch_array($result);
      if(
$usay['status'] == 'user')
       {
        
$_SESSION['user'] = $name;
    echo 
'<html><head><meta http-equiv="Refresh" content="0; url=../index.php"></head></html>';
    exit();
       }
      else if(
$usay['status'] == 'admin')
       {
        
$_SESSION['admin'] = $name;
    echo 
'<html><head><meta http-equiv="Refresh" content="0; url=../index.php"></head></html>';
    exit();
       }
      else
       {
        echo 
'Неверный логин или пароль. Повторите попытку входа';
        exit();
       }
     }
  }

?>

   
 
 автор: cheops   (01.03.2006 в 22:34)   письмо автору
 
   для: Lelik   (01.03.2006 в 16:44)
 

Этот файл включается при помощи include в другие файлы, а конкретно в ../index.php?

   
 
 автор: Lelik   (02.03.2006 в 11:22)   письмо автору
 
   для: cheops   (01.03.2006 в 22:34)
 

Этот файл запускается посредством формы из файла входа

<html>
...
<form action="log.php" method="post">
...
</html>

   
 
 автор: pearl666   (02.03.2006 в 11:31)   письмо автору
 
   для: Lelik   (02.03.2006 в 11:22)
 

как сделать чтобы для каждого пользователя открывалась определенная страница, я делаю вот так


if ( $_SESSION['password']='pass1' && $_SESSION['user']== 'user1')
{ Header("Location: 1.html");}

а затем в 1.html

<?php
if(session_start())
{
if ( $_SESSION['password']="pass1" && $_SESSION['user']== "user1")
{
?>
<HTML><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<HEAD><script language="JavaScript">alert("привет"); </script> </HEAD><body>";

}
}
так как для каждого пользователя своя сессионная переменная, то получается что нужно проверять ее значение просто...и если значение переменной совпадает с именем пользователя и с паролем пользователя, то получается мы должны переходить именно на его страницу...
но у меня просто ничего не выдается...просто открывается пуста я страница

   
 
 автор: pearl666   (02.03.2006 в 11:34)   письмо автору
 
   для: Lelik   (01.03.2006 в 04:37)
 

настройки базы
// Имя сервера базы данных
$dblocation = "localhost";
// Имя базы данных
$dbname = "test";
// Имя пользователя
$dbuser = "root";
// Пароль
$dbpasswd ="";
нва локальной машине работает, а для размещения в инете еще кое-что нужно...в зависимости от того какой провайдер у тебя

   
Rambler's Top100
вверх

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