Почему данные не показывают php mysql - PullRequest
0 голосов
/ 16 сентября 2018

При попытке отобразить данные на index.php имя пользователя работает хорошо, электронная почта не отображается.

server.php

$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {


  $_SESSION['email'] = $email;
  $_SESSION['username'] = $username;
  $_SESSION['success'] = "You are now logged in";
  header('location: index.php');

index.php

<?php
// Echo session variables that were set on previous page
echo "Your email is: " . $_SESSION['email'] . "<br>";
echo "Your username is: " . $_SESSION['username'] . "";
?>

Ответы [ 3 ]

0 голосов
/ 16 сентября 2018

Вы не получили письмо с вашими результатами, поэтому ваша переменная $ email равна нулю.Если электронная почта находится в вашей таблице пользователей, вам нужно будет назначить ее по результатам.

0 голосов
/ 16 сентября 2018

Это полный код, появляется $ username (проверено разными пользователями)

if (isset($_POST['login_user'])) {
  $username = mysqli_real_escape_string($db, $_POST['username']);
  $password = mysqli_real_escape_string($db, $_POST['password']);

  if (empty($username)) {
    array_push($errors, "Username is required");
  }
  if (empty($password)) {
    array_push($errors, "Password is required");
  }

  if (count($errors) == 0) {
    $password = md5($password);
    $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
    $results = mysqli_query($db, $query);
    if (mysqli_num_rows($results) == 1) {


      $_SESSION['email'] = $email;
      $_SESSION['username'] = $username;
      $_SESSION['success'] = "You are now logged in";
      header('location: index.php');
    }else {
        array_push($errors, "Wrong username or password combination");
    }
  }
}
0 голосов
/ 16 сентября 2018

Вы не получаете результаты после запроса данных.Используйте mysqli_fetch_assoc

Примечание , которое я применил mysqli_real_escape_string к вашим WHERE параметрам, для проблем, связанных с внедрением SQL. Хотя это не надежное решение!

Изменить на следующее:

$query = "SELECT * 
          FROM users 
          WHERE username = '" . mysqli_real_escape_string($db, $username) . 
          " AND password = '" . mysqli_real_escape_string($db, $password) . "'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {

  $row = mysqli_fetch_assoc($db, $results);
  $_SESSION['email'] = $row['email'];
  $_SESSION['username'] =  $row['username'];
  $_SESSION['success'] = "You are now logged in";

Пожалуйста, прочитайте в какпредотвратить проблемы, связанные с внедрением SQL, используя подготовленные операторы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...