создания аккаунта на сайте

Aslan

Знаменитый
Пользователь
Сообщения
70
Розыгрыши
0
Репутация
32
Реакции
4
Баллы
1 260
Вообщем пишу свой небольшой веб интерфейс где можно создать аккаунт.
Что надо дернуть что бы в базу ложился хэшированый пароль? отправлять какие то пакетикт на логин сервер или надо прями писать в базу?
 

Вообщем пишу свой небольшой веб интерфейс где можно создать аккаунт.
Что надо дернуть что бы в базу ложился хэшированый пароль? отправлять какие то пакетикт на логин сервер или надо прями писать в базу?
Код:
<?php 
include("credentials.php"); 
$fsname = $_SERVER['SCRIPT_NAME']; 
$msconn = mysql_connect($dbhost.":".$dbport, $dbuser, $dbpass) or die ("Не удалось установить соединение с БД"); 
MYSQL_SELECT_DB($dbname) or die ("Не удалось установить соединение с БД"); 
$way = (int)$_GET[step];
if ($way == 0){ 
echo ('<form name="form1" method="post" action="'.$fsname.'?step=2"> 
<div align="center"> 
<table width="266" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td width="105" align="right">Логин</td> 
<td width="161"><label> 
<input name="login" type="text" id="login1"> 
</label></td> 
</tr> 
<tr> 
<td align="right">Пароль</td> 
<td><label> 
<input name="pass" type="password" id="pass"> 
</label></td> 
</tr> 
<tr> 
<td align="right">Повтор</td> 
<td><label> 
<input name="repeat" type="password" id="repeat"> 
</label></td> 
</tr> 
<tr> 
<td align="right">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
<td align="center"><label> 
<input type="submit" name="Submit" value="Регистрация"> 
</label></td> 
</tr> 
</table> 
</div> 
</form> 
<p>&nbsp;</p> 
'); 
} 
$way = (int)$_GET[step];
if ($way == 2){ 
$login = strtolower(addslashes($_POST[login])); 
$pass = addslashes($_POST[pass]); 
$pass2 = addslashes($_POST[repeat]);
if ($login == "" or ctype_alnum($login) == false) { 
echo ("<center>Введенное значение <font color=red>не</font> может быть логином.</center>"); 
}else{ 
if ($pass == "" or ctype_alnum($pass) == false) { 
echo ("<center>Введенное значение <font color=red>не</font> может быть паролем.</center>"); 
}else{ 
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, lastactive, access_level) VALUES('$login' , '$gamepass', '$lastactive', '0')"); 
echo ("<center>Аккаунт <font color='red'>".$login."</font> успешно зарегистрирован</center>"); 
} else { 
echo ("<center>Имя <font color='red'>".$login."</font> уже зарегистрировано, попробуйте другое.</center>"); 
} 
}else { 
echo ("<center>Пароли не совпадают</center>"); 
} 
} 
} 
}
?>
Вот из этого дерни что надо
 
какой алгоритм
 
Я пишу на ASP.NET Core (C#)
 
Код:
<?php
include("credentials.php");
$fsname = $_SERVER['SCRIPT_NAME'];
$msconn = mysql_connect($dbhost.":".$dbport, $dbuser, $dbpass) or die ("Не удалось установить соединение с БД");
MYSQL_SELECT_DB($dbname) or die ("Не удалось установить соединение с БД");
$way = (int)$_GET[step];
if ($way == 0){
echo ('<form name="form1" method="post" action="'.$fsname.'?step=2">
<div align="center">
<table width="266" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="105" align="right">Логин</td>
<td width="161"><label>
<input name="login" type="text" id="login1">
</label></td>
</tr>
<tr>
<td align="right">Пароль</td>
<td><label>
<input name="pass" type="password" id="pass">
</label></td>
</tr>
<tr>
<td align="right">Повтор</td>
<td><label>
<input name="repeat" type="password" id="repeat">
</label></td>
</tr>
<tr>
<td align="right">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td align="center"><label>
<input type="submit" name="Submit" value="Регистрация">
</label></td>
</tr>
</table>
</div>
</form>
<p>&nbsp;</p>
');
}
$way = (int)$_GET[step];
if ($way == 2){
$login = strtolower(addslashes($_POST[login]));
$pass = addslashes($_POST[pass]);
$pass2 = addslashes($_POST[repeat]);
if ($login == "" or ctype_alnum($login) == false) {
echo ("<center>Введенное значение <font color=red>не</font> может быть логином.</center>");
}else{
if ($pass == "" or ctype_alnum($pass) == false) {
echo ("<center>Введенное значение <font color=red>не</font> может быть паролем.</center>");
}else{
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, lastactive, access_level) VALUES('$login' , '$gamepass', '$lastactive', '0')");
echo ("<center>Аккаунт <font color='red'>".$login."</font> успешно зарегистрирован</center>");
} else {
echo ("<center>Имя <font color='red'>".$login."</font> уже зарегистрировано, попробуйте другое.</center>");
}
}else {
echo ("<center>Пароли не совпадают</center>");
}
}
}
}
?>
Вот из этого дерни что надо
Какой ужас. Хоть бы форматирование было а не вырви глаз

И да mysql чистый же старо. В 7ой версии это вырезали
 
Какой ужас. Хоть бы форматирование было а не вырви глаз

И да mysql чистый же старо. В 7ой версии это вырезали
Да я ж не сам писал, загуглил человеку и скинул)
 
На всех сборках одинаковый алгоритм хэша,
 
я сделал так.
PHP:
/**
     * @param $user
     * @param $password
     * @return bool
     */
    public function Login($user, $password)
    {
        $hash_pass = $this->HashPassword($password);

        $row = DB::run('SELECT * FROM accounts WHERE login=? AND password=?', [$user, $hash_pass]);
        if ($row->rowCount() > 0) {
            $bank = DB::run('SELECT id FROM casino_bank WHERE account=?',[$user]);
            if($bank->rowCount() == 0)
            {
                DB::run('INSERT INTO casino_bank VALUES (null,?,0,0)',[$user]);
            }
            return true;
        }
        return false;
    }
 
я сделал так.
PHP:
/**
     * @param $user
     * @param $password
     * @return bool
     */
    public function Login($user, $password)
[PHP]    /**
     * @param $pass
     * @param string $type
     * @return string
     */
    private function HashPassword($pass, $type = 'sha1')
    {
        if ($type == 'whirlpool') {
            return base64_encode(hash('whirlpool', $pass, true));
        }

        return base64_encode(pack('H*', sha1(utf8_encode($pass))));
    }
{
$hash_pass = $this->HashPassword($password);

$row = DB::run('SELECT * FROM accounts WHERE login=? AND password=?', [$user, $hash_pass]);
if ($row->rowCount() > 0) {
$bank = DB::run('SELECT id FROM casino_bank WHERE account=?',[$user]);
if($bank->rowCount() == 0)
{
DB::run('INSERT INTO casino_bank VALUES (null,?,0,0)',[$user]);
}
return true;
}
return false;
}[/PHP]
упс нето скопировал. Но тоже пригодится)
 
Назад
Сверху Снизу