登录后如何隐藏登录表单

时间:2015-12-30 21:05:39

标签: php html

我是PHP的新手。所以我为我的网站制作了一个登录表单,并且在用户登录后我无法隐藏表单。我希望它在用户成功登录后消失。 我的代码如下,

<?php
    include "connect.php";
    $_SESSION['backurl'] = basename($_SERVER['PHP_SELF']);
?>

<div class = "loginform">  
            <form name = "login" action = "login.php" method = "post" accept-charset = "utf-8"> 
                <?php
                     echo $_SESSION['username'];
                    //IF LOGADO TIRAR FORM. 
                ?>
                <ul>  
                    <li><label for = "usermail" class = "letralogin" >Email</label>  
                    <input type = "email" name = "usermail" placeholder = "yourname@email.com" required></li> 
                    <p>
                    <li><label for = "password" class = "letralogin">Password</label>  
                    <input type = "password" name = "password" placeholder = "password" required></li> 
                    <p>                 
                    <input type = "submit" name = "login" value = "Login"></li>
                </ul>                   
            </form>
            </div>

            <div class = "divreg">
                <input type = "button" onclick = "location.href = 'registo.php';" value = "Registo" class = "buttreg"/>
            </div>

这是我在login.php上的代码,

<?php
    include "connect.php";
    if(isset($_POST['login']))
    {
        $username = $_POST['usermail'];
        $password = sha1($_POST['password']);
        $sql = "select * from utilizador where email = '$username' and password = '$password'";
        $result = mysqli_query($conn, $sql);
        if (mysqli_num_rows($result) > 0)
        {
            echo 'OK';
            $_SESSION['username'] = $username;
            header('Location: ' . $_SESSION['backurl']);
        }
        else 
        {
            echo 'wrong password';
            header('Location: ' . $_SESSION['backurl']);
        }
    }
    else
    {
        header('Location: inicio.php');
    }
?>

4 个答案:

答案 0 :(得分:2)

您可以在顶部的登录文件中查看会话:

include "connect.php";

session_start();

    $_SESSION['backurl'] = basename($_SERVER['PHP_SELF']);

if(isset($_SESSION['username']) && !empty($_SESSION['username']) )   {
       header('Location: ' . $_SESSION['backurl']);
}

如果您有两个文件,则需要在两个文件中使用session_start函数。

答案 1 :(得分:1)

假设只在用户登录时设置了用户名会话变量,这就是你想要的。

if (!isset($_SESSION['username'])) {
?>
HTML FORM CODE GOES HERE
<?php
}
?>

这样做是检查您是否设置了用户名,如果不设置,如果您将其放在PHP标记之间,它将显示登录表单的HTML。此外,您可以在其中放置一些JavaScript来隐藏您的loginform div,这也会从页面中删除登录表单。

答案 2 :(得分:1)

前言:

你现在正在标题之前输出你的标题上方的回声,而这只会导致你的代码被删除。

要么回显 OR 标题;你现在不能同时使用它们。

这是一个基本方法,正如我在评论中提到的,为表单代码分配一个变量,并用引号括起来。

您可以基于以下骨架/基本模型,然后从那里获取它。

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

session_start();

$_SESSION['user'] = "John";
?>

<!DOCTYPE html>
    <head><title></title></head>
    <body>

<?php 


$form = '
            <form name = "login" action = "login.php" method = "post" accept-charset = "utf-8">

                <ul>  
                    <li><label for = "usermail" class = "letralogin" >Email</label>  
                    <input type = "email" name = "usermail" placeholder = "yourname@email.com" required></li> 
                    <p>
                    <li><label for = "password" class = "letralogin">Password</label>  
                    <input type = "password" name = "password" placeholder = "password" required></li> 
                    <p>                 
                    <input type = "submit" name = "login" value = "Login"></li>
                </ul>                   
            </form>

';


if (isset($_SESSION['user']) && $_SESSION['user'] == 'John') {

    echo "Welcome " . $_SESSION['user'];

    }

    else{ 

    echo $form;

    }

?>

    </body>
 </html>

答案 3 :(得分:0)

您应该检查您的会话是否为空。像这样:

session_start();
if(!empty($_SESSION['username']) {
       ?>
       <!--your login form-->
       <?php
} else {
       ?>
       main page.
       <?php
}

这是针对用户未登录时所需的情况,除了登录部分之外,没有为他显示任何页面。或者如果你想在登录后隐藏登录表单,它将是这样的:

session_start();
if(empty($_SESSION['username']) {
       ?>
       <!--your login form-->
       <?php
}
?>
<!--main part details. -->
相关问题