Registration file, password encryption:

$finite_password = password_hash($password, PASSWORD_DEFAULT); $result2 = mysql_query ("INSERT INTO `users` (name, surname, login, password, mail, bornDD, bornMM, bornYY, sex) VALUES ('$name', '$surname', '$login', '$finite_password', '$mail', '$bornDD', '$bornMM', '$bornYY', ' $sex')"); if ($result2 === FALSE) { echo "Ошибка записи в базу: ".mysql_error(); } ?> 

Authorization file:

 $result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); $myrow = mysql_fetch_array($result); if (empty($myrow['password'])) { exit ("Извините, введённый вами login или пароль неверный."); } else { $query = mysql_query ("SELECT password FROM users WHERE login = '$login' LIMIT 1 "); $finite_password = $query->fetch_assoc()['password']; if ( password_verify($password, $finite_password) ) { $_SESSION['login']=$myrow['login']; $_SESSION['id']=$myrow['id']; ?> <div class="centerr"> <div class="helpcenterr"> <br> <? echo "Вы успешно вошли на сайт, как ".$_SESSION['login']."!"."&nbsp"."<a style='color:#8600D3; font-family:Arial;'; href='index.php'><br> Главная страница</a>"; echo "Вы зашли"; } else { exit ("Извините, введённый вами login или пароль неверный."); } } 

Writes an error: Call to a member function in the W: \ domains \ work \ reg \ enter.php on line 87 87 line: $ finite_password = $ query-> fetch_assoc () ['password'] ; I do not understand what is wrong. Help me figure it out or tell me where I didn’t understand that by checking the password through password_verify; I am new to this all, if not difficult to describe the process where I was wrong.

  • using the mysql extension is not recommended. Switch to PDO . $query fetch_assoc() no fetch_assoc() method and cannot be. Also do not forget that the query can return 0 rows. Therefore, ['password'] - may be meaningless. - ArchDemon 4:19 pm
  • @ArchDemon do i fetch_assoc () via PDO? - Lyosha Volosnikov
  • one
    Read the documentation on the PDO or an article on a habr or any other resource - ArchDemon pm

0