2016-08-25 4 views
1

현재 로그인 스크립트를 미세 조정하려고하는데 작은 문제가 하나 있습니다. HTML이 표시되지 않습니다. PHP 앞에 HTML을 넣으려고했으나 session_start();은 맨 위에 있다는 사실에 달려 있습니다. 따라서 PHP 앞에 HTML을 넣으면 HTML이 렌더링되지만 PHP는 유효하지 않습니다. 그러나 HTML이 표시되지 않는다는 사실은 정상적인 현상입니다.PHP 이후에 HTML이 표시되지 않습니다.

명확히하기 위해 .php 문서입니다.

FULL 코드 :

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

문제는 "require_once 'dbconnect.php'에서 발생한 것 같습니다."; 제거하면 모든 것이 잘됩니까? Pls는 dbconnect.php의 내용을 게시하지만 db 암호 또는 기타 정보를 다시 작성하는 것을 잊지 마십시오. – Netra

답변

2

는 .. 상단에

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

을이를 넣고 또한

, mysql_로 * 기능이 있습니다 .. 오류가 스택 오버 플로우에 사람들이 생각하지 않아도 무엇인지를 알려줍니다 더 이상 사용되지 않습니다. 해킹 당하고 싶다면 멋지다. 그렇지 않으면 PDO를 대신 조사하십시오.


편집

나는 그래서 난 그냥 isset 부울을 반환 여기 말할 것이다 아직 다른 답변을 말씀 드릴 수 없습니다. 부울을 ==으로 빈 문자열과 비교하는 것은 false과 비교하는 것과 똑같은 효과가 있습니다 ... 이것은 비 통상적이지만 잘못된 것은 아니며 어떤 종류의 오류도 발생시키지 않습니다.

는 증명 : https://3v4l.org/vr8UU

다른 대답은 잘못된 것입니다.

+0

나는이 스크립트가 더 이상 사용되지 않음을 알고 있습니다. 현재이 이전 스크립트를 mysqli_로 업그레이드하는 중입니다.하지만 먼저 수정하고 싶습니다. – Zackh105

+0

"치명적인 오류 : 캐치 오류 : 정의되지 않은 함수 호출 (/srv/disk12/2189518/www/goshoes.tk/index에서 error_erporting() 오류가 발생했습니다) .php : 2 스택 추적 : # 2 {line} 2 "error_erporting (E_ALL);에 스택 추적 #/{/ main} throws /srv/disk12/2189518/www/goshoes.tk/index.php; – Zackh105

+1

다른 답변에 대해서는 아직 언급 할 수 없으므로'isset'가 부울을 반환한다고 말할 것입니다. boolean과 빈 문자열을'! ='로 비교하는 것은'! isset()'과 똑같은 효과를냅니다 ... 이것은 틀에 얽매이지 않지만 iccorect가 아니며 어떤 종류의 오류도 발생시키지 않습니다. –

1

if (isset($_SESSION['user'])!="") {이 어떻게 isset() 작동하지 않습니다.

사용 : if (isset($_SESSION['user'])) { 대신.

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

그리고 exit를 제거합니다. 이 장소에서 필요하지 않습니다.

+0

나는 그것을 바꿨지만 여전히 변화가 없었다. – Zackh105

관련 문제