<?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 написал(а):
Первое что увидел:
это не катит... Используйте header http://php.net/manual/en/function.header.php
Или если уж так нужно или хочется:
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 знака.... значит можно в начале не рубать пароль
А зачем это:
не особо понятно... если на входе у вас mysql_real_escape_string, на выходе htmlspecialchars... Что может плохого случиться? Зачем огран. юзеров символами?
`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 символов
Для какой цели ограничивать логин лишь литиницей? Ну да чёрт с логином, но пасс....
Если на этом сайте будет работа с финансами - то я не смогу свой пасс даже указать. Я не за что на таком сайте не стану регится... Не делай ограничения на пароль вообще никаких. Ну разве что размер паса не более 50 символов
Спустя 1 минута, 39 секунд (2.09.2010 - 12:36) Guest написал(а):
DedMorozzz
Когда addslashes убираю, javascript запускается, точнее alert
Когда 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 написал(а):
то есть, нужно убрать
и везде, где echo прописывать
ПРАВИЛЬНО?
$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]
[php]
if (get_magic_quotes_gpc ())
{
$login = stripslashes ($login) ;
$pass = stripslashes ($pass) ;
}
echo htmlspecialchars ($login).htmlspecialchars ($pass) ;
[php]