Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Авторизация

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: [помогите]
Snic
Отправлено: 15 Октября, 2009 - 13:25:03
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2007  


Помог: 0 раз(а)




Привет, пишу авторизацию для чата, как правильно отсечь доступ к функции show_chat без авторизации?
за одно оцените правильно ли я делаю, может что то неправильно.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include('config.php');
  4. // Указываем тип и кодировку
  5. Header("Content-Type: text/html; charset=utf-8");
  6.  
  7.   if ( !isset( $_GET["chat"] ) ) $_GET["chat"] = "form";
  8.   $chat = $_GET["chat"];
  9.  
  10.   switch ( $chat )
  11.   {
  12.       case "form":
  13.           form_login(); break;
  14.           case "login":
  15.           login_to_chat(); break;
  16.           case "chat":
  17.           show_chat(); break;
  18.           case "logout":
  19.           logout_chat();
  20.           form_login(); break;
  21.       default:
  22.           form_login();
  23.   }
  24.  
  25.   function form_login()
  26.   {
  27.     echo '<table align="center" width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">'."\n";
  28.     echo '<tr>'."\n";
  29.     echo '<td align="center">'."\n";
  30.     // форма входа
  31.     echo '<table align="center" width="250" height="100" cellspacing="2" cellpadding="2" border="0">'."\n";
  32.     echo '<tr>'."\n";
  33.         echo '<td colspan="2">Вход</td>'."\n";
  34.     echo '</tr>'."\n";
  35.     echo '<tr>'."\n";
  36.         echo '<form action="'.$_SERVER["PHP_SELF"].'?chat=login" method="POST">'."\n";
  37.         echo '<td>name:</td>'."\n";
  38.                 echo '<td><input type="text" name="name" class="r4" value=""></td>'."\n";
  39.     echo '</tr>'."\n";
  40.     echo '<tr>'."\n";
  41.         echo '<td>pass:</td>'."\n";  
  42.                 echo '<td><input type="password" name="pass" class="r4" value=""></td>'."\n";
  43.     echo '</tr>'."\n";
  44.     echo '<tr>'."\n";
  45.             echo '<td>&nbsp;</td>'."\n";
  46.         echo '<td><input type="submit" value="войти"></td>'."\n";
  47.     echo '</tr>'."\n";
  48.     echo '<tr>'."\n";
  49.         echo '<td colspan="2" align="center">регистрация / забыл пароль</td>'."\n";
  50.     echo '</tr>'."\n";
  51.     echo '</table>'."\n";
  52.  
  53.         echo '</td>'."\n";
  54.     echo '</tr>'."\n";
  55.     echo '</table>'."\n";
  56.   }
  57.  
  58.   function login_to_chat()
  59.   {
  60.     //Проверяем данные
  61.     $name = $_POST['name'];
  62.     $pass = $_POST['pass'];
  63.     if($name !='' AND $pass !='')
  64.         {
  65.     //Создаем запрос
  66.     $sql = mysql_query ("SELECT * FROM users WHERE name='".$name."' AND pass='".md5($pass)."'");
  67.  
  68.     //Проверяем существует ли хоть одна запись
  69.     if( mysql_num_rows ( $sql ) === 1 )
  70.         {
  71.     //Если есть, то создаем сессии и перенаправляем на эту страницу
  72.     $login = mysql_fetch_array($sql);
  73.     $_SESSION['name'] = $login['name'];
  74.     $_SESSION['pass'] = $login['pass'];
  75.  
  76.     $_SESSION['SID'] = md5(crypt($login['name'],$login['pass']));
  77.  
  78.     @Header("Location: ".$_SERVER["PHP_SELF"]."?chat=chat");
  79.     }
  80.         else
  81.         {
  82.                 echo 'Неверный логин/пароль';
  83.         }
  84.  
  85.     }
  86.         else
  87.         {
  88.                 echo 'Введите данные';
  89.         }
  90.   }
  91.  
  92.   function show_chat()
  93.   {
  94.      echo 'Имя: '.$_SESSION['name'].'<br>';
  95.          echo 'Пасс: '.$_SESSION['pass'].'<br>';
  96.          echo '<a href="'.$_SERVER["PHP_SELF"].'?chat=logout">выход</a>';
  97.   }
  98.  
  99.   function logout_chat()
  100.   {
  101.      session_destroy();
  102.   }
  103.  
  104. ?>
  105.  

(Отредактировано автором: 15 Октября, 2009 - 13:26:48)



-----
Лень - двигатель прогресса, имхо Улыбка
Работаю над проектами в сфере информационного сайтостроения.
 
 Top
valenok Модератор
Отправлено: 15 Октября, 2009 - 14:02:18
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А где проверка на авторизованность ?


-----
Truly yours, Sasha.
 
My status
 Top
Платинум
Отправлено: 15 Октября, 2009 - 14:05:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


Помог: 0 раз(а)




Snic пишет:
===

Это что за ужас ? Не понял
 
My status
 Top
Champion Супермодератор
Отправлено: 15 Октября, 2009 - 14:22:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Платинум это не ужас. Прочитай про операции сравнения
 
 Top
Snic
Отправлено: 15 Октября, 2009 - 14:22:49
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2007  


Помог: 0 раз(а)




Правильно? Закатив глазки

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include('config.php');
  4. // Указываем тип и кодировку
  5. Header("Content-Type: text/html; charset=utf-8");
  6.  
  7.   if ( !isset( $_GET["chat"] ) ) $_GET["chat"] = "form";
  8.   $chat = $_GET["chat"];
  9.  
  10.   switch ( $chat )
  11.   {
  12.       case "form":
  13.           form_login(); break;
  14.           case "login":
  15.           login_to_chat(); break;
  16.           case "chat":
  17.           show_chat(); break;
  18.           case "logout":
  19.           logout_chat();
  20.           form_login(); break;
  21.       default:
  22.           form_login();
  23.   }
  24.  
  25.   function form_login()
  26.   {
  27.     echo '<table align="center" width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">'."\n";
  28.     echo '<tr>'."\n";
  29.     echo '<td align="center">'."\n";
  30.     // форма входа
  31.     echo '<table align="center" width="250" height="100" cellspacing="2" cellpadding="2" border="0">'."\n";
  32.     echo '<tr>'."\n";
  33.         echo '<td colspan="2">Вход</td>'."\n";
  34.     echo '</tr>'."\n";
  35.     echo '<tr>'."\n";
  36.         echo '<form action="'.$_SERVER["PHP_SELF"].'?chat=login" method="POST">'."\n";
  37.         echo '<td>name:</td>'."\n";
  38.                 echo '<td><input type="text" name="name" class="r4" value=""></td>'."\n";
  39.     echo '</tr>'."\n";
  40.     echo '<tr>'."\n";
  41.         echo '<td>pass:</td>'."\n";  
  42.                 echo '<td><input type="password" name="pass" class="r4" value=""></td>'."\n";
  43.     echo '</tr>'."\n";
  44.     echo '<tr>'."\n";
  45.             echo '<td>&nbsp;</td>'."\n";
  46.         echo '<td><input type="submit" value="войти"></td>'."\n";
  47.     echo '</tr>'."\n";
  48.     echo '<tr>'."\n";
  49.         echo '<td colspan="2" align="center">регистрация / забыл пароль</td>'."\n";
  50.     echo '</tr>'."\n";
  51.     echo '</table>'."\n";
  52.  
  53.         echo '</td>'."\n";
  54.     echo '</tr>'."\n";
  55.     echo '</table>'."\n";
  56.   }
  57.  
  58.   function login_to_chat()
  59.   {
  60.     if (isset($_POST['name']) && isset($_POST['pass']))
  61.     {
  62.     $name = mysql_real_escape_string($_POST['name']);
  63.     $pass = md5($_POST['pass']);
  64.  
  65.     // делаем запрос к БД
  66.     // и ищем юзера с таким логином и паролем
  67.  
  68.     $query = 'SELECT * FROM users WHERE name="'.$name.'" AND pass="'.$pass.'" LIMIT 1';
  69.     $sql = mysql_query($query) or die(mysql_error());
  70.  
  71.     // если такой пользователь нашелся
  72.     if (mysql_num_rows($sql) == 1)
  73.         {
  74.         // то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)
  75.         $row = mysql_fetch_assoc($sql);
  76.         $_SESSION['user_id'] = $row['id'];
  77.         $_SESSION['name'] = $row['name'];
  78.         $_SESSION['pass'] = $row['pass'];
  79.                 $_SESSION['SID'] = md5(crypt($row['name'],$row['pass']));
  80.                
  81.                 Header("Location: ".$_SERVER["PHP_SELF"]."?chat=chat");
  82.     }
  83.     else
  84.         {
  85.         die('Такой логин с паролем не найдены в базе данных. <a href="'.$_SERVER["PHP_SELF"].'?chat=form">Авторизируйтесь</a>.');
  86.     }
  87.   }
  88.   }
  89.  
  90.   function show_chat()
  91.   {
  92.         if (isset($_SESSION['user_id'], $_SESSION['name'], $_SESSION['pass'], $_SESSION['SID']))
  93.         {
  94.     echo '<a href="'.$_SERVER["PHP_SELF"].'?chat=logout">выход</a>';
  95.     }
  96.     else
  97.         {
  98.     die('Доступ закрыт, <a href="'.$_SERVER["PHP_SELF"].'?chat=form">авторизируйтесь</a>.');
  99.     }
  100.   }
  101.  
  102.   function logout_chat()
  103.   {
  104.      session_destroy();
  105.   }
  106.  
  107. ?>
  108.  

(Отредактировано автором: 15 Октября, 2009 - 14:32:04)



-----
Лень - двигатель прогресса, имхо Улыбка
Работаю над проектами в сфере информационного сайтостроения.
 
 Top
Платинум
Отправлено: 15 Октября, 2009 - 14:45:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


Помог: 0 раз(а)




Champion
Спасибо, шас буду знать Хм
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB