Показать сообщение отдельно
Непрочитано 14.07.2009, 20:27   #6
Аватар для Voltage
Пользователь

По умолчанию Ответ: Скрипт регистрации для игрового сайта

немного переделал, добавил защиту от SQL-инъекций, убрал переменную $act, добавил контроль символов пароля..

PHP код:
<?php 
include("credentials.php"); 
$fsname $_SERVER['SCRIPT_NAME']; 
$msconn mysql_connect($dbhost.":".$dbport$dbuser$dbpass) or die ("Не удалось установить соединение с БД"); 
MYSQL_SELECT_DB($dbname) or die ("Не удалось установить соединение с БД"); 
$way = (int)$_GET[step];
if (
$way == 0){ 
echo (
'<form name="form1" method="post" action="'.$fsname.'?step=2"> 
<div align="center"> 
<table width="266" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td width="105" align="right">Логин</td> 
<td width="161"><label> 
<input name="login" type="text" id="login1"> 
</label></td> 
</tr> 
<tr> 
<td align="right">Пароль</td> 
<td><label> 
<input name="pass" type="password" id="pass"> 
</label></td> 
</tr> 
<tr> 
<td align="right">Повтор</td> 
<td><label> 
<input name="repeat" type="password" id="repeat"> 
</label></td> 
</tr> 
<tr> 
<td align="right">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
<td align="center"><label> 
<input type="submit" name="Submit" value="Регистрация"> 
</label></td> 
</tr> 
</table> 
</div> 
</form> 
<p>&nbsp;</p> 
'
); 

$way = (int)$_GET[step];
if (
$way == 2){ 
$login strtolower(addslashes($_POST[login])); 
$pass addslashes($_POST[pass]); 
$pass2 addslashes($_POST[repeat]);
if (
$login == "" or ctype_alnum($login) == false) { 
echo (
"<center>Введенное значение <font color=red>не</font> может быть логином.</center>"); 
}else{ 
if (
$pass == "" or ctype_alnum($pass) == false) { 
echo (
"<center>Введенное значение <font color=red>не</font> может быть паролем.</center>"); 
}else{ 
if (
$pass == $pass2) { 
$q mysql_query("SELECT * FROM accounts WHERE login='{$login}'"); 
if(!
mysql_numrows($q) > "0") { 
$gamepass base64_encode(pack("H*"sha1(utf8_encode($pass)))); 
mysql_query("INSERT INTO accounts(login, password, lastactive, access_level) VALUES('$login' , '$gamepass', '$lastactive', '0')"); 
echo (
"<center>Аккаунт <font color='red'>".$login."</font> успешно зарегистрирован</center>"); 
} else { 
echo (
"<center>Имя <font color='red'>".$login."</font> уже зарегистрировано, попробуйте другое.</center>"); 

}else { 
echo (
"<center>Пароли не совпадают</center>"); 



}
?>
__________________
Voltage вне форума Ответить с цитированием
Сказали спасибо: