по какой-то причине мой сценарий входа в php продолжает возвращать недопустимые результаты, я использую PHPMYADMIN для обработки базы данных и mysqli для подключения, однако всякий раз, когда я отправляю данные, хотя HTML-форма, значения всегда возвращают false, даже если правильная комбинация имени пользователя и пароля за работой.
<?php
$username = $_POST["username"];
$password = $_POST["password"];
$con = mysql_connect("localhost","cnathanielwcol","","login");
if (! $con){die('Connection Failed'.mysql_error());}
$result = mysqli_query("SELECT * FROM login");
$row = mysql_fetch_array($result);
var_dump($row);
if ($row["username"]==$username) {
echo "Correct Username<br>";
} else {
echo "Wrong Username<br>";
}
if ($row["password"]==$password) {
echo "Correct Password<br>";
} else {
echo "Wrong Password<br>";
}
echo "<br><br>Username Submited Via HTML: <b>" . $username . "</b>";
echo "<br>Password Submited Via HTML: <b>" . $password . "</b>";
?>
Расширение mysql_, которое вы использовали, было УДАЛЕННЫЙ из PHP 7.0, поэтому на любом сервере с PHP 7.0 или новее ваш код будет сломан. Также пароли должны храниться в формате НИКОГДА в виде обычного текста. прочтите php.net/manual/en/ref.password.php, чтобы узнать о функциях PHP для работы с хешированием паролей






Изменять
$con = mysql_connect("localhost","cnathanielwcol","FKxIHHoWWtd4Q","login");
С участием
$con = mysqli_connect("localhost","cnathanielwcol","FKxIHHoWWtd4Q","login");
Вы пытаетесь получить данные с помощью mysqli, а соединение с вашей базой данных установлено с помощью mysql
ваш полный код:
$username = $_POST["username"];
$password = $_POST["password"];
$con = mysqli_connect("localhost","cnathanielwcol","","login") or die('connection is not establised'.mysqli_error($con));
$result = mysqli_query($con,"SELECT * FROM login WHERE username='$username' AND password='$password'");
$rowCheck=mysqli_num_rows($result);
if ($rowCheck>0) {
// fetch all data
//start session
echo "you are logged in ";
}
else{
echo 'username or password did not match';
}
Используйте хэш-пароль. Ваш код небезопасен.
во-первых, вам нужно выбрать одну строку, а не все строки в вашей таблице, вы должны сделать это, указав предложение WHERE, в настоящее время вы пытаетесь сравнить массив значений со строкой, которая должна выдавать ошибку, если отчет об ошибках включен.
во-вторых, вы смешиваете разные API, mysql_* не mysqli_*.
в-третьих, не похоже, что вы хеширование ваши пароли, пожалуйста, сделайте так.
В-четвертых, используйте подготовленные заявления, кажется, вы все еще учитесь, поэтому было бы лучше начать использовать их сейчас.
Материал для чтения
Памятка по хранению паролей OWASP
Шпаргалка по безопасности PHP от OWASP
Спасибо! Я немного застрял в использовании предложения WHERE, не могли бы вы дать мне пример или настроить его с помощью моего скрипта?
MySQL устарел из-за использования новой версии PHP
$con = mysqli_connect("localhost","cnathanielwcol","FKxIHHoWWtd4Q","login");
Было бы полезно дать некоторые пояснения по поводу версий MySQL и PHP, на которые вы ссылаетесь, вместе с номерами версий.
Не могли бы вы использовать mysqli_ *, пожалуйста? У вас может быть проблема с вашей html-формой, возможно
вам не хватает некоторых основ работы с базами данных, в Интернете есть множество ресурсов по этому поводу, которые были бы вам полезны для оформления заказа.