Почему SQL-запрос на обновление пароля не запускается в php-скрипте веб-страницы? - PullRequest
0 голосов
/ 10 октября 2019
Я создаю веб-сайт, который имеет две таблицы базы данных клиента и фрилансера. Теперь мне нужно интегрировать все, например, учетные данные профиля, пароль, изображения и т. Д.

изначально у приложения есть два разных файла (в двух разных папках), которые обрабатываются. Изменение паролей и других учетных данных профиля, таких как имя, имя пользователя и адрес электронной почты фрилансера и клиента. Таким образом, чтобы объединить все в один файл, я выполняю все запросы sql таблицы фрилансера в клиентской. Все учетные данные профиля обновляются успешно, но не пароль. Я не понимаю почему?

Это файл Client / profile.php

$client = new Client();
$freelancer = new Freelancer();

//Check if Client is logged in
if (!$client->isLoggedIn() && !$freelancer->isLoggedIn()) { 
    Redirect::to('../index.php');
}

//Get Instructor's Data
$query = DB::getInstance()->get("client", "*", ["clientid" => $client->data()->clientid]);
if ($query->count()) {
    foreach ($query->results() as $row) {
        $nid = $row->id;
        $name = $row->name; 
        $username = $row->username;
        $email = $row->email;
        $bgimage = $row->bgimage;
        $phone = $row->phone;
    }
}

//Edit Profile Data
if (isset($_POST['profile'])) {
    if (Input::exists()) {
        if (Token::check(Input::get('token'))) {

            $errorHandler = new ErrorHandler;

            $validator = new Validator($errorHandler);

            $validation = $validator->check($_POST, [
                'username' => [
                    'required' => true,
                    'maxlength' => 20,
                    'minlength' => 2
                ],
                'name' => [
                    'required' => true,
                    'maxlength' => 100,
                    'minlength' => 2
                ],
                'email' => [
                    'required' => true,
                    'maxlength' => 255,
                    'email' => true,
                ],
                'phone' => [
                    'required' => false,
                    'maxlength' => 10,
                    'minlength' => 10
                ]
            ]);

            if (!$validation->fails()) {


                $client->update([
                    'name' => Input::get('name'),
                    'username' => Input::get('username'),
                    'email' => Input::get('email'),
                    'phone' => Input::get('phone')
                ], [
                    'clientid' => $client->data()->clientid
                ]);

                if (count($client) > 0) {
                    $noError = true;
                } 
                else {
                    $hasError = true;
                }

                $freelancer->update([
                    'name' => Input::get('name'),
                    'username' => Input::get('username'),
                    'email' => Input::get('email'),
                    'phone' => Input::get('phone')
                ], [
                    'freelancerid' => $freelancer->data()->freelancerid
                ]);

                if (count($freelancer) > 0) {
                    $noError = true;
                } else {
                    $hasError = true;
                }
            } 
            else {
                $error = '';
                foreach ($validation->errors()->all() as $err) {
                    $str = implode(" ", $err);
                    $error .= '
               <div class="alert alert-danger fade in">
                <a href="#" class="close" data-dismiss="alert">&times;</a>
                <strong>Error!</strong> ' . $str . '
               </div>
               ';
                }
            }
        }
    }
}

/*Edit Password Data*/
if (isset($_POST['register'])) {
    if (Input::exists()) {
        if (Token::check(Input::get('token'))) {

            $errorHandler = new ErrorHandler;

            $validator = new Validator($errorHandler);

            $validation = $validator->check($_POST, [
                'password_current' => [
                    'required' => true,
                    'maxlength' => 300
                ],
                'password_new' => [
                    'required' => true,
                    'minlength' => 6
                ],
                'password_new_again' => [
                    'required' => true,
                    'match' => 'password_new'
                ]
            ]);

            if (!$validation->fails()) { //working fine

                if ( (Hash::make(Input::get('password_current'), $client->data()->salt) !== $client->data()->password) && (Hash::make(Input::get('password_current'), $freelancer->data()->salt) !== $freelancer->data()->password) ){
                    $hasError = true; 
                } 
                else {
                    $salt = Hash::salt(32);

                    $changed_password = Hash::make(Input::get('password_new'), $salt);

                     $client->update([
                        'password' => $changed_password, 
                        'salt' => $salt
                     ], [
                        'clientid' => $client->data()->clientid
                     ]);
                    $noError = true;
                }

                if (!$validation->fails()) { //not working

                    if (Hash::make(Input::get('password_current'), $freelancer->data()->salt) !== $freelancer->data()->password) {
                        $hasError = true;
                    } 
                    else {
                          $salt = Hash::salt(32);
                          $freelancer->update([
                            'password' => Hash::make(Input::get('password_new'), $salt),
                            'salt' => $salt
                              ],[
                            'freelancerid' => $freelancer->data()->freelancerid
                              ]);
                          $noError = true;
                }
            }

            else {
                $error = '';
                foreach ($validation->errors()->all() as $err) {
                    $str = implode(" ", $err);
                    $error .= '
               <div class="alert alert-danger fade in">
                <a href="#" class="close" data-dismiss="alert">&times;</a>
                <strong>Error!</strong> ' . $str . '
               </div>
               ';
                }
            }
        }
    }
}

Это код файла Freelancer / profile.php для изменения пароля

if(isset($_POST['register'])){
    if (Input::exists()) {
        if (Token::check(Input::get('token'))) {

            $errorHandler = new ErrorHandler;

            $validator = new Validator($errorHandler);

            $validation = $validator->check($_POST, [
                'password_current' => [
                'required' => true,
                'maxlength' => 300
                ],
                'password_new' => [
                'required' => true,
                'minlength' => 6
                ],
                'password_new_again' => [
                'required' => true,
                'match' => 'password_new'
                ]
            ]);

            if (!$validation->fails()) {

                if (Hash::make(Input::get('password_current'), $freelancer->data()->salt) !== $freelancer->data()->password) {
                    $hasError = true;
                } 
                else {
                    $salt = Hash::salt(32);
                    $freelancer->update([
                        'password' => Hash::make(Input::get('password_new'), $salt),
                        'salt' => $salt
                        ],[
                        'freelancerid' => $freelancer->data()->freelancerid
                        ]);
                    $noError = true;
                }

            } 
            else {
                $error = '';
                foreach ($validation->errors()->all() as $err) {
                    $str = implode(" ",$err);
                    $error .= '
                        <div class="alert alert-danger fade in">
                        <a href="#" class="close" data-dismiss="alert">&times;</a>
                        <strong>Error!</strong> '.$str.'
                        </div>
                    ';
            }
        }   
        }
}
}

Мой вопрос, если запрос на изменение имени пользователя, электронная почта и номер телефона работает нормально, почему не работает смена пароля для фрилансера?

1 Ответ

0 голосов
/ 21 октября 2019

Алгоритм хэш-функции может выдавать две зашифрованные строки для одной и той же введенной строки, поэтому, когда я вызываю функцию два раза для клиента и фрилансера, две разные строки и сохраняются в базе данных.

...