Примечание: неопределенная переменная: имя пользователя

Мой вопрос = Почему для моего $ username не присваивается значение, когда я пытаюсь использовать его в editor.php?

У меня есть система входа в систему, которая работает. Как только пользователь войдет в систему, я хочу создать приветственную строку с надписью «Welcome [INSERT USERNAME HERE]». В настоящее время у меня возникают проблемы с получением эха для получения переменной «$ username», так как я получаю эту ошибку:

Примечание: неопределенная переменная: имя пользователя в editor.php по линии 60.

Вот строка 60 в editor.php. ОБРАТИТЕ ВНИМАНИЕ, что editor.php — это страница, на которую направляется пользователь после того, как он успешно вошел в систему.

<h4>Welcome <?php  echo $username;?> , to the editor.</h4>

Переменная $ username объявляется в loginAuth.php, которая запускается, когда пользователь отправляет свои данные для входа в login.php.

Вот соответствующий код для loginAuth.php:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

//Connect to DB
include_once dirname(__FILE__).'/db_connect.php';
// PHP >= 5.3
include_once __DIR__.'/db_connect.php';//starts session
session_start();
if (isset($_POST['loginSub'])) {
//Variables declaration
$username = $_POST['user'];
$password = $_POST['password'];

//if username doesnt not equal empty space and password does not equal empty
space, then...
if(trim($username) != '' and trim($password) != ''){

//Sanitizes whatever is entered
$username=stripslashes($username);
$password=stripslashes($password);

$username=strip_tags($_POST['user']);
$password=strip_tags($_POST['password']);$username=mysqli_real_escape_string($conn,$username);
$password=mysqli_real_escape_string($conn,$password);

//SQL query
$query = mysqli_query($conn, "SELECT * FROM users WHERE user='$username' AND
password = '$password' ")or die(mysqli_error($conn));
//applies msqli_num_rows to the $query. Counts how many rows
$numrows=mysqli_num_rows($query);
//if there is a row that matches what has been entered in form, then...
if($numrows > 0){

//initialize session
$_SESSION['login_user']= $username;
//take them to editor.php
header("location: editor.php"); // Redirecting To Other Page
exit;
}else{
echo "Username or password is incorrect.";
}
}else{
echo "Please enter information";
}
}
?>

Таким образом, по сути, страница editor.php не может получить переменную $ username по какой-то причине, потому что она, очевидно, не имеет значения … Даже если моя страница входа успешно работает.

В соответствии с моей просьбой, моя HTML-форма в login.php:

 <form id="login" method="POST" action="loginAuth.php">

<label for="user"><strong>Login:</strong></label>
<input type="text"size=20 autocorrect=off autocapitalize=words name="user">
<label for="password" > <strong>Password:</strong></label>
<input type="password" name="password">

<input name="loginSub" type="submit" value="Login">
</form>

Вот другие вопросы, которые я исследовал, но не смог применить к моему собственному вопросу:

Справка — Что означает эта ошибка в PHP?

PHP: "Примечание: неопределенная переменная", "Примечание: неопределенный индекс", а также "Примечание: неопределенное смещение"

-2

Решение

Ваша переменная не существует в editor.php

Вы должны получить от вашего $_SESSION как это:

editor.php

<?php
$username = $_SESSION['login_user'];
....
<h4>Welcome <?php  echo $username;?> , to the editor.</h4>
4

Другие решения

Индивидуальный .php файлы полностью независимы друг от друга, когда пользователь обращается к ним напрямую, как они делают, когда вы перенаправляете их.

Поскольку вы перенаправляете пользователя на editor.phpпеременная $username что вы установили в login не существует. Это другой процесс, обрабатывающий запрос.

editor.php необходимо обрабатывать логин пользователя в некоторой форме, вы можете посмотреть на PHP Session Handling.

//initialize session
$_SESSION['login_user']= $username;

Вы сохраняете имя пользователя в переменной сеанса здесь; один из вариантов — отразить это в editor.php при выполнении…

$username = $_SESSION['login_user'];
1

По вопросам рекламы [email protected]