Заполнение графы паролей в БД
При создании игрового аккаунта в БД вбивается пароль,введенный пользователем на сайте,а не в виде шифра. Из-за этого пользователи не могут войти в игру.
сборка l2open
сайт на kasseler CMS
модуль регистрации от Radar (измененный,изменения ниже.)
echo ("<center>Ваш E-Mail адрес введен некорректно!</center>");
}else{
if ($pass == $pass2){
$d = mysql_query("SELECT * FROM accounts WHERE email='{$email}'");
if(!mysql_numrows($d) > "0") {
$q = mysql_query("SELECT * FROM accounts WHERE login='{$login}'");
if(!mysql_numrows($q) > "0") {
$gamepass = base64_encode(pack("H*", sha1(utf8_encode($pass))));
mysql_query("INSERT INTO accounts(login, password, email, lastactive, access_level) VALUES('$login' , '$gamepass', '$email', '$lastactive', )");
if ($savedata == "true") {
mysql_query("INSERT INTO accounts(login, password, email) VALUES('$login' , '$pass', '$email')");
}
echo ("<center>Поздравляем!<br>Ваш аккаунт <font color='green'>".$login."</font> успешно зарегистрирован!<br>
<hr>
Где изменял - точно не могу сказать. В мускуле не особо разбираюсь. Но помню,изначально была проблема при создании аккаунтов. На сайте было написано,что создан, в БД - нет. После изменения все заработало,но появилась проблема с паролями... *читай выше*
P.S. Пользовался поиском,но,к сожалению,ничего не нашел.
P.S. Сорри,не обратил внимание на создание префикса перед названием темы. [help]
mrman1ac: При создании игрового аккаунта в БД вбивается пароль,введенный пользователем на сайте,а не в виде шифра. Из-за этого пользователи не могут войти в игру.
echo ("<center>Ваш E-Mail адрес введен некорректно!</center>");
}else{
if ($pass == $pass2){
$d = mysql_query("SELECT * FROM accounts WHERE email='{$email}'");
if(!mysql_numrows($d) > "0") {
$q = mysql_query("SELECT * FROM accounts WHERE login='{$login}'");
if(!mysql_numrows($q) > "0") {
$gamepass = base64_encode(pack("H*", sha1(utf8_encode($pass))));
mysql_query("INSERT INTO accounts(login, password, email, lastactive, access_level) VALUES('$login' , '$gamepass', '$email', '$lastactive', )");
echo ("<center>Поздравляем!<br>Ваш аккаунт <font color='green'>".$login."</font> успешно зарегистрирован!<br>
<hr>
И больше ничего не меняй))
На Форуме я тоже Radar!
Я везде Radar!
Сорри,что-то важное поменял? :)
mrman1ac: Сорри,что-то важное поменял? :)
Да нет, скажем так, это я забыл убрать совсем не нужное, но оно не мешало пока ты не поменял))
Надо будет изменить в моем топике.
На Форуме я тоже Radar!
Я везде Radar!
А зачем здесь присутствует "accessLevel",если в него,как я понял,ничего не вбивается? Может ли это служаить ошибкой при создании аккаунта,т.к. сейчас это опять повторяется, на сайте "все создано",а в БД - нет... Все поля проверил - соответствуют БД и скрипту.
+ А это ничего если у меня в БД пишется "Null",а по скрипту
mrman1ac:Кодmysql_query("INSERT INTO accounts(login, password, email, lastactive, accessLevel) VALUES('$login' , '$gamepass', '$email', '$lastactive', )");
А зачем здесь присутствует "accessLevel",если в него,как я понял,ничего не вбивается? Может ли это служаить ошибкой при создании аккаунта,т.к. сейчас это опять повторяется, на сайте "все создано",а в БД - нет... Все поля проверил - соответствуют БД и скрипту.
Мда, судя по всему ты и там успел поменять
Или как было:
Это
Не заносится в БД, а проверяет поле на дубликаты.
На Форуме я тоже Radar!
Я везде Radar!
Да,теперь понял.
Вроде все поменял,и нули и поля перепроверил, и скрипт,ну все,а теперь какая-то непонятная вещь творится.
При создании аккаунта на сайте пишет,что email уже зарегистрирован,хотя в БД поля адресов - пустые. Все коннекты,все проверил.
P.S. Может мне дать какую-нибудь детальную информацию из сервера,чтобы решить проблему? А то слишком много вопросов...
mrman1ac: Да,теперь понял.
Вроде все поменял,и нули и поля перепроверил, и скрипт,ну все,а теперь какая-то непонятная вещь творится.
При создании аккаунта на сайте пишет,что email уже зарегистрирован,хотя в БД поля адресов - пустые. Все коннекты,все проверил.
P.S. Может мне дать какую-нибудь детальную информацию из сервера,чтобы решить проблему? А то слишком много вопросов...
Короче
//--------------------------------------------//
// Kasseler CMS: Content Management System //
// Copyright ©2007-2008 by Igor Ognichenko //
// [url="http://www.kasseler-cms.net/"]http://www.kasseler-cms.net/[/url] //
// ========================================== //
// module for lineage-II //
// Copyright ©2008-2009 by Radar //
// E-mail: [email protected] //
// ICQ: 494623934 //
//--------------------------------------------//
if (!defined('KASSELERCMS')) die("Hacking attempt!");
?>
<hr>
<script type="text/javascript">//<![CDATA[
function isAlphaNumeric(value)
{
if (value.match(/^[a-zA-Z0-9]+$/))
return true;
else
return false;
}
function checkform(f)
{
if (f.login.value=="")
{
alert("Введите Логин!");
return false;
}
if (!isAlphaNumeric(f.login.value))
{
alert("Неверные символы в поле Аккаунт!");
return false;
}
if (f.pass.value=="")
{
alert("Не введен пароль!");
return false;
}
if (f.repeat.value=="")
{
alert("Не введен повторно пароль!");
return false;
}
if (f.pass.value!=f.repeat.value)
{
alert("Введенные Вами пароли не совпадают!");
return false;
}
if (f.email.value=="")
{
alert("Не введен E-mail");
return false;
}
return true;
}
//]]></script>
<?php
// Настройка базы данных.
$dbuser = "DB_USER"; // Пользователь
$dbpass = "DB_PASSWORD"; // Пароль
$dbhost = "DB_ADRESS"; // Адресс БД
$dbname = "DB_NAME"; // Имя базы данных
// Настройка скрипта
$savedata = "true"; //Сохранять или нет пользовательские данные, пароль логин, icq , email. По умолчанию включено.
// Начало скрипта
$fsname = $_SERVER['SCRIPT_NAME'];
$msconn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Ошибка соединения");
MYSQL_SELECT_DB($dbname) or die ("БД не найдена");
if ($_GET[step]=="2"){
$login = $_POST[login];
$pass = $_POST[pass];
$pass2 = $_POST[repeat];
$email = $_POST[email];
//1 часть Капчи
if(isset($_SESSION['captcha_keystring'])&&
$_SESSION['captcha_keystring']==$_POST['keystring'])
{
if (!ereg("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$",$email)){
echo ("<center>Ваш E-Mail адрес введен некорректно!</center>");
}else{
if ($pass == $pass2){
$d = mysql_query("SELECT * FROM accounts WHERE email='{$email}'");
if(!mysql_numrows($d) > "0") {
$q = mysql_query("SELECT * FROM accounts WHERE login='{$login}'");
if(!mysql_numrows($q) > "0") {
$gamepass = base64_encode(pack("H*", sha1(utf8_encode($pass))));
mysql_query("INSERT INTO accounts(login, password, email, lastactive, access_level) VALUES('$login' , '$gamepass', '$email', '$lastactive', '0')");
echo ("<center>Поздравляем!<br>Ваш аккаунт <font color='green'>".$login."</font> успешно зарегистрирован!<br>
<hr>
<div>
<p>Запомните или запишите Ваши данные:</p>
<table width='266'>
<tr>
<td>Ваш логин:</td>
<td><b>".$login."</b></td>
</tr>
<tr>
<td>Ваш пароль:</td>
<td>".$pass."</td>
</tr>
<tr>
<td>Ваш e-mail:</td>
<td>".$email."</td>
</tr>
</table>
</div>
<hr>
<br>
<b>Никому и никогда не говорите свой пароль, даже если человек, спрашивающий пароль, представляется администратором или Gamemaster'ом сервера.
<br><font color='red'>Помните, администрации сервера никогда не требуются ваши пароли.</font></b>
</center>");
} else {
echo ("<center>Аккаунт <font color='red'>".$login."</font> уже зарегистрирован, придумайте другой.</center>");
}
} else {
echo ("<center>Почтовый ящик <font color='red'>".$email."</font> уже используется, попробуйте другой.</center>");
}
}else {
echo ("<center>Пароли не совпадают</center>");
}
}
//2 часть Капчи
}else{
echo ("<font color='red'>Вы ввели не верный код с картинки</font><br>");
}
unset($_SESSION['captcha_keystring']);
} elseif ($_GET[act]==""){
echo ('<form name="form1" method="post" onsubmit="return checkform(this)" action="'.$fsname.'?module=reg&step=2">
<div align="left">
Для создания нового Пользователя на сайте, и Аккаунта для игры на нашем сервере, Вам следует заполнить форму предложенную ниже!
<br><br>
<b><u>Примечание:</u></b>
<ul>
<li>В полях <b>"<u>Аккаунт</u>"</b>, <b>"<u>Пароль</u>"</b> и <b>"<u>Повторите пароль</u>"</b> можно использовать только символы <b>Латинского алфавита и цифры</b>, от 4 до 15 символов.
<li>В поле <b>"<u>Почта</u>"</b> укажите реальный почтовый ящик! Он может пригодится как для смены и восстановления регистрационных данных, так и для связи с Вами! Защита от Спама гарантирована!
<li>Поля <b>"<u>Аккаунт</u>"</b> и <b>"<u>Пароль</u>"</b> - это Ваши Логин и Пароль для входа в игру!
<li><b>Все поля формы обязательны к заполнению (регистр букв имеет значение):</b>
</div>
<br><br>
<div align="center">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr height="10"><td></td><td></td></tr>
<tr>
<td width="121" align="left"> Аккаунт:</td>
<td width="161"><label>
<input name="login" type="text" id="login">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
<tr>
<td align="left"> Пароль:</td>
<td><label>
<input name="pass" type="password" id="pass">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
<tr>
<td align="left"> Повторите пароль:</td>
<td><label>
<input name="repeat" type="password" id="repeat">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
<tr>
<td align="left"> Почта:</td>
<td><label>
<input name="email" type="text" id="email">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
<tr>
<td align="left"> Антибот:</td>
<td align="left">
<p> <img src="kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>">
<br> <input type="text" name="keystring"></p>
</td>
</tr>
<tr height="30"><td></td><td></td></tr>
<tr>
<td align="center"><label>
<input type="reset" name="Submit2" value="Сброс">
</label></td>
<td align="center"><label>
<input type="submit" name="submit" value="Регистрация">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
</table>
</div>
</form>
<p> </p>
');
}
?>
Вот это работает?
Если нет то что пишет?
На Форуме я тоже Radar!
Я везде Radar!
На сайте все создает. В БД - нет.
* Изменил access_level на accessLevel,т.к. в БД так...
А в таблицу Аккаунтс столбец email занес?
На Форуме я тоже Radar!
Я везде Radar!
Да,конечно,как в readme написано.
Так хорошо, а если без почты попробовать?
//--------------------------------------------//
// Kasseler CMS: Content Management System //
// Copyright ©2007-2008 by Igor Ognichenko //
// [url="http://www.kasseler-cms.net/"]http://www.kasseler-cms.net/[/url] //
// ========================================== //
// module for lineage-II //
// Copyright ©2008-2009 by Radar //
// E-mail: [email protected] //
// ICQ: 494623934 //
//--------------------------------------------//
if (!defined('KASSELERCMS')) die("Hacking attempt!");
?>
<hr>
<script type="text/javascript">//<![CDATA[
function isAlphaNumeric(value)
{
if (value.match(/^[a-zA-Z0-9]+$/))
return true;
else
return false;
}
function checkform(f)
{
if (f.login.value=="")
{
alert("Введите Логин!");
return false;
}
if (!isAlphaNumeric(f.login.value))
{
alert("Неверные символы в поле Аккаунт!");
return false;
}
if (f.pass.value=="")
{
alert("Не введен пароль!");
return false;
}
if (f.repeat.value=="")
{
alert("Не введен повторно пароль!");
return false;
}
if (f.pass.value!=f.repeat.value)
{
alert("Введенные Вами пароли не совпадают!");
return false;
}
if (f.email.value=="")
{
alert("Не введен E-mail");
return false;
}
return true;
}
//]]></script>
<?php
// Настройка базы данных.
$dbuser = "DB_USER"; // Пользователь
$dbpass = "DB_PASSWORD"; // Пароль
$dbhost = "DB_ADRESS"; // Адресс БД
$dbname = "DB_NAME"; // Имя базы данных
// Настройка скрипта
$savedata = "true"; //Сохранять или нет пользовательские данные, пароль логин, icq , email. По умолчанию включено.
// Начало скрипта
$fsname = $_SERVER['SCRIPT_NAME'];
$msconn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Ошибка соединения");
MYSQL_SELECT_DB($dbname) or die ("БД не найдена");
if ($_GET[step]=="2"){
$login = $_POST[login];
$pass = $_POST[pass];
$pass2 = $_POST[repeat];
//1 часть Капчи
if(isset($_SESSION['captcha_keystring'])&&
$_SESSION['captcha_keystring']==$_POST['keystring'])
{
if ($pass == $pass2){
$q = mysql_query("SELECT * FROM accounts WHERE login='{$login}'");
if(!mysql_numrows($q) > "0") {
$gamepass = base64_encode(pack("H*", sha1(utf8_encode($pass))));
mysql_query("INSERT INTO accounts(login, password, email, lastactive, access_level) VALUES('$login' , '$gamepass', '$email', '$lastactive', '0')");
echo ("<center>Поздравляем!<br>Ваш аккаунт <font color='green'>".$login."</font> успешно зарегистрирован!<br>
<hr>
<div>
<p>Запомните или запишите Ваши данные:</p>
<table width='266'>
<tr>
<td>Ваш логин:</td>
<td><b>".$login."</b></td>
</tr>
<tr>
<td>Ваш пароль:</td>
<td>".$pass."</td>
</tr>
<tr>
<td>Ваш e-mail:</td>
<td>".$email."</td>
</tr>
</table>
</div>
<hr>
<br>
<b>Никому и никогда не говорите свой пароль, даже если человек, спрашивающий пароль, представляется администратором или Gamemaster'ом сервера.
<br><font color='red'>Помните, администрации сервера никогда не требуются ваши пароли.</font></b>
</center>");
} else {
echo ("<center>Аккаунт <font color='red'>".$login."</font> уже зарегистрирован, придумайте другой.</center>");
}
}else {
echo ("<center>Пароли не совпадают</center>");
}
//2 часть Капчи
}else{
echo ("<font color='red'>Вы ввели не верный код с картинки</font><br>");
}
unset($_SESSION['captcha_keystring']);
} elseif ($_GET[act]==""){
echo ('<form name="form1" method="post" onsubmit="return checkform(this)" action="'.$fsname.'?module=reg&step=2">
<div align="left">
Для создания нового Пользователя на сайте, и Аккаунта для игры на нашем сервере, Вам следует заполнить форму предложенную ниже!
<br><br>
<b><u>Примечание:</u></b>
<ul>
<li>В полях <b>"<u>Аккаунт</u>"</b>, <b>"<u>Пароль</u>"</b> и <b>"<u>Повторите пароль</u>"</b> можно использовать только символы <b>Латинского алфавита и цифры</b>, от 4 до 15 символов.
<li>В поле <b>"<u>Почта</u>"</b> укажите реальный почтовый ящик! Он может пригодится как для смены и восстановления регистрационных данных, так и для связи с Вами! Защита от Спама гарантирована!
<li>Поля <b>"<u>Аккаунт</u>"</b> и <b>"<u>Пароль</u>"</b> - это Ваши Логин и Пароль для входа в игру!
<li><b>Все поля формы обязательны к заполнению (регистр букв имеет значение):</b>
</div>
<br><br>
<div align="center">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr height="10"><td></td><td></td></tr>
<tr>
<td width="121" align="left"> Аккаунт:</td>
<td width="161"><label>
<input name="login" type="text" id="login">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
<tr>
<td align="left"> Пароль:</td>
<td><label>
<input name="pass" type="password" id="pass">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
<tr>
<td align="left"> Повторите пароль:</td>
<td><label>
<input name="repeat" type="password" id="repeat">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
<tr>
<td align="left"> Антибот:</td>
<td align="left">
<p> <img src="kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>">
<br> <input type="text" name="keystring"></p>
</td>
</tr>
<tr height="30"><td></td><td></td></tr>
<tr>
<td align="center"><label>
<input type="reset" name="Submit2" value="Сброс">
</label></td>
<td align="center"><label>
<input type="submit" name="submit" value="Регистрация">
</label></td>
</tr>
<tr height="10"><td></td><td></td></tr>
</table>
</div>
</form>
<p> </p>
');
}
?>
На Форуме я тоже Radar!
Я везде Radar!
Нет,все тоже самое.
Вопрос. К сожалению,я не админ сервера,я только с сайтом работаю. Когда делал статистику, не выводились русские ники (админ их в БД делал). Проблема еще существует. А вот в регистрации играет роль если в БД одна кодировка,а в скрипте другая?
mrman1ac: Нет,все тоже самое.
Вопрос. К сожалению,я не админ сервера,я только с сайтом работаю. Когда делал статистику, не выводились русские ники (админ их в БД делал). Проблема еще существует. А вот в регистрации играет роль если в БД одна кодировка,а в скрипте другая?КодCollation - latin1_swedish_ci
Конечно играет.
В идеале utf8_general_ci
Сори могу на каждое последующее сообщение не ответить... Сплю уже.
Если не отвечу пиши завтра ближе к вечеру в Асю (в профиле есть)
На Форуме я тоже Radar!
Я везде Radar!
mrman1ac, Выложи сюда структуру своей таблицы accounts и не мучай нам булки.
`login` varchar(45) NOT NULL DEFAULT '',
`password` varchar(45) DEFAULT NULL,
`email` varchar(100) NOT NULL,
`lastactive` decimal(20,0) DEFAULT NULL,
`accessLevel` tinyint(4) NOT NULL DEFAULT '0',
`lastIP` char(15) DEFAULT NULL,
`lastServer` tinyint(4) DEFAULT '1',
PRIMARY KEY (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Не очень разбираюсь в мускуле, я правильно понял, mhost ?
Поменял кодировку,а все равно создает на сайте,но не в БД...


