使用会话超全局(PHP)来检查用户是否已经注册

时间:2014-07-23 21:07:56

标签: php html html5

我在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 
    } ?>

2 个答案:

答案 0 :(得分:1)

取决于具体情况,可能有很多原因。这里有几种可能性

  1. session_start()必须始终在任何输出开始之前。 DOCTYPE,html代码,echo / print语句在许多其他可能性中输出。所以它可能无法正常启动会话。

  2. 检查error_reporting=E_ALL文件中是否有display_errors=1php.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']))))