Milky Way
-
Постов
70 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Сообщения, опубликованные Milky Way
-
-
@refresh говорят помогает
-
-
up
- 1
-
-
не за что :-)
- 1
-
-
Так как 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
-
не-а
все дело в clientinfo.xml , уже решил.
-
BOTAN MOD ON
со знанием русского языка
орли?
good joke, тем кому нужно, давно отписались.
ты хотел сказать "те, кому нужно?"
тебе больше нечем заняться?
-
опять актуально, немного поменяли направление, машина есть все ок, жду энтузиастов.
*спустя день*
"Не актуально. Пришлось заплатить за инет, денег на машину нет, все плохо. Нужен спонсор
good joke, тем кому нужно, давно отписались.
-
мое предложение в силе, работаю на результат
- 1
-
мало оперативной памяти, за несколько рублей могу откатить данную проблему еще на 40-80 онлайна
-
опять актуально, немного поменяли направление, машина есть все ок, жду энтузиастов.
-
delete this thread
-
удалите, все спонсоры "забили"
-
-
Переменная для проверки на уже получения предмета.
P.S. метки - быдлокод.
Ктобы говорил, без обид но я помню с чего ты начинал
Хорошо что я перестал, в отличии от некоторых. И хватит быть в каждой бочке затычкой.
-
Отморозил, нужен человек который умеет работать с клиентом, еще со скриптами, и модератор.
Сайт проекта: play-ragnarok.ru
-
Юзайте screen омг.
-
Кто-то ей не пренебрегает.
-
Ради научного интереса начал писать свой эмулятор, серьезного развития не ждите, просто практика.
Некоторые вещи перенес в свою афину
SMS - Spark Map Server
settings.conf - главный .conf файл
// Включить ли откладку в консоли?
Debug: yes
// Загрузим еще один конфиг .
ImportFile: conf/databases.confdatabases.conf - доп. .conf файл
// Загружать предметы?
LoadItemDb: yes
// Загружать монстрев?
LoadMobDb: yes
// Оповестим что мы загружены .
Message: conf/databases.conf загружен!
// И специально тот файл, которого не сущесвует.
ImportFile: conf/void.confКак видно из скриншота, научил работать с item_db и mob_db полностью, а также прикрутил MySQL-коннект.
Кто-нибудь страдал подобным делом?)
- 1
-
Умею всё
зачем вообще что-то спрашивать?
Это вопрос для статистики, я думал ты умеешь пользоваться качаном .
"Умею всё" != "Знаю сколько жрет памяти map-server_sql у других людей"
ШУТКА ЗАСЧИТАНА !
- 1
-
Да сервер к железу малотребователен. Требование к интернет соединению высокие.
Причем важнее не скорость, а пинг. Хотя и скорость тоже важна.
Тут не стояло такого вопроса.
-
не, х**ня
Команды
в Модификации
Опубликовано
если rAthena форк eAthena то нет