如果存在PHP会话,则显示html元素

时间:2016-05-25 20:16:37

标签: php html

我正在为我的网站创建一个登录功能,如果用户已登录,我希望它显示与用户未登录时不同的内容。为此,我正在使用我正在检查的会话是否保留用户ID,如果有,则显示登录视图。到目前为止,它正在检查数据库,然后在数据库中存在值时重定向我,但它不会更改视图。

我正在使用的代码:

<?php
   session_start();           
   if(isset($_SESSION['id'])){
?>
    <form class="navbar-form navbar-right" role="search">
       <a href="account.php" class="btn btn-inverse"><?php echo $_SESSION['name'];?></a>
       <a href="userlogout.php" class="btn btn-inverse">Logout</a>
    </form>
<?php
    }else{
?>                        


    <form action="userlogin.php" class="navbar-form navbar-right" role="search" method="get">
         <div class="form-group">
             <input type="email" class="form-control" name="Email" placeholder="Email">
         </div>
         <div class="form-group">
             <input type="password" class="form-control" name="password" placeholder="Password">
         </div>
         <button type="submit" class="btn btn-primary">Sign In</button>
         <a href="register.php" class="btn btn-inverse">Register</a>
     </form>
 <?php
    }
 ?>

编辑: 抱歉,我遗漏了一些信息,表格连接到一个PHP文件,如下所示:

<?php

session_start();
error_reporting(E_ALL); ini_set('display_errors', 1);
$user = "Placeholder";
$pass = "********";
$con = mysqli_connect("localhost", $user,$pass,"articlegame");
$email = $_GET['Email'];
$pass = $_GET['password'];
$result = mysqli_query($con, "SELECT id,isAdmin,name FROM users WHERE email ='$email' AND password='$pass'");
$num = mysqli_num_rows($result);
$row = mysqli_fetch_row($result);
$name = '';
$id = 0;
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
    $name = $row['name'];
    $id = ['id'];
}
if (!$result) {
    die(mysqli_error($con)); 
    echo "Bad Connection";
}else if($num == 0){
   echo "Wrong user name or password entered!"; 
    echo " <a href='index.php'>Go back<a>";
}else{

    $_SESSION['loginid'] = $id;
    $_SESSION['username'] = $name;
    header("Location: index.php");
}

?>

1 个答案:

答案 0 :(得分:4)

您从未设置$_SESSION['id'],但请在此处查看:

if(isset($_SESSION['id'])){... 

您设置了$_SESSION['loginid'],这是您应该检查的内容,除非您想要将变量标识符更改为“id”。

您也不设置$_SESSION['name'],而是设置$_SESSION['username']

Little Bobbyyour script is at risk for SQL Injection Attacks.了解preparedMySQLi语句。即使escaping the string也不安全!

永远不要存储纯文本密码!请使用PHP的built-in functions来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用password_hash() compatibility pack。在散列之前,请确保don't escape passwords或使用任何其他清理机制。这样做更改密码并导致不必要的额外编码。