Распечатать данные из mysql с помощью php7

У меня есть таблица со столбцами "email, senha, apelido и data_criacao". Я создал систему входа в систему, используя PHP и MySQL, и теперь я хочу отобразить сообщение с псевдонимом пользователя (это Apelido), но я просто не могу. Я пытался всю ночь...

Я пытался получить, пробовал цикл while...

Файл: логин.php

<?php
session_start();
include('conexao.php');

if (empty($_POST['email']) || empty($_POST['senha'])){
header('Location: index.php');
exit();
}

$email = mysqli_real_escape_string($conexao, $_POST['email']);
$senha = mysqli_real_escape_string($conexao, $_POST['senha']);
$query = "select apelido from cadastros where email = '{$email}' and 
senha=md5('{$senha}')";
$result1 = mysqli_query($conexao, $query);

$row1 = mysqli_num_rows($result1);
if ($row1 == 1){
$apelido = $row1['apelido'];
$_SESSION['usuario'] = $apelido;
header('Location: painel.php');
exit();
} else {
header('Location: index.php');
exit();
}
?>

Файл: painel.php

<?php
session_start();
include('verifica_login.php');
?>

<h2><?php echo $_SESSION['usuario']; ?></h2>
<h2> <a href = "logout.php">SAIR</h2>

Предполагается, что должно отображаться «апелидо», но ничего не происходит, когда я отправляю форму. Он отлично работает, если я меняю $_SESSION['usuario'] = $apelido; на $_SESSION['usuario'] = $email;, он нормально показывает электронную почту

Вам нужно фактически получить набор результатов. Например. с mysqli_fetch_assoc.

Jonnix 15.05.2019 15:17
Вы действительно не должны использовать Хэши паролей MD5, и вам действительно следует использовать PHP встроенные функции для защиты паролей. Перед хешированием убедитесь, что вы используете не избегайте паролей или какой-либо другой механизм очистки. При этом изменения пароль и вызывает ненужное дополнительное кодирование.
Jay Blanchard 15.05.2019 15:18
Маленький Бобби говорит ваш сценарий подвержен риску атак с помощью SQL-инъекций. Узнайте об операторах готовый для MySQLi. Даже экранирование строки небезопасен!
Jay Blanchard 15.05.2019 15:19

Как? я пытался, но я думаю, что я сделал это неправильно

Eddie Tower 15.05.2019 15:20

О нет, я не использую md5 по-настоящему, я просто учусь создавать веб-приложения с базами данных, я углублюсь в вопросы безопасности, прежде чем создавать что-то по-настоящему.

Eddie Tower 15.05.2019 15:22
Стоит ли изучать 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 и хотите разрабатывать...
0
5
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На самом деле вы не получаете данные, возвращаемые вашим запросом. $result1 — это просто указатель на весь набор результатов, он не содержит фактических данных строки. Чтобы получить данные, вы должны их получить (либо по одной строке за раз, либо все вместе). Большинство руководств по PHP/mysqli покажут вам этот дополнительный шаг. Вы пытались использовать результат mysqli_num_rows(), который представляет собой просто числовое значение, показывающее, сколько строк вернул запрос, как если бы это был массив, содержащий фактические данные строк.

В вашем случае кажется, что вы ожидаете только одну строку, поэтому вы можете сделать это следующим образом:

$result1 = mysqli_query($conexao, $query);

if ($row1 = mysqli_fetch_assoc($result1)) //if there is a row to read, this will both assign the row data into $row1 and also cause the if statement to return true
{
  $apelido = $row1['apelido'];
  //...etc

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