[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: мой PHP скрипт Авторизации
x0ka
Написал такой вот скрипт Авторизации.
Как уже написано в теме - используется:
$_POST, $_SESSION и $_COOKIE

Хотелось бы услышать ваши комментарии...

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

может на что то в моей схеме стоит обратить внимание...

Точно знаю ,что, АшиПки есть =)
Свернутый текст

PHP
<?
function track_text($str)    
{ 
    $BS 
= array('`','\'','\\','/',',','.','?',';',":");
    $str = trim($str);
    $str = strip_tags($str);
    $str = str_replace($BS,'',$str);
        return($str);
};

function user($uLogin,$uPass,$bd)
{
    include("../inc/MySQL.php");
    $db = mysql_connect($server,$user,$password);
    $base = "Base";
    mysql_select_db($base,$db);
    $sql = "SELECT * FROM `users` WHERE `login` = '$uLogin' and `pass` = '$uPass' LIMIT 1";
    $result = mysql_query($sql,$db);
    $myrow = mysql_fetch_array($result);
        return($myrow[$bd]);
};

session_start();

if ( $_GET['do'] == 'exit' )
{
    session_destroy();
    unset($autorization);
    setcookie('login', '', time() );
    setcookie('pass', '', time() );
};

if ( isset($_POST['enter']) )
{
    $aut_login     = track_text($_POST['login']);
    $aut_pass     = md5(track_text($_POST['pass']));
        
} else {

session_start();

if ( (isset($_SESSION['login'])) && (isset($_SESSION['pass'])) 
&& ($_SESSION['login'] != '') && ($_SESSION['pass'] != '') )
{
    $aut_login     = $_SESSION['login'];
    $aut_pass     = $_SESSION['pass'];    
    
} else {)

if ( isset($_COOKIE['login']) && isset($_COOKIE['pass']) 
&& ($_COOKIE['login'] != '') && ($_COOKIE['pass'] != '') )
{
    $aut_login    = $_COOKIE['login'];
    $aut_pass    = $_COOKIE['pass'];
};

};

};

if ( user($aut_login,$aut_pass,'id') )
{
    $autorization = true;
    $login    = user($aut_login,$aut_pass,"login");
    $pass    = user($aut_login,$aut_pass,"pass");
    
    session_start
();
    
    $_SESSION
['login']    = $login;
    $_SESSION['pass']    = $pass;

if ($_POST['save'] == 1)
{
    setcookie('login', $login, time() + 18000);
    setcookie('pass', $pass, time() + 18000);
};

};


if(
$autorization)
{
echo "Логин : ".$login."<br>";
echo "<a href='?do=exit'>Выход</a>";

}
 else {

echo "
<form action='' method='post' >
<table cellspacing='0' cellpadding='0' border='0'>
  <tr>
    <td>Логин :</td>
    <td><input name='login' type='text' size='15' maxlength='35'></td>
  </tr>
  <tr>
    <td>Пароль :</td>
    <td><input name='pass' type='password' size='15' maxlength='35'></td>
  </tr>
  <tr>
  <td colspan='2'>
  <input name=enter value='Войти' type='submit'>
  <input name='save' type='checkbox' value='1'>
  Запомнить.
  </td>
  </tr>
</table>
</form>"
;
};





Спустя 52 минуты, 13 секунд (17.05.2009 - 04:56) kirik написал(а):
1. Что будет, если у меня пароль будет <br />'`:; ?
2. Зачем каждый вызов функции user() делать запрос?
3. Сначала нужно проверять не залогинен-ли пользователь, а потом пытается-ли он залогиниться
4. Зачем после фигурных скобок точка с запятой?
5. Чтобы убить куку ее лучше ставить на время в прошлом, а не на текущее
6. if($_POST['save'] == 1) нужно проверять тогда же, когда чел логинится
7. $_SESSION['pass'] = $pass; - зачем в сессии нужен пароль?
8. Если человек залогинен (в сессии прописан его логин), то не нужно делать лишних запросов в БД на сравнение его логина и пароля (который в сессии не нужен, см. п.7)
9. if(...isset($_COOKIE['login'])...&&...$_COOKIE['login'] != ''...) можно заменить на if(...!empty($_COOKIE['login'])...) (и IF с сессиями тоже)
...

Спустя 3 минуты, 19 секунд (17.05.2009 - 04:59) x0ka написал(а):
Спасибо за инфо...
буду совершенствовать

Спустя 6 минут, 38 секунд (17.05.2009 - 05:06) x0ka написал(а):
kirik
3 Пункт это я так понял оптимальнее проверять...
.session
..Cookie
...POST

Спустя 1 час, 48 минут, 40 секунд (17.05.2009 - 06:54) kirik написал(а):
Цитата (x0ka @ 16.05.2009 - 21:06)
3 Пункт это я так понял оптимальнее проверять...
.session
..Cookie
...POST

Ага!

Цитата (x0ka @ 16.05.2009 - 20:59)
буду совершенствовать

Давай, и сюда выкладывай smile.gif

Спустя 27 минут, 16 секунд (17.05.2009 - 07:22) x0ka написал(а):
kirik Обязательно wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.