Перейти к содержимому
La2Base
Главная
ЗагрузкиВикиФорумFAQ
ruen
Регистрация Войти
ГлавнаяФайлыВикиВойти
  • Главная
  • Загрузки
  • Вики
  • FAQ
  • Обратная связь
  • О проекте
  • Правила
  • Конфиденциальность
  • Условия использования

© 2026 la2base.com · Все права защищены

ruen
Форум/Web обвязка/Заполнение графы паролей в БД
Поиск

Заполнение графы паролей в БД

18 ответов191 просмотровСейчас просматривают: 1
M
mrman1ac
· 07.12.2009, 00:44

При создании игрового аккаунта в БД вбивается пароль,введенный пользователем на сайте,а не в виде шифра. Из-за этого пользователи не могут войти в игру.

сборка l2open
сайт на kasseler CMS
модуль регистрации от Radar (измененный,изменения ниже.)

Код
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', )");
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]

0
Руслан
Руслан

Модератор

Ветеран

Постов: 1201

На форуме с: 14.12.2007

Репутация: +775

Рейтинг: 0

· 07.12.2009, 00:54

mrman1ac: При создании игрового аккаунта в БД вбивается пароль,введенный пользователем на сайте,а не в виде шифра. Из-за этого пользователи не могут войти в игру.


Код
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', )");
echo ("<center>Поздравляем!<br>Ваш аккаунт <font color='green'>".$login."</font> успешно зарегистрирован!<br>
<hr>


И больше ничего не меняй))

На Форуме я тоже Radar!
Я везде Radar!

0
M
mrman1ac
· 07.12.2009, 00:58

Сорри,что-то важное поменял? :)

0
Руслан
Руслан

Модератор

Ветеран

Постов: 1201

На форуме с: 14.12.2007

Репутация: +775

Рейтинг: 0

· 07.12.2009, 01:01

mrman1ac: Сорри,что-то важное поменял? :)


Да нет, скажем так, это я забыл убрать совсем не нужное, но оно не мешало пока ты не поменял))
Надо будет изменить в моем топике.

На Форуме я тоже Radar!
Я везде Radar!

0
M
mrman1ac
· 07.12.2009, 01:23

Код
mysql_query("INSERT INTO accounts(login, password, email, lastactive, accessLevel) VALUES('$login' , '$gamepass', '$email', '$lastactive', )");


А зачем здесь присутствует "accessLevel",если в него,как я понял,ничего не вбивается? Может ли это служаить ошибкой при создании аккаунта,т.к. сейчас это опять повторяется, на сайте "все создано",а в БД - нет... Все поля проверил - соответствуют БД и скрипту.

+ А это ничего если у меня в БД пишется "Null",а по скрипту
Код
...if(!mysql_numrows($q) > "0") {...

0
Руслан
Руслан

Модератор

Ветеран

Постов: 1201

На форуме с: 14.12.2007

Репутация: +775

Рейтинг: 0

· 07.12.2009, 01:39

mrman1ac:
Код
mysql_query("INSERT INTO accounts(login, password, email, lastactive, accessLevel) VALUES('$login' , '$gamepass', '$email', '$lastactive', )");


А зачем здесь присутствует "accessLevel",если в него,как я понял,ничего не вбивается? Может ли это служаить ошибкой при создании аккаунта,т.к. сейчас это опять повторяется, на сайте "все создано",а в БД - нет... Все поля проверил - соответствуют БД и скрипту.


Мда, судя по всему ты и там успел поменять
Код
mysql_query("INSERT INTO accounts(login, password, email, lastactive) VALUES('$login' , '$gamepass', '$email', '$lastactive' )");


Или как было:

Код
mysql_query("INSERT INTO accounts(login, password, email, lastactive, access_level) VALUES('$login' , '$gamepass', '$email', '$lastactive', '0')");


Это
Код
if(!mysql_numrows($q) > "0") {

Не заносится в БД, а проверяет поле на дубликаты.

На Форуме я тоже Radar!
Я везде Radar!

0
M
mrman1ac
· 07.12.2009, 01:43

Да,теперь понял.
Вроде все поменял,и нули и поля перепроверил, и скрипт,ну все,а теперь какая-то непонятная вещь творится.
При создании аккаунта на сайте пишет,что email уже зарегистрирован,хотя в БД поля адресов - пустые. Все коннекты,все проверил.
P.S. Может мне дать какую-нибудь детальную информацию из сервера,чтобы решить проблему? А то слишком много вопросов...

0
Руслан
Руслан

Модератор

Ветеран

Постов: 1201

На форуме с: 14.12.2007

Репутация: +775

Рейтинг: 0

· 07.12.2009, 01:53

mrman1ac: Да,теперь понял.
Вроде все поменял,и нули и поля перепроверил, и скрипт,ну все,а теперь какая-то непонятная вещь творится.
При создании аккаунта на сайте пишет,что email уже зарегистрирован,хотя в БД поля адресов - пустые. Все коннекты,все проверил.
P.S. Может мне дать какую-нибудь детальную информацию из сервера,чтобы решить проблему? А то слишком много вопросов...


Короче

"index.php"
SQL
<?php
//--------------------------------------------//
// 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">&nbsp;&nbsp;&nbsp;&nbsp;Аккаунт:</td>
<td width="161"><label>
&nbsp;&nbsp;<input name="login" type="text" id="login">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

<tr>
<td align="left">&nbsp;&nbsp;&nbsp;&nbsp;Пароль:</td>
<td><label>
&nbsp;&nbsp;<input name="pass" type="password" id="pass">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

<tr>
<td align="left">&nbsp;&nbsp;&nbsp;&nbsp;Повторите пароль:</td>
<td><label>
&nbsp;&nbsp;<input name="repeat" type="password" id="repeat">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

<tr>
<td align="left">&nbsp;&nbsp;&nbsp;&nbsp;Почта:</td>
<td><label>
&nbsp;&nbsp;<input name="email" type="text" id="email">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

<tr>
<td align="left">&nbsp;&nbsp;&nbsp;&nbsp;Антибот:</td>
<td align="left">

<p>&nbsp;&nbsp;<img src="kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>">
<br>&nbsp;&nbsp;<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>
&nbsp;&nbsp;<input type="submit" name="submit" value="Регистрация">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

</table>
</div>
</form>
<p>&nbsp;</p>
');
}
?>


Вот это работает?
Если нет то что пишет?

На Форуме я тоже Radar!
Я везде Radar!

0
M
mrman1ac
· 07.12.2009, 02:11

На сайте все создает. В БД - нет.
* Изменил access_level на accessLevel,т.к. в БД так...

0
Руслан
Руслан

Модератор

Ветеран

Постов: 1201

На форуме с: 14.12.2007

Репутация: +775

Рейтинг: 0

· 07.12.2009, 02:15

А в таблицу Аккаунтс столбец email занес?

На Форуме я тоже Radar!
Я везде Radar!

0
M
mrman1ac
· 07.12.2009, 02:23

Да,конечно,как в readme написано.

0
Руслан
Руслан

Модератор

Ветеран

Постов: 1201

На форуме с: 14.12.2007

Репутация: +775

Рейтинг: 0

· 07.12.2009, 02:30

Так хорошо, а если без почты попробовать?

Раскрывающийся текст
Код
<?php
//--------------------------------------------//
// 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">&nbsp;&nbsp;&nbsp;&nbsp;Аккаунт:</td>
<td width="161"><label>
&nbsp;&nbsp;<input name="login" type="text" id="login">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

<tr>
<td align="left">&nbsp;&nbsp;&nbsp;&nbsp;Пароль:</td>
<td><label>
&nbsp;&nbsp;<input name="pass" type="password" id="pass">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

<tr>
<td align="left">&nbsp;&nbsp;&nbsp;&nbsp;Повторите пароль:</td>
<td><label>
&nbsp;&nbsp;<input name="repeat" type="password" id="repeat">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

<tr>
<td align="left">&nbsp;&nbsp;&nbsp;&nbsp;Антибот:</td>
<td align="left">

<p>&nbsp;&nbsp;<img src="kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>">
<br>&nbsp;&nbsp;<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>
&nbsp;&nbsp;<input type="submit" name="submit" value="Регистрация">
</label></td>
</tr>

<tr height="10"><td></td><td></td></tr>

</table>
</div>
</form>
<p>&nbsp;</p>
');
}
?>

На Форуме я тоже Radar!
Я везде Radar!

0
M
mrman1ac
· 07.12.2009, 02:42

Нет,все тоже самое.
Вопрос. К сожалению,я не админ сервера,я только с сайтом работаю. Когда делал статистику, не выводились русские ники (админ их в БД делал). Проблема еще существует. А вот в регистрации играет роль если в БД одна кодировка,а в скрипте другая?

Код
Collation - latin1_swedish_ci

0
Руслан
Руслан

Модератор

Ветеран

Постов: 1201

На форуме с: 14.12.2007

Репутация: +775

Рейтинг: 0

· 07.12.2009, 02:46

mrman1ac: Нет,все тоже самое.
Вопрос. К сожалению,я не админ сервера,я только с сайтом работаю. Когда делал статистику, не выводились русские ники (админ их в БД делал). Проблема еще существует. А вот в регистрации играет роль если в БД одна кодировка,а в скрипте другая?
Код
Collation - latin1_swedish_ci


Конечно играет.
В идеале utf8_general_ci

Сори могу на каждое последующее сообщение не ответить... Сплю уже.
Если не отвечу пиши завтра ближе к вечеру в Асю (в профиле есть)

На Форуме я тоже Radar!
Я везде Radar!

0
M
mhost
· 07.12.2009, 07:04

mrman1ac, Выложи сюда структуру своей таблицы accounts и не мучай нам булки.

0
M
mrman1ac
· 07.12.2009, 08:22

Раскрывающийся текст
Код
CREATE TABLE `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 ?

0
M
mrman1ac
· 07.12.2009, 22:35

Поменял кодировку,а все равно создает на сайте,но не в БД...

0
андрей
андрей

Пользователь

Бывалый

Постов: 287

На форуме с: 02.05.2008

Репутация: +348

Рейтинг: 0

· 09.12.2009, 18:25

У меня такая же проблема с l2open
Проверил 3-5 блоков не только для касселера, а вообще

0
Тема закрыта для ответов