Файл создания таблицы PHP: <?php function add_user($connection, $fn, $sn, $un, $pw) { $stmt = $connection->prepare('INSERTINTO users VALUES(?,?,?,?)'); $stmt->bind_param('ssss', $fn , $sn, $un, $pw); $stmt->execute(); $stmt->close(); } require_once 'login.php'; $connection = new mysqli($hn, $un, $pw, $db); if ($connection->connect_error) die('Fatal Error'); $query = 'CREATETABLE users( forename VARCHAR(32) NOTNULL, surname VARCHAR(32) NOTNULL, username VARCHAR(32) NOTNULL UNIQUE, passwordVARCHAR(32) NOTNULL )'; $result = $connection->query($query); if (!$result) die('Fatal Error'); $forename = 'Bill'; $surname = 'Smith'; $username = 'bsmith'; $password = 'mysecret'; $hash = password_hash($password, PASSWORD_DEFAULT); add_user($connection, $forename, $surname, $username, $hash); ?> Файл аутентификации PHP: <?php require_once 'login.php'; $connection = new mysqli($hn, $un, $pw, $db); if ($connection->connect_error) die("Fatal Error"); if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { $un_temp = mysql_entities_fix_string($connection, $_SERVER['PHP_AUTH_USER']); $pw_temp = mysql_entities_fix_string($connection, $_SERVER['PHP_AUTH_PW']); $query = "SELECT*FROM users WHERE username='$un_temp'"; $result = $connection->query($query); if (!$result) die("Пользователь не найден"); elseif ($result->num_rows) { $row = $result->fetch_array(MYSQLI_NUM); $result->close(); if (password_verify($pw_temp, $row[3])) echo htmlspecialchars("$row[0] $row[1]: Hi $row[0], you are now logged in as '$row[2]'"); else die("Неверная комбинация имя пользователя - пароль1"); } else die("Неверная комбинация имя пользователь - пароль2"); } else { header('WWW-Authenticate: Basic realm="Restricted Area"'); header('HTTP/1.0 401 Unauthorized'); die ("Пожалуйста, введите имя пользователя и пароль"); } $connection->close(); function mysql_fix_string($connection, $string) { if (get_magic_quotes_gpc()) { $string = stripslashes($string); return $connection->real_escape_string($string); } } function mysql_entities_fix_string($connection, $string) { return htmlentities(mysql_fix_string($connection, $string)); } ?> Проблема заключается в том, что бы я не вводил он выводит "Неверная комбинация имя пользователь - пароль2" Верно ввожу с таблицы users значения, все равно тоже самое. Если что примеры с книги. Либо что - то с таблицей, я запутался
Пожалуйста оформляй код на форуме в ббкоды [php] ... [/php] на первый раз я сделал это за тебя. --- Добавлено --- Код из каких-то древних источников взят: расширение php_mysql давно мертво, magic quotes тоже. Это невозможно запустить на современной версии PHP, может в этом проблема? Чо пишет-то? Где описание ошибки? Отлаживай: http://phpfaq.ru/debug --- Добавлено --- Глаз можно сломать об код без отступов. Вот к чему относится тот else где "пароль2" — я не вижу. Ты мог бы узнать больше, если бы временно вставлял отладку вроде die($query); Я уж не говорю про xdebug
Спасибо,ошибок он не выдает. Не выполняет код в блоке (elseif($result->num_rows)) Не могли бы вы скинуть документацию или ресурсы --- Добавлено --- Я понимаю, что есть ошибки и их много.Если Вас не затруднит, можно скинуть документацию на источники свежие. Отступы там присутствуют. Я же не великий программист как Вы.
Вадим, велком ту рукожопп-форум!)))) Смотри суть: - Любой кодер - по сути рукожоп, но одни из них умеют отлаживать скрипты, а другие - нет. Вот и вся разница. Присоединяюсь к рекомендациям Артудиту. Учись отладке, изучай инструментарий отладки. Это очень быстро а эффект - огромный.
php.net чтобы понять что искать, надо больше узнать про ошибку. для этого отлаживай. ссылку я дал. я, как великий программист, не могу читать код без отступов. и я не смогу его запустить на моём php, ибо он не совместим. на самом деле не знаю, вижу упоминается mysql, но всё прочесть не могу. сорри! --- Добавлено --- вот да! это прямо в самую мякотку! --- Добавлено --- @Vadim_2020 мне кажется ты накосячил с блоками { }. начни с отступов, а там видно будет
мне почему-то не понравился одинокий bindParam в 5 строке - параметры какие-странные, и где еще три bindParam? Виноват, не разобрался, по ходу это правильный bind_param