Является ли пробел проблемой в этом PHP/HTML?
Я создал страницу логина / пароля для моего сайта. Когда пользователь отправляет свою информацию, и она соответствует информации в базе данных, он должен перенаправить на домашнюю страницу, однако он не перенаправляет. По предложению другого участника я добавил сообщение об ошибке на страницу. Когда я нажимаю кнопку "Отправить", меня не перенаправляют на правильную страницу, но перенаправляют на другую страницу, на которой отображаются все ошибки в моем коде.
Кажется, есть проблемы с переменными $SESSION[''] и заголовком, на который я хочу перенаправить страницу. Я не уверен, что именно может быть причиной этих проблем.
Примечание: неопределенный индекс: пользователь в /home/ikb2014/public_html/test/LESSON5/1 - LOGIN.php в строке 40
Примечание: неопределенный индекс: введите /home/ikb2014/public_html/test/LESSON5/1 - LOGIN.php в строке 41
Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/ikb2014/public_html/test/LESSON5/1 - LOGIN.php:10) в / home / ikb2014 / public_html / test / LESSON5 / 1 - LOGIN. PHP на линии 46
Как и предполагалось, в пробелах могут быть ошибки до или после тегов. Я просмотрел свой код и не могу найти эти ошибки. Любой вклад в то, что будет проблем, будет оценено.
<?php
session_start();
require_once("../inc_files/Lesson_5_DB_Connection.php");
?>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$error_message= "";
$user_name = "";
$user_password= "";
if (isset($_POST['submit'])) {
$user_name = $_POST['user'];
$user_password= $_POST['pass'];
// ADD QUERY TO CHECK IF USER/PASS COMBO IS CORRECT
if(!empty($user_name) && !empty($user_password)) {
$query = "SELECT * FROM employees WHERE username='$user_name' and password='$user_password'";
$result = mysqli_query($dbc, $query)
or die ('Error querying username/password request');
if(mysqli_num_rows($result) == 1) {
while($row = mysqli_fetch_array($result)) {
$_SESSION['user'] = $row['user'];
$_SESSION['pass']= $row['pass'];
}
header("Location: /LESSON5/3%20-%20HOMEPAGE%20:%20WELCOME.php");
exit;
} // end if rowns
else {
$error_message = "You were not able to log in";
} // end else
// Direct to other webpage
} // end query
} // end isset
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
<link type="text/css" rel="stylesheet" href="/LESSON5/5_Signup_CSS.css">
</head>
<body>
<h1>Welcome to my website!</h1>
<h2>Please login below.</h2>
<h3>Don't have an account? <a href="/LESSON5/2%20-%20CREATE%20AN%20ACCOUNT.php">Create one here.</a></h3>
<div class="formFormat" >
<div id="table1">
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table id="cssTable">
<tr>
<td>Username:</td><td><input type="text" id="user" name="user" value="<?php echo $user_name;?>" /></td>
</tr>
<tr>
<td>Password:</td><td><input type="text" id="pass" name="pass" value="<?php echo $user_password;?>"/></td>
</tr>
</table>
</div>
<div id="table2">
<table>
<tr>
<td><input type="submit" name="submit"/></td>
</tr>
<tr>
<td id="createAccount"><a href="/LESSON5/2%20-%20CREATE%20AN%20ACCOUNT.php">Create an account</a></td>
</tr>
<tr>
<td><p><?php echo $error_message?></p></td>
</tr>
</table>
</form>
</div>
</div>
<?php
mysqli_close($dbc);
?>
<?php
if(isset($_SESSION['user']) && isset($_SESSION['pass'])) {
echo "Sessions are set";
}
else {
echo "Not set.";
}
?>
</body>
</html>
1 ответ
Вы открыли и закрыли теги php и оставили между ними пустую строку - так что у вас уже есть выходные данные, и вы не можете устанавливать заголовки после этого.
Это ваш код:
<?php
session_start();
require_once("../inc_files/Lesson_5_DB_Connection.php");
?>
<<<< This empty line is the problem
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
Измените это на это:
<?php
session_start();
require_once("../inc_files/Lesson_5_DB_Connection.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);
И это должно работать.
Кстати, нет необходимости открывать и закрывать теги php, если между ними ничего не выводится - это бессмысленно.