Milky Way Опубликовано 30 декабря, 2011 Жалоба Поделиться Опубликовано 30 декабря, 2011 Так как 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";С наступающим! 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Milky Way Опубликовано 30 декабря, 2011 Автор Жалоба Поделиться Опубликовано 30 декабря, 2011 http://gyazo.com/86585eb601aa15a78aa753cd3381e77c 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
МастерОк Опубликовано 31 декабря, 2011 Жалоба Поделиться Опубликовано 31 декабря, 2011 + на обоих сообщений,очень помогло спс. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Milky Way Опубликовано 31 декабря, 2011 Автор Жалоба Поделиться Опубликовано 31 декабря, 2011 не за что :-) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
maxmum Опубликовано 26 августа, 2014 Жалоба Поделиться Опубликовано 26 августа, 2014 (изменено) Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\reg.php:1) in Z:\home\localhost\www\reg.php on line 72заголовки...и в базе пусто, хоть и написано что регистрация успешно завершена... Изменено 26 августа, 2014 пользователем maxmum Ссылка на комментарий Поделиться на другие сайты Поделиться
qabakrall Опубликовано 14 октября, 2014 Жалоба Поделиться Опубликовано 14 октября, 2014 Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\reg.php:1) in Z:\home\localhost\www\reg.php on line 72заголовки...и в базе пусто, хоть и написано что регистрация успешно завершена... у меня тоже в базе пусто не смотря на то что говорит регистрация завершена успешно правда без верхней ошибки Оо Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения