我是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');
}
?>
答案 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. -->