空白是PHP/HTML中的问题吗?
我已经为我的站点创建了用户名/密码登录页面。当用户提交他们的信息并与数据库中的信息匹配时,它应该重定向到主页,但不会重定向。根据另一位成员的建议,我在页面中添加了错误报告。当我单击提交时,我没有被重定向到正确的页面,但我被重定向到另一个页面,该页面给出了代码中的所有错误 $SESSION['']变量和我想重定向到页面的标题似乎有问题。我不确定究竟是什么导致了这些问题 注意:未定义索引:第40行/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php中的用户 注意:未定义索引:第41行的pass-in/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php 警告:无法修改标题信息-标题已由第46行/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php中的/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php发送 正如所建议的,在标记之前或之后的空格中可能有错误。我已经查看了我的代码,没有找到这些错误。如有任何关于问题的意见,我们将不胜感激空白是PHP/HTML中的问题吗?,php,redirect,error-handling,removing-whitespace,Php,Redirect,Error Handling,Removing Whitespace,我已经为我的站点创建了用户名/密码登录页面。当用户提交他们的信息并与数据库中的信息匹配时,它应该重定向到主页,但不会重定向。根据另一位成员的建议,我在页面中添加了错误报告。当我单击提交时,我没有被重定向到正确的页面,但我被重定向到另一个页面,该页面给出了代码中的所有错误 $SESSION['']变量和我想重定向到页面的标题似乎有问题。我不确定究竟是什么导致了这些问题 注意:未定义索引:第40行/home/ikb2014/public_html/test/LESSON5/1-LOGIN.php中的
<?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>
您打开和关闭了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);
前两个通知告诉您正在尝试访问不存在的数组的参数。第二个错误告诉您它无法重定向,因为脚本已经生成了输出(可能是前两个通知的结果)。检查第40行和第41行中的错误,为什么您认为在明确说明错误时存在空格问题。将var_dump($_POST)放在$user_name=$_POST['user']行之前检查post值是否正确。当访问不存在的数组索引时,这并不能解释前两个错误。为True,这只解决了标头问题。标头错误是前两个错误的直接后果,即,因为这些错误会写入浏览器,它们算作输出,并触发头的发送,使得以后不可能再发送任何头。但是,由于PHP脚本不会在前两个错误处停止(它们只是一个突出显示潜在打字错误的通知),因此执行会到达调用header()
,在那里会触发警告。解决前两个通知也将解决标题警告。@Sven No不会。他在第一个php标记和第二个php标记之间有一个空行,这也将作为一个输出,因此他无法在第二个php标记中发送头。您可以尝试编写一个简单的脚本,在两个php部分之间有一个空行,您将看到无法在该空行之后设置标题。
<?php
session_start();
require_once("../inc_files/Lesson_5_DB_Connection.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);