Система входа в PHP работает некорректно

по какой-то причине мой сценарий входа в 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>";
?>

вам не хватает некоторых основ работы с базами данных, в Интернете есть множество ресурсов по этому поводу, которые были бы вам полезны для оформления заказа.

hassan 30.04.2018 10:21

Расширение mysql_, которое вы использовали, было УДАЛЕННЫЙ из PHP 7.0, поэтому на любом сервере с PHP 7.0 или новее ваш код будет сломан. Также пароли должны храниться в формате НИКОГДА в виде обычного текста. прочтите php.net/manual/en/ref.password.php, чтобы узнать о функциях PHP для работы с хешированием паролей

SpacePhoenix 30.04.2018 10:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
2
49
4

Ответы 4

Изменять

$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, не могли бы вы дать мне пример или настроить его с помощью моего скрипта?

Jake 30.04.2018 10:31

MySQL устарел из-за использования новой версии PHP

$con = mysqli_connect("localhost","cnathanielwcol","FKxIHHoWWtd4Q","login");

Было бы полезно дать некоторые пояснения по поводу версий MySQL и PHP, на которые вы ссылаетесь, вместе с номерами версий.

Jagrut Sharma 30.04.2018 10:29

Не могли бы вы использовать mysqli_ *, пожалуйста? У вас может быть проблема с вашей html-формой, возможно

Другие вопросы по теме