ioncore
Новичок
PHP:
<?php
$stopwatch = microtime(true);
session_start();
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$error = array();
include_once ("secure.inc.php");
if (($randStr = ekran_var($_POST["str"], 6)) == "")
{
$error[] = 'Не заполнено поле ввода строки символов !';
} elseif ($randStr != $_SESSION["randStr"])
{
$error[] = "Неправильная строка с картинки";
} else
{
if (!($base = mysqli_connect('localhost', 'root', '', 'base')))
{
$error[] = "Невозможно подключиться к базе данных";
} elseif (mysqli_character_set_name($base) == 'cp1251')
{
mysqli_set_charset($base, "utf8");
}
if (($rlogin = ekran_var($_POST["login"], 45)) == "")
{
$error[] = 'Не заполнено поле : LOGIN !';
} elseif (strlen($rlogin) <= 3)
{
$error[] = 'В поле : LOGIN - длжно быть не меньше 4 символов!';
} elseif (!($result = mysqli_query($base,
"SELECT login FROM activation WHERE login='" . ekran_SQL($base, $rlogin) . "'")))
{
$error[] = "Сбой запроса базы данных";
} else
{
$arr = mysqli_fetch_array($result, MYSQLI_NUM);
mysqli_free_result($result);
if ($arr)
{
$error[] = "$rlogin : этот login ожидает активации";
$arr = "";
} elseif (!($result = mysqli_query($base11,
"SELECT login FROM gamer WHERE login='" . ekran_SQL($base, $rlogin) . "'")))
{
$error[] = "Сбой запроса базы данных";
} else
{
$arr = mysqli_fetch_array($result, MYSQLI_NUM);
mysqli_free_result($result);
if ($arr)
{
$error[] = "$rlogin : этот login уже используется другим пользователем";
$arr = "";
}
}
}
if (($rpass = ekran_var($_POST["pass"], 45)) == "")
{
$error[] = 'Не заполнено поле : PASSWORD !';
} elseif (strlen($rpass) < 6)
{
$error[] = 'В поле : PASSWORD - должно быть не меньше 6 символов!';
}
if (($rpassagain = ekran_var($_POST["passagain"], 45)) == "")
{
$error[] = 'Не заполнено поле повтора пароля!';
} elseif ($rpass != $rpassagain)
{
$error[] = "Пароли не равны";
}
if (($rmail = ekran_var($_POST["mail"], 45)) == "")
{
$error[] = 'Не заполнено поле : EMAIL !';
} elseif (!valid_mail($rmail))
{
$error[] = 'Некорректно заполнено поле : EMAIL ! Введите email формата RFC 2822 например: [email protected]';
} elseif (!($result = mysqli_query($base,
"SELECT mail FROM activation WHERE mail='" . ekran_SQL($base, $rmail) . "'")))
{
$error[] = "Сбой запроса базы данных";
} else
{
//------------------------------------------
$arr = mysqli_fetch_array($result, MYSQLI_NUM);
mysqli_free_result($result);
if ($arr)
{
$error[] = "$rmail : этот email ожидает активации";
$arr = "";
} elseif (!($result = mysqli_query($base, "SELECT mail FROM gamer WHERE mail='" .
ekran_SQL($base, $rmail) . "'")))
{
$error[] = "Сбой запроса базы данных";
} else
{
$arr = mysqli_fetch_array($result, MYSQLI_NUM);
mysqli_free_result($result);
if ($arr)
{
$error[] = "$rmail : на этот email уже зарегистрирован аккаунт ";
$arr = "";
}
}
//------------------------------------------
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
body{
font-family: Verdana;
font-size: 14px;
}
</style>
<script type="text/javascript">
function resetnoise(){
setTimeout(function(){document.getElementById("noise").src="noise-picture.php";},500);
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Страница регистрации</title>
</head>
<body>
<?php
if (!empty($error))
{
echo "
<form action='registration.php' method='post'>
<table>
<tr><td>Введите login :</td><td><input name='login' type='text' size='33' maxlength='45' value='$rlogin' /></td></tr>
<tr><td>Введите password :</td><td><input name='pass' type='text' size='33' maxlength='45' value='$rpass' /></td></tr>
<tr><td>Введите password еще раз :</td><td><input name='passagain' type='text' size='33' maxlength='45' value='$rpassagain' /></td></tr>
<tr><td>Введите email :</td><td><input name='mail' type='text' size='33' maxlength='45' value='$rmail' /></td></tr>
<tr><td><div>
<img id='noise' title='обновить символы' style='cursor: pointer;' onclick='resetnoise();' src='noise-picture.php'>
</div>Введите строку с картинки :</td><td><input name='str' type='text' size='6' maxlength='6' /></td></tr>
<tr><td colspan='4' align='right'><input name='sub' type='submit' value='исправить' /></td></tr>
</table>
</form>";
//print_r($error);
for ($i = 0; $i < count($error); $i++)
{
echo "<br />" . $error[$i];
}
} elseif (ekran_var($_POST["sub"], 2) === 'ok')
{
//$_SESSION = array();
session_unset();
session_destroy();
unset($_SERVER["REQUEST_METHOD"]);
$endtime = time() + 86400; //86400 - сутки ; 3600 - час
$query = "INSERT INTO activation (login,pass,mail,endtime) VALUES ('" .
ekran_SQL($base, $rlogin) . "','" . ekran_SQL($base, $rpass) . "','" .
ekran_SQL($base, $rmail) . "',$endtime)";
$result = mysqli_query($base, $query);
if ($result)
{
//mail("$rmail","To activate","http://localhost/igraland/registration.php?nss=".md5($rlogin)."&&nss2=".md5($endtime)."");
include_once ("class/libmail.class.php");
$m = new Mail('utf-8');
$m->From("[email protected]"); // от кого
$m->To("$rmail"); // кому
$m->Subject("Accaunt Verification");
$m->Body("http://example.php?nss=" . md5($rlogin) .
"&&nss2=" . md5($endtime) . "");
$m->Send(); // отправка
echo "Ссылка активации выслана на email: $rmail.( Отправка письма может занять некоторое время ) Проверьте почту! Срок действия ссылки - сутки.<br />Письмо может попасть в папку 'спам' почтового сервера ( зависит от настроек самого сервера где расположен Ваш EMAIL ).Если Вы не получили письмо активации - напишите администратору";
} else
{
echo "Ошибка записи в базу данных";
}
} else
{
echo "
<p>Если данные вас удовлетворяют нажмите : \"ok\"</p>
<p>Ваши регистрационные данные:</p>
<form action='registration.php' method='post'>
<table>
<tr><td> login :</td><td>$rlogin<input name='login' type='hidden' value='$rlogin' /></td></tr>
<tr><td> password :</td><td>$rpass<input name='pass' type='hidden' value='$rpass' /></td></tr>
<tr><td> email :</td><td>$rmail<input name='mail' type='hidden' value='$rmail' /></td></tr>
<tr><td colspan='4' align='right'>
<input name='str' type='hidden' value='$randStr' />
<input name='passagain' type='hidden' value='$rpassagain' />
<label>Зарегистрироваться :<input name='sub' type='submit' value='ok' /></label></td></tr>
</table>
</form>";
}
mysqli_close($base);
} else
{
echo "
<form action='registration.php' method='post'>
<table>
<tr><td>Введите login :</td><td><input name='login' type='text' size='33' maxlength='45' /></td></tr>
<tr><td>Введите password :</td><td><input name='pass' type='text' size='33' maxlength='45' /></td></tr>
<tr><td>Введите password еще раз :</td><td><input name='passagain' type='text' size='33' maxlength='45' /></td></tr>
<tr><td>Введите email :</td><td><input name='mail' type='text' size='33' maxlength='45' /></td></tr>
<tr><td><div>
<img id='noise' title='обновить символы' style='cursor: pointer;' onclick='resetnoise();' src='noise-picture.php'>
</div>Введите строку с картинки :</td><td><input name='str' type='text' size='6' maxlength='6' /></td></tr>
<tr><td colspan='4' align='right'><input name='sub' type='submit' value='отправить' /></td></tr>
</table>
</form>";
}
echo "<br />" . (microtime(true) - $stopwatch);
?>
</body>
</html>