我在PHP中编写了一段代码,试图实现会话超全局,以检查用户是否已经通过非常基本的表单(只提供用户名和电子邮件)进行注册。但是当我通过localhost在我的浏览器中打开我的代码时,它只显示一个空白页面......我不知道为什么。 非常感谢你的回答。
是的......我是初学者:)!注意:在我原来的.php文件中,由于html中的表单,我放了doctype,html,head和body标签。我不知道是否必须把它或它是否可以自动识别为html。如果你能解释我,我很满意。
NB2:文件名为SESSION.php
干杯
<?php
//Initiate session data
session_start();
//If the user is already registered, display a message letting him know
if(isset($_SESSION["username"])) {
echo "You are already registered as $_SESSION[username].";
}
//Check if the form was submitted
else if($_SERVER["REQUEST_METHOD"] == "POST") {
//If both fields filled out, store the var in the session var
//Trim() is used to eliminate leading and trailing whitespace
if(!empty(trim($_POST['username'])))
&& (!empty(trim($_POST['email']))) {
//Store espaced $_POST values in variables
$uname=htmlentities($_POST['username']);
$email=htmlentities($_POST['email']);
$_SESSION['username']=$uname;
echo "Thanks for registering! <br/>",
"Username: $uname <br/>",
"Email: $email <br/>";
}
//If the user didn't fill out both fields, let him know too
else {
echo "Please fill out both fields. <br/>";
}
}
//If the form was not submitted at all
else { ?>
<form action="SESSION.php?username=overwritten" method="post">
<label for="username">Username:</label>
<input type="text" name="username" />
<label for="email">Email:</label>
<input type="text" name="email" />
<input type="submit" value="Register!" />
</form>
<?php
} ?>
答案 0 :(得分:1)
取决于具体情况,可能有很多原因。这里有几种可能性
session_start()
必须始终在任何输出开始之前。 DOCTYPE,html代码,echo / print语句在许多其他可能性中输出。所以它可能无法正常启动会话。
检查error_reporting=E_ALL
文件中是否有display_errors=1
和php.ini
(它们不是,添加/更改它们并记得之后重新启动网络服务器) - 这应该输出而不是隐藏你可能有的任何错误。或者,查看您的网络服务器(例如apache的)错误日志,了解失败的详细信息并从那里进行调试
答案 1 :(得分:0)
首先,使用
ini_set( 'display_errors', 'On' );
error_reporting( E_ALL );
在开始文件时显示错误
其次,请勿在if语句
中使用empty()
函数
第三,你的if语句中有这么多(
和)
试试这个
if(!is_null(trim($_POST['username'])) && (!is_null(trim($_POST['email']))))