Перейти к содержанию
Авторизация  
La2Bash

Оцените Скрипт Регистрации

Рекомендуемые сообщения

Всем привет :)

Кто хорошо шарит в php, посмотрите на наличие возможных ошибок (в плане безопасности, оптимизации)

 

 

<?php

if (!defined(SECURED)) {die("<meta http-equiv='refresh' content='0; URL=http://{$_SERVER['HTTP_HOST']}/404'>");}

function email_check($email) {

if (!preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",trim($email)))

{

return false;

}

else return true;

}

echo ('

<script type="text/javascript" src="/template/form.js"></script>

<form action="" method="POST" onsubmit="return checkform(this)" name="reg">

<div id="page_title"><h2>РЕГИСТРАЦИЯ</h2></div>

');

$newlogin=$_POST['newlogin'];

$newpassword=$_POST['newpassword'];

$newpassword2=$_POST['newpassword_check'];

$newmail=$_POST['newmail'];

$newnick=$_POST['newnick'];

if ($_POST['doact'] =='reg')

{

if(strlen($newlogin) < 5 or strlen($newlogin) > 16)

{

$ok=false;

$mes='Длинна поля Логин не должна быть менее 5 символов и не должна превышать 16.';

}

else if ( !eregi("^[a-zA-Z0-9_-]+$", $newlogin))

{

$ok=false;

$mes='Поле Логин может содержать только символы a-z,A-Z,0-9.';

}

else if(strlen($newpassword) < 5 or strlen($newpassword) > 16)

{

$ok=false;

$mes='Длинна поля пароль должна быть не длиннее 25 символов и не короче 5.';

}

else if($newpassword <> $newpassword2)

{

$ok=false;

$mes='Введенные пароли не совпадают.';

}

else if(strlen($newmail) < 5 or strlen($newmail) > 25)

{

$ok=false;

$mes='Длинна поля E-Mail должно быть не длиннее 25 символов и не короче 5.';

}

else

{

$ok=true;

}

if (!$ok)

{

echo('

<center>

'.$mes.'<br>

<input type="submit" value="Повторить попытку">

</center>

<input type="hidden" name="newlogin" value="'.$newlogin.'">

<input type="hidden" name="newmail" value="'.$newmail.'">

');

}

else

{

if ($connect)

{

$newlogin=antiinjection($newlogin);

$newpassword=antiinjection($newpassword);

$newpassword_check=antiinjection($newpassword_check);

$newmail=antiinjection($newmail);

$good_reg=true;

$check_account_query=mysql_query('select login from accounts where login="'.$newlogin.'"',$connect);

$check_account=mysql_num_rows($check_account_query);

if ($check_account)

{

$good_reg=false;

$mes='Данный логин уже кто то использует, пожалуйста выберите другой.';

}

$check_mail_query=mysql_query('select email from accounts where email="'.$newmail.'"',$connect);

$check_mail=mysql_num_rows($check_mail_query);

if($check_mail)

{

$good_reg=false;

$mes='Данный E-Mail уже кто то использует, пожалуйста выберите другой.';

}

if(!email_check($newmail))

{

$good_reg=false;

$mes='Вы допустили ошибку при вводе E-Mail, пожалуйста попробуйте снова.';

}

if ($good_reg)

{

// именно рег (если акка еще нету)

$newpassword=base64_encode(pack('H*', sha1(utf8_encode($newpassword))));

mysql_query('insert into accounts (login,password,email) values ("'.$newlogin.'","'.$newpassword.'","'.$newmail.'")',$connect);

if (mysql_errno()=='0')

{

echo (

'

<center>

<font size=20>Поздравляем!</font>

<br><br><br>

<font size=4>Аккаунт успешно зарегистрирован.</font>

<br>

Ваш логин: '.$newlogin.';<br>

Ваш E-Mail: '.$newmail.';<br>

На ваш почтовый адрес отправлено письмо с дальнейшими указаниями по активации аккаунта.<br>

<br>

<a href="/?page=files">Перейти в раздел файлы</a>

</center>

');

$subject='Регистрация аккаунта - '.$newlogin.' | L2';

$mail_message = '

<center>

<font size=7 color=green>Поздравляем!</font><br>

<font size=5>Вы успешно зарегистрировали аккаунт!</font><br>

</center><br>

<b>========== [ АКТИВАЦИЯ АККАУНТА ] ==========</b><br>

Автоматическая активация прошла успешно.

<br>

<b>========== [ ИНФОРМАЦИЯ ОБ АККАУНТЕ ] ==========</b><br>

<b>Логин:</b> '.$newlogin.'<br>

<b>Пароль:</b> Указаный вами при регистрации.

<br>

<b>Запомните! Администрация никогда не просит данных от вашего аккаунта!</b><br>

<center><font size=4 color=green>Желаем приятной игры!</font><br>

</center>

';

$headers= "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=cp1251\r\n";

$headers .= "From: <ololo>\r\n";

mail($newmail, $subject, $mail_message, $headers);

}

else echo(mysql_error());

}

else

{

echo('

<center>

'.$mes.'<br>

<input type="submit" value="Повторить попытку">

</center>

<input type="hidden" name="newlogin" value="'.$newlogin.'">

<input type="hidden" name="newmail" value="'.$newmail.'">

');

 

 

}

}

else die ('Регистрация временно не доступна, приносим наши извенения.');

}

}

else

{

if($CONFIG['reg_open'] && $mysqlserv)

{

?>

Для игры на нашем сервере вам понадобится игровой аккаунт.<br>

При регистрации вы автоматически соглашаетесь с правилами проекта.

<br><br>

<font size="5">Логин</font><br><br>

<input maxlength='16' size='25' type='text' name='newlogin' value='<?php echo($_POST['newlogin'])?>' style="text-align: center; ">

<br>

<font size="2">Максимальная длина - 16 символов, чем сложнее логин тем меньше шансов взлома аккаунта.</font>

<br><br>

<font size="5">Пароль</font><br><br>

<input maxlength='16' size='25' type='password' name='newpassword' style="text-align: center; ">

<br>

<font size="2">Максимальная длина - 16 символов, помните что администрация никогда не просит данные от вашего аккаунта.</font>

<br><br>

<font size="5">Повторите пароль</font><br><br>

<input maxlength='16' size='25' type='password' name='newpassword_check' style="text-align: center; ">

<br>

<font size="2">Введите пароль ещё раз.</font>

<br><br>

<font size="5">E-Mail</font><br><br>

<input maxlength='25' size='25' type='text' name='newmail' value='<?php echo($_POST['newmail'])?>' style="text-align: center; ">

<br>

<font size="2">Введите ваш почтовый адрес, на него будет выслано письмо с дальнейшими инструкциями по регистрации аккаунта.</font>

<br>

<center><input size='16' type='image' name='ok' src="/template/buttons/reg.png" value='ok'></center>

<input type='hidden' name='doact' value='reg' >

<?php

}

else

{

echo $CONFIG['regoff_message'];

}

}

?>

</form>

 

 

Изменено пользователем Mister Coder

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

else if(strlen($newpassword) < 5 or strlen($newpassword) > 16)

 

раз уж в логе о 25 говоришь, то и указывай 25)

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$newlogin=$_POST['newlogin'];

$newpassword=$_POST['newpassword'];

$newpassword2=$_POST['newpassword_check'];

$newmail=$_POST['newmail'];

$newnick=$_POST['newnick'];

 

ахах, супер :) Вот тут профильтруй my_esc юзай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$newlogin=antiinjection($newlogin);

$newpassword=antiinjection($newpassword);

$newpassword_check=antiinjection($newpassword_check);

$newmail=antiinjection($newmail);

 

 

дай и вот тут, antiinjection - это у тебя функция на фильтрацию?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...