Так как RoRegister был потерян, а он был документирован для новичков в PHP, я написал примитивную регистрацию с небольшим функционалом <?php /** * Стартовое время */ define("startTime", microtime(true)); /** * Кодировка файла+соединения */ define("charset", "UTF8"); /** * Настройки */ $config = array( // Шифровать пароли в MD5? true/false "md5" => false, // Откладка(показ ошибок MySQL), true/false "debug" => false, // Один аккаунт на сессию? true/false "singleBySession" => false, // Один аккаунт на почту? true/false "singleByEmail" => false, // Настройки базы данных "mysql" => array( // Сервер MySQL "hostname" => "127.0.0.1", // Порт сервера MySQL "port" => 3306, // Пользователь MySQL "username" => "ragnarok", // Пароль пользователя MySQL "password" => "ragnarok", // База данных MySQL "database" => "ragnarok" ) ); /** * Отключим показ ошибок */ switch ( $config["debug"] ) { case true: error_reporting(E_ALL); ini_set("display_errors", 1); break; default: error_reporting(0); ini_set("display_errors", 0); break; } /** * Запустим сессию если один на сессию */ if ( $config["singleBySession"] && !session_id() ) session_start(); /** * Установим кодировку страницы. */ header("Content-type:text/html;charset=" . charset); /** * Опишем функцию для работы с $_POST */ function post($key, $default = "", $xss = true) { // Вернем пустую строку если ввода не было if ( !isset($_POST[$key]) ) return $default; // Экранируем от XSS return ( $xss ) ? htmlspecialchars($_POST[$key]) : $_POST[$key]; } /** * Ошибки */ $errors = array( "login" => false, // Неправильный логин "password" => false, // Неправильный пароль "rePassword" => false, // Неправильный повтор пароля "email" => false, // Неправильная почта "reEmail" => false, // Неправильный повтор почты "sex" => false, // Неправильный пол "exists" => false, // Один аккаунт ); /** * Функция регистрации */ function registerAccount() { // Глоб. переменные global $config, $errors, $registered; // Проверим логин if ( !preg_match("/^[a-z0-9]{4,23}$/iu", post("login", "", false)) ) $errors["login"] = true; // Проверим пароль if ( mb_strlen(post("password", "", false)) > 32 || mb_strlen(post("password", "", false)) < 4 ) $errors["password"] = true; // Проверим сходство паролей if ( post("password", "", false) != post("rePassword", "", false) ) $errors["rePassword"] = true; // Проверим почту if ( filter_var(post("email", "", false), FILTER_VALIDATE_EMAIL) === false ) $errors["email"] = true; // Проверим сходство почт if ( post("email", "", false) != post("reEmail", "", false) ) $errors["reEmail"] = true; // Проверим пол if ( post("sex", "", false) != "M" && post("sex", "", false) != "F" ) $errors["sex"] = true; // Проверим, есть ли ошибки if ( !in_array(true, $errors) ) { // Подключаемся к базе данных $mysqlHandle = mysql_connect($config["mysql"]["hostname"] . ":" . $config["mysql"]["port"], $config["mysql"]["username"], $config["mysql"]["password"]); // Получим последнию ошибку $lastError = mysql_error(); // Проверим подключение if ( !empty($lastError) ) { // Выводим ошибку если откладка if ( $config["debug"] ) echo mysql_error(); // Выходим exit; } // Пробуем выбрать базу данных if ( !mysql_select_db($config["mysql"]["database"], $mysqlHandle) ) { // Выводим ошибку если откладка if ( $config["debug"] ) echo "Не могу выбрать базу данных"; // Выходим exit; } // Установим кодировку if ( !mysql_query("SET NAMES " . charset, $mysqlHandle) ) { // Выводим ошибку если откладка if ( $config["debug"] ) echo "Не могу установить кодировку"; // Выходим exit; } // Проверим, есть ли такой аккаунт $mysqlQuery = "SELECT `account_id` FROM `login` WHERE `userid`=\"" . mysql_real_escape_string(post("login", "", false)) . "\""; // Добавим запрос если еще проверка по почте if ( $config["singleByEmail"] ) $mysqlQuery .= " OR `email`=\"" . mysql_real_escape_string(post("email", "", false)) . "\""; // Выполняем $mysqlResult = mysql_query($mysqlQuery, $mysqlHandle); // Проверяем if ( mysql_num_rows($mysqlResult) > 0 ) // Есть такой, ошибка $errors["exists"] = true; else { // Подготовим запрос $mysqlQuery = sprintf("INSERT INTO `login` (`userid`, `user_pass`, `sex`, `email`, `level`) VALUES (\"%s\", \"%s\", \"%s\", \"%s\", %d)", mysql_real_escape_string(post("login", "", false)), mysql_real_escape_string(( $config["md5"] ) ? md5(post("password", "", false)) : post("password", "", false)), mysql_real_escape_string(post("sex", "", false)), mysql_real_escape_string(post("email", "", false)), 0 ); // Делаем запрос $mysqlResult = mysql_query($mysqlQuery, $mysqlHandle); // Если один на сессию if ( $config["singleBySession"] ) $_SESSION["registered"] = true; // Зарегистрировались $registered = true; // Разорвем соединение с базой mysql_close($mysqlHandle); } } } /** * Проверим, был ли запрос */ if ( post("register", false) ) { // Проверим, если один на сессию if ( $config["singleBySession"] && !isset($_SESSION["registered"]) ) registerAccount(); elseif ( !$config["singleBySession"] ) registerAccount(); } ?> <html> <head> <title>Регистрация игрового аккаунта</title> </head> <body> <div style="width:960px;margin:0px auto;"> <?php if ( ( isset($registered) && $registered === true ) || ( $config["singleBySession"] && isset($_SESSION["registered"]) ) ): ?> <h3>Аккаунт зарегистрирован!</h3> <p>Теперь Вы можете войти в наш игровой мир, приятной игры!</p> <?php else: ?> <h3>Форма регистрации</h3> <p>Все поля обязательны для заполнения, если ввод поля будет неправильным - он будет обведен в красную рамку</p> <?php if ( $errors["exists"] && !$config["singleByEmail"] ): ?> <p style="color:#ff0000;">Такой аккаунт уже существует</p> <?php endif; ?> <?php if ( $errors["exists"] && $config["singleByEmail"] ): ?> <p style="color:#ff0000;">Такой аккаунт или почта уже существует</p> <?php endif; ?> <form action="" method="post"> <p<?php if ( $errors["login"] ): ?> style="border:1px solid #ff0000;"<?php endif; ?>>Логин:<br /><input type="text" name="login" value="<?php echo post("login"); ?>" /></p> <p<?php if ( $errors["password"] || $errors["rePassword"] ): ?> style="border:1px solid #ff0000;"<?php endif; ?>>Пароль:<br /><input type="password" name="password" value="" /><br /><input type="password" name="rePassword" /></p> <p<?php if ( $errors["email"] || $errors["reEmail"] ): ?> style="border:1px solid #ff0000;"<?php endif; ?>>Почта:<br /><input type="text" name="email" value="<?php echo post("email"); ?>" /><br /><input type="text" name="reEmail" /></p> <p<?php if ( $errors["sex"] ): ?> style="border:1px solid #ff0000;"<?php endif; ?>>Пол:<br /><select name="sex"><option value="M" <?php if ( post("sex") == "M" ): ?>selected<?php endif; ?>>Мужской</option><option value="F" <?php if ( post("sex") == "F" ): ?>selected<?php endif; ?>>Женский</option></select></p> <p><input type="submit" name="register" value="Зарегистрироваться" /></p> </form> <?php endif; ?> <p style="margin:64px 0px 0px 0px;font-size:12pt;">Загрузка страницы: <?php echo round(microtime(true) - startTime, 3); ?> секунд</p> </div> </body> </html> <?php /** * Копирайт */ if ( isset($_GET["copyright"]) ) echo "Milky Way -> 631977082"; С наступающим!