[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Грамотно ли написана авторизация и регистрация)))
New Guest
Код авторизации


<?php

session_start () ;

//Подключаем конфиг. файл
include ("conf.php") ;


//Инициализация логина
$login = $_POST['login'] ;

$login = substr ($login, 0, 12) ;

$login = preg_replace ("/[^0-9a-z]/i", "", $login) ;



//Инициализация пароля
$pass = $_POST['pass'] ;

$pass = substr ($pass, 0, 12) ;

$pass = preg_replace ("/[^0-9a-z]/i", "", $pass) ;


//Магические кавычки
if (get_magic_quotes_gpc ())
{
$login = stripslashes ($login) ;

$pass = stripslashes ($pass) ;
}


$login = addslashes ($login) ;

$pass = addslashes ($pass) ;


$res = "SELECT * FROM `user`
WHERE `login` = '"
.mysql_real_escape_string ($login)."'
AND `pass` = '"
.mysql_real_escape_string ($pass)."' " ;

$query = mysql_query ($res) ;

$row = mysql_fetch_array ($query) ;


if ($_REQUEST['sub'])
{

if (!mysql_num_rows($query))
{
echo "Неверный логин или пароль" ;
}
else
{
$_SESSION['id'] = $row['id'] ;

$_SESSION['login'] = $row['login'] ;

echo "<meta http-equiv='Refresh' content='0; URL=secter_page.php'>" ;

}


}




?>



<form action="" method="post">

<p><label>
Логин</label>
<input
type="text" name="login" size="15" maxlength="15" value="<?php echo htmlspecialchars($login) ; ?>" />
</p>

<p><label>
Пароль</label>
<input
type="password" name="pass" size="15" maxlength="15" />
</p>

<p><input
type="submit" name="sub" value="Войти" />
</p>

</form>

<a
href="reg.php">Регистрация</a>







Код регистрации


<?php

session_start () ;

//Подключаем конфиг. файл
include ("conf.php") ;


//Инициализация логина
$login = $_POST['login'] ;

$login = substr ($login, 0, 12) ;

$login = preg_replace ("/[^0-9a-z]/i", "", $login) ;



//Инициализация пароля
$pass = $_POST['pass'] ;

$pass = substr ($pass, 0, 12) ;

$pass = preg_replace ("/[^0-9a-z]/i", "", $pass) ;


//Магические кавычки
if (get_magic_quotes_gpc ())
{
$login = stripslashes ($login) ;

$pass = stripslashes ($pass) ;
}


$login = addslashes ($login) ;

$pass = addslashes ($pass) ;


$res2 = "SELECT * FROM `user`
WHERE `login` = '"
.mysql_real_escape_string ($login)."' " ;

$query2 = mysql_query ($res2) ;

$row2 = mysql_fetch_array ($query2) ;


if ($_REQUEST['sub2'])
{

if (mysql_num_rows($query2))
{
echo "Этот логин занят" ;
}
else
{
if (empty ($login))
{
echo "Вы не ввели логин<br />" ;
}

if (empty ($pass))
{
echo "Вы не ввели пароль" ;
}

if ($login and $pass)
{
$ins = "INSERT INTO `user` (`login` ,`pass`)
VALUES ('"
.mysql_real_escape_string ($login)."',
'"
.mysql_real_escape_string ($login)."') " ;

$ins_query = mysql_query ($ins) ;

if ($ins_query)
{
echo "Вы успешно зарегистрированы" ;
}


}
}


}




?>



<form action="" method="post">

<p><label>
Введите желаемый логин</label>
<input
type="text" name="login" size="15" maxlength="15" value="<?php echo $login ; ?>" />
</p>

<p><label>
Введите желаемый пароль</label>
<input
type="password" name="pass" size="15" maxlength="15" />
</p>

<p><input
type="submit" name="sub2" value="Зарегиться" />
</p>

</form>




Спустя 9 минут, 53 секунды (2.09.2010 - 12:22) phz написал(а):
Первое что увидел:

echo "<meta http-equiv='Refresh' content='0; URL=secter_page.php'>" ;


это не катит... Используйте header http://php.net/manual/en/function.header.php

Или если уж так нужно или хочется:

function redirect($url){
if (!headers_sent()){ //If headers not sent yet... then do php redirect
header('Location: '.$url); exit;
}else{ //If headers are sent... do java redirect... if java disabled, do html redirect.
echo '<script type="text/javascript">';
echo 'window.location.href="'.$url.'";';
echo '</script>';
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
echo '</noscript>'; exit;
}
}

Спустя 3 минуты, 20 секунд (2.09.2010 - 12:25) Guest написал(а):
а так в общем код сам нормальный?))) инъекцию проглотит?

Спустя 5 минут, 2 секунды (2.09.2010 - 12:30) phz написал(а):
Кстати пароль пропускайте через md5() и после мд5 будет 32 знака.... значит можно в начале не рубать пароль

`pass` = '".md5 ($pass)."'


А зачем это:

$login = preg_replace ("/[^0-9a-z]/i", "", $login);


не особо понятно... если на входе у вас mysql_real_escape_string, на выходе htmlspecialchars... Что может плохого случиться? Зачем огран. юзеров символами?

Спустя 4 минуты, 11 секунд (2.09.2010 - 12:34) Guest написал(а):
ясно, спасибо. PHZ, насчет инъекции не ответил...

Спустя 31 секунда (2.09.2010 - 12:35) DedMorozzz написал(а):
аддслешес зачем?
Для какой цели ограничивать логин лишь литиницей? Ну да чёрт с логином, но пасс....
Если на этом сайте будет работа с финансами - то я не смогу свой пасс даже указать. Я не за что на таком сайте не стану регится... Не делай ограничения на пароль вообще никаких. Ну разве что размер паса не более 50 символов

Спустя 1 минута, 39 секунд (2.09.2010 - 12:36) Guest написал(а):
DedMorozzz

Когда addslashes убираю, javascript запускается, точнее alert

Спустя 34 секунды (2.09.2010 - 12:37) phz написал(а):
Цитата (Guest @ 2.09.2010 - 09:34)
ясно, спасибо. PHZ, насчет инъекции не ответил...

Ну если у вас везде будет на входе в базу mysql_real_escape_string, на выходе в браузер htmlspecialchars

то всё будет ок.

Спустя 28 секунд (2.09.2010 - 12:37) DedMorozzz написал(а):
Почитай про ХТМЛСПЕШИАЛЧАРТ

Спустя 2 минуты, 45 секунд (2.09.2010 - 12:40) Guest написал(а):
то есть, нужно убрать

$login = addslashes ($login) :
$pass = addslashes ($pass) ;


и везде, где echo прописывать


htmlspecialchars ($login) ;
htmlspecialchars ($pass) ;


ПРАВИЛЬНО?

Спустя 3 минуты, 4 секунды (2.09.2010 - 12:43) phz написал(а):
# Борьба с магическими кавычками      

if (get_magic_quotes_gpc())
{
function stripslashes_deep($value)
{
if( is_array($value) )
{
$value = array_map('stripslashes_deep', $value);
}
elseif ( !empty($value) && is_string($value) )
{
$value = stripslashes($value);
}
return $value;
}

$_GET = stripslashes_deep($_GET);
$_POST = stripslashes_deep($_POST);
$_COOKIE = stripslashes_deep($_COOKIE);
}

Спустя 3 минуты, 13 секунд (2.09.2010 - 12:47) Guest написал(а):
а так нельзя?

[php]
if (get_magic_quotes_gpc ())
{
$login = stripslashes ($login) ;

$pass = stripslashes ($pass) ;
}


echo htmlspecialchars ($login).htmlspecialchars ($pass) ;
[php]
Быстрый ответ:

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