За последние 24 часа нас посетили 22873 программиста и 1250 роботов. Сейчас ищут 775 программистов ...

Не работает регистрация на русском языке

Тема в разделе "PHP для новичков", создана пользователем Sasha55555, 11 июл 2018.

  1. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Здравствуйте, зарегистрировался на английском языке, все работает и входит. Потом сменил в базе кодировку latin1_swedish_ci на utf8_general_ci, и изменил имя пользователя на русское, теперь пишет, что Неверное имя или пароль. Где может быть проверка на кодировку, может в запросе к бд? Типо понимает только англ. ники.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    несовпадение кодировок передаваемой строки,
     
    Sasha55555 нравится это.
  3. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    А как исправить?
    Наверное этот файл отвечает за вход?
    Код (Text):
    1. <?php
    2.  
    3. namespace Kitsune\ClubPenguin;
    4.  
    5. use Kitsune\Logging\Logger;
    6. use Kitsune\DatabaseManager;
    7. use Kitsune\ClubPenguin\Packets\Packet;
    8.  
    9. final class Login extends ClubPenguin {
    10.  
    11.     public function __construct() {  
    12.         parent::__construct();
    13.        
    14.         Logger::Fine("Login server is online");
    15.     }
    16.  
    17.     protected function handleLogin($socket) {
    18.         $penguin = $this->penguins[$socket];
    19.  
    20.         if($penguin->handshakeStep !== "randomKey") {
    21.             return $this->removePenguin($penguin);
    22.         }
    23.  
    24.         $this->databaseManager->add($penguin);
    25.  
    26.         $username = Packet::$Data['body']['login']['nick'];
    27.         $password = Packet::$Data['body']['login']['pword'];
    28.        
    29.         if($penguin->database->usernameExists($username) === false) {
    30.             password_verify('KitsuneTimingAttack', '$2y$12$5hf7vOtBjsNJf6oZSsnyXOlcLTRblTwSg550SR0ohxVUkItmXhMM6'); //Mitigate timing attacks
    31.             $penguin->send("%xt%e%-1%101%");
    32.             return $this->removePenguin($penguin);
    33.         }
    34.        
    35.         $penguinData = $penguin->database->getColumnsByName($username, array("ID", "Username", "Password", "SWID", "Email", "Banned"));
    36.         $encryptedPassword = Hashing::getLoginHash($penguinData["Password"], $penguin->randomKey);
    37.        
    38.         if(password_verify($password, $penguinData["Password"]) !== true) {
    39.             $penguin->send("%xt%e%-1%101%");
    40.             return $this->removePenguin($penguin);
    41.         } elseif($penguinData["Banned"] > strtotime("now") || $penguinData["Banned"] == "perm") {
    42.             if(is_numeric($penguinData["Banned"])) {
    43.                 $hours = round(($penguinData["Banned"] - strtotime("now")) / ( 60 * 60 ));
    44.                 $penguin->send("%xt%e%-1%601%$hours%");
    45.                 $this->removePenguin($penguin);
    46.             } else {
    47.                 $penguin->send("%xt%e%-1%603%");
    48.                 $this->removePenguin($penguin);
    49.             }
    50.         } else {          
    51.             $confirmationHash = md5($penguin->randomKey);
    52.             $friendsKey = md5($penguinData["ID"]); // May need to change this later!
    53.             $loginTime = time();
    54.            
    55.             $penguin->database->updateColumnById($penguinData["ID"], "ConfirmationHash", $confirmationHash);
    56.             $penguin->database->updateColumnById($penguinData["ID"], "LoginKey", $encryptedPassword);
    57.  
    58.             $penguin->handshakeStep = "login";
    59.            
    60.             $penguin->send("%xt%l%-1%{$penguinData["ID"]}|{$penguinData["SWID"]}|{$penguinData["Username"]}|$encryptedPassword|1|45|2|false|true|$loginTime%$confirmationHash%$friendsKey%101,1%{$penguinData["Email"]}%");
    61.         }
    62.     }
    63.  
    64.     protected function handleDisconnect($socket) {
    65.         $penguin = $this->penguins[$socket];
    66.         $this->removePenguin($penguin);
    67.     }
    68.  
    69.     public function removePenguin($penguin) {
    70.         $this->removeClient($penguin->socket);
    71.  
    72.         $this->databaseManager->remove($penguin);
    73.  
    74.         unset($this->penguins[$penguin->socket]);
    75.  
    76.         Logger::Notice("Player disconnected");
    77.     }
    78.    
    79. }
    80.  
    81. ?>
    --- Добавлено ---
    @ADSoft
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    посмотрите первым делом кодировку файла - где размещена форма входа - должна быть utf-8 без BOM
     
  5. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    @ADSoft Да, utf-8 без BOM
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    в базе кодировку сменил всей базы или конкретного поля? и почему нельзя сделать все по уму - сначала сменить кодировку на нужную - а потом зарегаться на русском языке?
     
  7. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Конкретного поля
     
  8. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0