[help]Скрипт регистрации Inshell
Суть проблемы:Переписал скрипт иншела чтобы в базу добавлялся e-mail но теперь другая проблема читеры и забанненые игроки используют свой e-mail по сотням раз и не хотят спокойно уходить с сервера кричат что я плохой и что сервер у меня плохой что они мегохацкеры и они сломают его в два счёта...=(
так вот в чём проблема я прошу у людей,перепишите и дайте скрипт мне пожалуйста чтобы работал=)
разумеется в долгу не останусь=)
if (!defined(SECURED)) {die("<meta http-equiv='refresh' content='0у URL=http://{$_SERVER['HTTP_HOST']}/404'>");}
echo('<script type="text/javascript" src="/skin/system/form.js"></script><form action="" method="POST" onsubmit="return checkform(this)" name="reg">');
$newlogin=$_POST['newlogin'];
$newpassword=$_POST['newpassword'];
$newpassword2=$_POST['newpassword2'];
$newmail=antiinjection($_POST['newmail']);
$regcode=$_POST['code'];
$ip = antiinjection(UrlDecode(getenv('REMOTE_ADDR')));
if ($_POST['doact'] =='reg')
{
$checkedlogin='';
$ok=false;
//начинаем поэтапную проверку данных
if(strlen($newlogin) < 5 or strlen($newlogin) > 16)
{
$ok=false;
$mes='<font class="textreg">Длинна поля логин должно быть не длиннее 16 символов и не короче 5.</font>';
}
else if ( !eregi("^[a-zA-Z0-9_-]+$", $newlogin))
{
$ok=false;
$mes='<font class="textreg">Поле логин должно содержать только латиницу.</font>';
}
else if(strlen($newpassword) < 5 or strlen($newpassword) > 16)
{
$ok=false;
$mes='<font class="textreg">Длинна поля пароль должна быть не длиннее 16 символов и не короче 5.</font>';
}
else if ( !eregi("^[a-zA-Z0-9_-]+$", $newpassword))
{
$ok=false;
$mes='<font class="textreg">Поле пароль должно содержать только латиницу.</font>';
}
else if($newpassword <> $newpassword2)
{
$ok=false;
$mes='<font class="textreg">Введенные пароли не совпадают.</font>';
}
{
$ok=false;
$mes='<font class="textreg">Длинна поля логин должно быть не длиннее 16 символов и не короче 5.</font>';
}
{
$ok=true;
}
if (!$ok)
{
echo('
<form action="" method="post">
<table align="center">
<tr>
<td>'.$mes.'</td>
</tr>
<tr>
<input type="hidden" name="newlogin" value="'.$newlogin.'">
<input type="hidden" name="newmail" value="'.$newmail.'">
<td align="center"><input type="submit" value="Назад"></td>
</tr>
</table>
</form>
');
}
else
{
//сам рег тут
if ($ls_link)
{
//сама процедура реги.
$newlogin=antiinjection($newlogin);
$newpassword=antiinjection($newpassword);
$newmail=antiinjection($newmail);
$qu=mysql_query('select login from accounts where login="'.$newlogin.'"',$ls_link);
if ($qu)
{
$ro=mysql_num_rows($qu);
}
else
$qu='0';
if ($ro =='0')
{
// именно рег (если акка еще нету)
$newpassword =base64_encode(pack('H*', sha1(utf8_encode($newpassword))));
mysql_query('insert into accounts (login,password,mail) values ("'.$newlogin.'","'.$newpassword.'","'.$newmail.'")',$ls_link);
unset($_SESSION['captcha_keystring']);
if (mysql_errno()=='0')
{
echo (
'
<table align="center" width="100%" class="textreg">
<tr><td>
<table align="center" class="textreg">
<caption>Регистрация прошла успешно</caption>
<tr><td align="center"> <li></li> </td> </td><td><font class="textreg">Логин:</font></td><td><font class="textreg">'.$newlogin.'</font></td></tr>
<tr><td align="center"> <li></li> </td> <td><font class="textreg">E-mail:</font></td><td><font class="textreg">'.$newmail.'</font></td></tr></table>
</td></tr>
<tr><td><font class="textreg"><center></center></font></td></tr></table>');
readfile('./htpages/goodreg.htm');
//регистрация прошла успешно.
}
else echo(mysql_error());
}
else
{
$qu=mysql_query('select login from accounts where login="'.$newlogin.'" and mail="'.$newmail.'"',$ls_link);
$ro=mysql_num_rows($qu);
if ($ro != '0')
{
$mes='Такой логин или email уже используется.';
}
echo('
<form action="" method="post">
<table align="center">
<tr>
<td>'.$mes.'</td>
</tr>
<tr>
<input type="hidden" name="newlogin" value="'.$newlogin.'">
<input type="hidden" name="newmail" value="'.$newmail.'">
<td align="center"><input type="submit" value="Назад"></td>
</tr>
</table>
</form>
');
}
}
else die ('Регистрация временно не доступна, приносим наши извенения.');
}
}
else
{
$checkedlogin='';
if ($_POST['doact']=='checklogin')
{
$checklog=antiinjection($_POST['check']);
$result=mysql_query('select * from accounts where login="'.$checklog.'" ',$ls_link);
if ($result)
{
if (mysql_num_rows($result)=='1')
{
$checkedlogin='<font color="#CF0B30"><b>Аккаунт уже используется</b></font>';
}
else
{
$checkedlogin='<font color="lightgreen"><b>Аккаунт свободен</b></font>';
}
}
}
//форма регистрации
?>
<table id="window_full" align="center" border="0" cellpadding="0" cellspacing="0">
<tbody><tr><td class="lefttop"></td><td class="centertop"></td><td class="righttop"></td></tr>
<tr>
<td class="leftcenter"></td>
<td class="center">
<?php readfile('./htpages/reginfo.htm');?>
</td>
<td class="rightcenter"></td>
</tr>
<tr><td class="leftbottom"></td><td class="centerbottom"></td><td class="rightbottom"></td></tr>
</tbody></table><br><br>
<table width="100%" align='center' border='0' cellpadding='2' cellspacing='1' bgcolor='' class='intro'>
<tr class="trreg">
<td width='40'> </td>
<td><font class="textreg">Логин</font></td>
<td align='left'><input maxlength='16' size='16' type='text' name='newlogin' style="text-align: center; background:#685f5b; border: 1px solid #E2B443; color:#ffffff; font-weight:bold" value='<?php echo($_POST['newlogin'])?>'><br><font size="2"></font></td>
<td align='left'><font class="textreg">Введите логин</font><br><?php echo($checkedlogin); ?></td>
</tr>
<tr class="trreg">
<td width='40'> </td>
<td><font class="textreg">E-Mail</font></td>
<td align='left'><input maxlength='16' size='16' type='text' name='newmail' style="text-align: center; background:#685f5b; border: 1px solid #E2B443; color:#ffffff; font-weight:bold" value='<?php echo($_POST['newmail'])?>'><br><font size="2"></font></td>
<td align='left'><font class="textreg">Введите E-Mail</font><br><?php echo($checkedmail); ?></td>
</tr>
<tr class="trreg">
<td> </td>
<td><font class="textreg">Пароль</font></td>
<td align='left'><input style="text-align: center; background:#685f5b; border: 1px solid #E2B443; color:#ffffff; font-weight:bold" size='16' maxlength='16' type='password' name='newpassword'><br><input style="text-align: center; background:#685f5b; border: 1px solid #E2B443; color:#ffffff; font-weight:bold" size='16' maxlength='16' type='password' name='newpassword2'></td>
<td align='left'><font class="textreg">Введите пароль<br>(Повторите)</font></td>
</tr>
</table>
<br>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td style="padding: 0pt 0pt 0pt 20px;"><input name="agree" value="1" style="width: 15px; height: 15px;" tabindex="15" type="checkbox"></td>
<td align="left" valign="top"><font class="soglashenie">Для регистрации Вам необходимо принять <a target="_new" href="/index.php?act=rules">Игровые Правила</a>.</font></td>
</tr>
</tbody></table>
<br>
<table border="0" width="100%" cellpadding='0' cellspacing='3' align="center"><tr>
<td align="right"><input size='16' type='image' name='clear' onclick='this.form.reset();return false' src="/skin/system/cancel.gif"></td>
<td align="left"><input size='16' type='image'name='ok' src="/skin/system/ok2.gif" value='ok'></td>
</td></tr></table>
<input type='hidden' name='doact' value='reg' >
<input type='hidden' name='check' value='' >
</form>
<?php
}//конец формы регистрации
?>
плз если перепишите чтобы мыло проверяло когда регистрировало в таком же формате оставьте тут =)
ребят ну пожалуйста кому не влом я просто в пхп не шарю почти=(
"ВВЕРХ"
ап
$result=mysql_query("INSERT INTO activate (user, key) VALUES ('".$_POST['user']."', '.base64_encode(md5($_SERVER['REMOTE_ADDR']))."')");
$to = $_POST['email'];
$subject = 'Активация аккаунта';
$message = 'http://host.ru/script.php?activate='.$_POST['user'].'&key='.base64_encode(md5($_SERVER['REMOTE_ADDR']));
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
if(isset($_GET['activate']))
{
$result=mysql_query("SELECT * FROM activate WHERE user='".$_GET['activate']."'");
$arr=mysql_fetch_array($result);
do
{
$array=$arr;
}
while($arr=mysql_fetch_array($result));
if($array==0)
{
echo 'Аккаунт не найден';
exit();
}
if($array['key'] !== $_GET['key'])
{
echo 'Неверный код активации';
exit();
}
mysql_query("UPDATE accounts SET status='1' WHERE user='".$_GET['activate']."'");
echo 'Аккаунт активирован';
Как-то так, я php знаю фигово. Но ковыряй в этом районе. На Perl в лёт напишу.


