Подготовленный оператор на PHP с базой данных MYSQL

В настоящее время я работаю над проектом, касающимся SQL-инъекций, и мне нужно принять меры противодействия этому. Я пытался использовать подготовленное заявление в качестве контрмеры. Но в настоящее время после нескольких часов попыток я не могу этого сделать. Он продолжает показывать мне простой белый экран на моей странице, который должен перенаправить его на другую страницу или показать сообщение

Вот коды doСтраница входа:

<?php
session_start();
require('dbFunction.php');
$username = $_POST['form-username'];
$password = SHA1($_POST['form-password']);
$msg = "";

$stmt = $link -> prepare("SELECT * FROM User WHERE Email = ? AND Password = ?");
$stmt -> bind_param('ss', $username, $password);
$stmt -> execute();

if ($stmt -> get_result() -> num_rows > 0) {
$row = $stmt-> get_result() ->fetch_assoc();
$_SESSION['email'] = $row['Email'];
$_SESSION['userId'] = $row['UserId'];
$_SESSION['role'] = $row['role'];
$_SESSION['First_name'] = $row['First_name'];
header("location:index.php");
}
else{
$msg .= "Wrong user combination.";
}

$stmt -> close();
$link -> close();

include "navbar.php";
echo $msg;
echo error_get_last();

?>

Вот код для моего подключения к базе данных:

<?php
$db_host = "localhost";
$db_username = "root";
$db_password = "P@$\$w0rd";
$db_name = "mydb";
$link = mysqli_connect($db_host,$db_username,$db_password,$db_name);

if (!$link){
die(mysqli_error($link));
}

Вам просто не хватает инструкции echo или prinf в вашем состоянии else.

Kagiso Marvin Molekwa 26.12.2018 09:10

Получаете ли вы в своем $ stmt какие-нибудь данные? Я имею в виду, вы вошли в систему?

Nagesh Katna 26.12.2018 09:10

добавьте echo $msg; в свой оператор else.

Kagiso Marvin Molekwa 26.12.2018 09:11

Нет, я не вошел в систему. Думаю, это означает, что я не получал никаких данных. @ Нагеш Катна

defendtheplane1996 26.12.2018 15:41
Стоит ли изучать 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 и хотите разрабатывать...
1
4
95
1

Ответы 1

Попробуйте использовать это:

<?php
$db_host = "localhost";
$db_username = "root";
$db_password = "P@$\$w0rd";
$db_name = "mydb";
$link = new mysqli($db_host,$db_username,$db_password,$db_name);

if ($link->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

попробовал, но у меня все еще тот же белый экран.

defendtheplane1996 26.12.2018 15:50

Я не понимаю, как этот ответ получил столько голосов, ИМХО. Все, что здесь было сделано, была использована правильная обработка ошибок при подключении, о чем должно было быть ИМХО, было сказано в комментариях. Это не решает вопроса. Сказать "Попробуйте использовать ..." - это всего лишь; комментарий.

Funk Forty Niner 26.12.2018 15:54

Кроме того, этот "P@$\$w0rd";, заданный, как показано, будет не работает по нескольким причинам.

Funk Forty Niner 26.12.2018 15:56

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