подскажите, почему проверка пароля на локальном сервере (ноутбук (Тип сервера: MariaDB; Версия сервера 10.3.13-MariaDB; Версия PHP 7.1.22), использую RedBeanPHP 5 mysql ) работает, а когда переношу на хостинг (5.7.26 - MySQL Community Server (GPL), Версия PHP: 7.2.7) не работает, в базу записывает как положено, но когда пытаюсь авторизоваться, выдаёт “неправильный пароль”, причём если вручную записать пароль в базу (без шифрования), то же самое. Когда проверяю что приходит с сервера, там одинаковые значения. вот кусок кода
$data = $_POST;
if ( isset($data['do_login'])) {
$errors = array();
$user = R::findOne('users', 'login = ?', array($data['login']));
if ( $user ) { // логин существует
if (password_verify($data['password'], $user->password)) { // логиним пользователя
$_SESSION['logged_user'] = $user;
echo '<div style="color: green;">Вы успешно авторизованны!<br/>
Переход к <a href="/">главной странице</a></div><hr>';
} else {
$errors[] = '<div style="color: red;">Не верно введён пароль!!!</div>';
var_dump($user->password); // вот так проверяю, что мне приходит.
var_dump($data);
}
else {
$errors[] = '<div style="color: red;">Пользователь с таким логином не найден!!!</div>';
}
if ( ! empty($errors)) {
echo '<div style="color: red;">' .array_shift($errors).' </div><hr>';}
}
?>
<form action="login.php" method="POST">
<p>
<p><strong>Введите Ваш логин</strong>:</p>
<input type="text" name="login" value="<?php echo @$data['login']; ?>">
</p>
<p>
<p><strong>Введите Ваш пароль</strong>:</p>
<input type="password" name="password" value="<?php echo @$data['password']; ?>">
</p>
<p><button type="submit" name="do_login">Войти!</button></p>
</form>[![введите сюда описание изображения][1]][1]
вот процесс регистрации
<?php
$data =$_POST;
if ( isset($data['do_singup'])) {
$errors = array();
if (trim($data['login']) == '') {
$errors[] = 'Введите логин!';}
if (trim($data['email']) == '') {
$errors[] = 'Введите Email!';}
if ($data['password'] == '') {
$errors[] = 'Введите пароль!';}
if ($data['password_2'] != $data['password']) {
$errors[] = 'Введите правильно повторный пароль!';}
if ( R::count('users', "login = ?", array($data['login'])) > 0) {
$errors[] = 'Пользователь с таким логином существует!';}
if ( R::count('users', "email = ?", array($data['email'])) > 0) {
$errors[] = 'Пользователь с таким Email существует!';
}
if ( empty($errors) ) {
$user = R::dispense('users');
$user->login = $data['login'];
$user->email = $data['email'];
$user->password = password_hash($data['password'], PASSWORD_DEFAULT);
R::store($user);
echo '<div style="color: green;">Вы успешно зарегистрировались!</div><hr>';
} else {
echo '<div style="color: red;">' .array_shift($errors).' </div><hr>';}
} ?>
<form action="signup.php" method="POST">
<p>
<p><strong>Введите логин</strong>:</p>
<input type="text" name="login" value="<?php echo @$data['login']; ?>">
</p>
<p>
<p><strong>Ваш Email</strong>:</p>
<input type="email" name="email" value="<?php echo @$data['email']; ?>">
</p>
<p>
<p><strong>Введите пароль</strong>:</p>
<input type="password" name="password" value="<?php echo @$data['password']; ?>">
</p>
<p>
<p><strong>Повторите пароль</strong>:</p>
<input type="password" name="password_2" value="<?php echo @$data['password_2']; ?>">
</p>
<p>
<button type="submit" name="do_singup">Зарегистрироваться!</button>
</p>
</form>
Нашёл ошибку, когда делал базу данных, в строке пароля было 50 символов допустимо, а надо минимум 60, но есть рекомендации 255 символов.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Стоит жирная задача реализовать SSR (Server-Side Rendering) в проекте, но постоянно вылазят разные трудности
Подскажите пожалуйста, какой синтаксис у HQL запроса, который возвращал бы объекты из базы, при определённом условии