PHP后没有显示HTML

时间:2016-08-25 20:00:23

标签: php html

我目前正在尝试微调登录脚本,只有一个小问题 - HTML没有显示。我试着把HTML放在PHP的前面,但是 session_start(); 取决于它位于顶部的事实,因此如果我将HTML放在PHP之前,HTML呈现,但PHP无效。这是正常的 - 然而,HTML没有显示的事实不是。

只是为了澄清,这是一个.php文件。

完整代码:

<?php
ob_start();
session_start();
require_once 'dbconnect.php';

// it will never let you open index(login) page if session is set
if ( isset($_SESSION['user'])!="" ) {
header("Location: home.php");
exit;
}

if( isset($_POST['btn-login']) ) { 

$email = $_POST['email'];
$upass = $_POST['pass'];

$email = strip_tags(trim($email));
$upass = strip_tags(trim($upass));

$password = hash('sha256', $upass); // password hashing using SHA256

$res=mysql_query("SELECT userId, userName, userPass FROM users WHERE userEmail='$email'");

$row=mysql_fetch_array($res);

$count = mysql_num_rows($res); // if uname/pass correct it returns must be 1 row

if( $count == 1 && $row['userPass']==$password ) {
 $_SESSION['user'] = $row['userId'];
 header("Location: home.php");
 } else {
 $errMSG = "Wrong Credentials, Try again...";
 }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login & Registration System</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="http://demos.codingcage.com/signup-login/style.css" type="text/css" />



</head>
<body>

<div class="container">

<div id="login-form">
<form method="post" autocomplete="off">

 <div class="col-md-12">

 <div class="form-group">
 <h2 class="">Sign In.</h2>
 </div>

 <div class="form-group">
  <hr />
  </div>

<?php
if ( isset($errMSG) ) {    
?>
<div class="form-group">
         <div class="alert alert-danger">
<span class="glyphicon glyphicon-info-sign"></span> <?php echo $errMSG; 
?>
            </div>
         </div>
<?php
}
?>

        <div class="form-group">
         <div class="input-group">
            <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>
         <input type="email" name="email" class="form-control" placeholder="Your Email" required />
            </div>
        </div>

        <div class="form-group">
         <div class="input-group">
            <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
         <input type="password" name="pass" class="form-control" placeholder="Your Password" required />
            </div>
        </div>

        <div class="form-group">
         <hr />
        </div>

        <div class="form-group">
         <button type="submit" class="btn btn-block btn-primary" name="btn-login">Sign In</button>
        </div>

        <div class="form-group">
         <hr />
        </div>

        <div class="form-group">
         <a href="register.php">Sign Up Here...</a>
        </div>

     </div>

 </form>
 </div> 

</div>

</body>
</html>

2 个答案:

答案 0 :(得分:2)

把它放在顶部..

error_reporting(E_ALL);
ini_set('display_errors', 1);

它会告诉你错误是什么,所以堆叠溢出的人不必猜测..

另外,不推荐使用mysql_ *函数。如果你想被黑客入侵,那很酷。如果没有,也许会调查PDO。

修改

我无法对其他答案发表评论,所以我在这里只说isset返回一个布尔值。将布尔值与带有==的空字符串进行比较与将其与false进行比较具有完全相同的效果......这是非常规的,但它不是不正确的,它肯定不是造成任何错误。

证明:https://3v4l.org/vr8UU

另一个答案是错误的。

答案 1 :(得分:1)

if (isset($_SESSION['user'])!="" ) {这不是isset()的工作方式。

使用:if (isset($_SESSION['user'])) {代替。

http://php.net/manual/en/function.isset.php

然后移除exit。这个地方没有必要。