Php 如何在登录后隐藏登录表单

Php 如何在登录后隐藏登录表单,php,html,Php,Html,我是PHP新手。因此,我为我的网站制作了一个loginform,在用户登录后,我很难将表单隐藏起来。。我希望它在用户成功登录后消失。 我的代码如下: <?php include "connect.php"; $_SESSION['backurl'] = basename($_SERVER['PHP_SELF']); ?> <div class = "loginform"> <form name = "login" act

我是PHP新手。因此,我为我的网站制作了一个loginform,在用户登录后,我很难将表单隐藏起来。。我希望它在用户成功登录后消失。 我的代码如下:

<?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');
    }
?>

假设用户名会话变量仅在用户登录时设置,这就是您想要的

if (!isset($_SESSION['username'])) {
?>
HTML FORM CODE GOES HERE
<?php
}
?>
if(!isset($\u会话['username'])){
?>
HTML表单代码在这里

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

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

include "connect.php";

session_start();

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

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

如果您有两个单独的文件,则需要在两个文件中使用会话启动功能。

您应该检查会话是否为空。如下所示:

session_start();
if(!empty($_SESSION['username']) {
       ?>
       <!--your login form-->
       <?php
} else {
       ?>
       main page.
       <?php
}
session_start();
如果(!empty($\u会话['username'])){
?>
主页。
前言:

您当前在头之前输出,头上方带有回音,这将杀死您的代码

要么回音,要么回音标题;不能两者都有,而不是现在使用它们的方式

  • 更多信息请点击此处:
这是一个基本方法,正如我在注释中提到的,为表单代码分配一个变量,并封装在引号中

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

<?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>


你保存了什么来表示用户是否登录?只是用户名会话变量?你的条件检查在哪里?我编辑了帖子,希望能有所帮助。@reavstone:我已经更新了我的答案添加会话开始功能你到底想要什么?你的登录部分和登录后的主要部分在哪里一个页面?或者它们在不同的页面中?当用户登录并在URL中键入您的登录页面地址时,您希望为他显示主页,对吗?不起作用,谢谢您的帮助,我编辑了这篇文章,如果可以,请检查它。“这做的是检查您是否设置了用户名”-
如果(!isset($\u SESSION['username'))
而不是
操作符。OP想检查它是否已设置,如果已设置则隐藏表单。@reavstone应答更新您需要在耐心伴侣的存储库上启动会话功能,但它仍然不起作用:/@reavstone您可以检查打印($\u会话);在表单POST之后,在会话创建之后,您在哪里回显OK抱歉,我不明白您想让我做什么,我是新来的:/@reavstone检查您的会话设置是否正确?例如,在此回显会话之后,您在哪里使用$\U会话['username]=$username;$\U会话['username'];exit;…测试并告诉我结果。我已经知道用户何时登录或不登录,这段代码:回显用户名,因此我知道它是否登录。不起作用,mate,它只是从一开始就隐藏了loginform,这意味着用户甚至无法登录,它已全部消失。@Reavstone抱歉,有一个词已更改,
!empty
更改为
empty
.Array([backurl]=>inicio.php[username]=>)在一个空白的login.php页面@Majid Sadrseems上显示了这一点,就像我写这篇文章是白费力气一样。
<?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>