2015-01-09 3 views
-1

로그인을 시도했지만 로그인하지 않으면 그냥 빈 페이지에 머물러 있습니다. 오류가 표시되지 않았습니다.로그인 실패

나는 index.php에서 양식을 만들었습니다. 사용자가 로그 아웃하지 않으면 사용자 이름이 페이지에 출력됩니다. 사용자가 로그인하지 않은 경우 로그인 양식이 표시됩니다. 아래에 다음 코드 :

<?php 
    ob_start(); 
    session_start(); 
    ini_set('display_errors', 1); 
    error_reporting(-1); 
?> 

<?php 
include "../config/dbconnect.php"; 

    if(isset($_POST['submit'])) { 
     $username = trim($_POST['email']); 
     $password = trim($_POST['password']); 

     $username = $mysqli->real_escape_string($username); 
     $password = $mysqli->real_escape_string($password); 

     $salt = sha1(md5($password)); 
     $epwd = md5($password.$salt); 

     $loginUser = " SELECT * FROM memberTable 
         WHERE email = '$email' AND password = '$epwd'"; 

     $loginSuccess = mysqli_query($mysqli, $loginUser) or die(mysqli_error($mysqli)); 
     $loginRow = mysqli_num_rows($loginSuccess); 

     if($loginRow === 1) { 

      session_start(); 
      $_SESSION['login'] = true; 

      $user_info = mysqli_fetch_assoc($loginSuccess); 
      $_SESSION['user_info'] = $user_info; // put user_info to call all details for later use 

      header ("Location: ../index.php"); 
      } else { 
       header ("Location: ../header.php"); 
      } 

    mysqli_close($mysqli); 
    } 
?> 

dbconnect.php에 대한 다음 코드는 다음과 같습니다 :

<?php 
    //Open a new connection to the MySQL server 
    $mysqli = new mysqli('localhost','root','root','database_name'); 

    //Output any connection error 
    if ($mysqli->connect_error) { 
     die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); 
    } 
?> 
아래와 같이

<div class="topRight"> 
     <?php 
      ini_set('display_errors',1); 
      error_reporting(E_ALL); 
      include "config/dbconnect.php"; 

      if(isset($_SESSION['login'])&&!empty($_SESSION['login'])) {    
       $name = $_SESSION['user_info']['name']; 
       echo '<p> <a href="profileUser"> Profile : $name </a>'; 
       } else { 
       echo '<form action="actions/login.php" method="POST"> 
          <input type="text" name="email" placeholder="Email"> 
          <input type="password" name="password" placeholder="Password"> 
          <input type="submit" value="LOGIN"> 
         </form>'; 
       echo '<p> <a href="registerForm.php" class="underline"> Not a member? Register here! </a> </p> 
         <p> <a href="actions/logout.php"> Logout </a> </p>'; 
      } 
     ?> 
    </div> 
로그인 후

, 직접적 의지 login.php하기

결과는 양식으로 로그인하면 login.php로 성공적으로 이동합니다. 그러나 빈 페이지가있어서 index.php로 리다이렉트하지 않고 멈췄다. 표시된 오류가 없습니다. 내가 무슨 짓을

은 다음과 같습니다

  1. 단순히 ini_set('display_errors',1);를 놓고 여전히 오류가 표시되지 않습니다.
  2. dbconnect.php를 점검했고 dbconnect.php에 대한 index.php와 login.php 간의 연결이 매우 잘 연결되었습니다.

여전히 screenshot과 같은 기호는 표시되지 않았습니다. 내가 놓친 게 있니?

+0

첫 번째 코드 상자에'session_start();'가 있습니까? 그렇지 않으면 당신은 그것을 놓쳤다 – Rizier123

+0

@ Rizier123 오, 야! 나는이'session_start();를 놓쳤다. 알려 줘서 고마워. – Anthosiast

+0

그게 오류를 해결 했나요? – Rizier123

답변

0

하나는 충분하다 session 두 장소에서, 그때 또한 당신이에 설정된 값 user_info $ $ _SESSION [ 'user_info를'] 확인해야 시작 header();

같은 header();으로부터 제거 공간 후 var_dump($_SESSION['user_info']);die();

지금 당신은

당신은 화면에있는 것을 시도
+0

다시 코딩을 수정할 수 있습니까? 나는 내가 편집 할 수있는 곳이 아니다. 하하 .. 아주 혼란 ​​스럽네. – Anthosiast

+0

방금 ​​두 곳을 넣는 것을 깨달았습니다. 방금 그 중 하나를 제거했습니다. 그리고 당신은 당신이 말한 것에'$ _SESSION [ 'user_info'] = $ user_info;를 대체해야한다는 것을 의미합니까? – Anthosiast

+0

'var_dump ($ _ SESSION ['user_info ']);'를 사용하여 $ _SESSION [ 'user_info']에 설정된 값을 확인하십시오. $ _SESSION [ 'user_info'] = $ user_info 라인 아래 in login.php – Sathish

0

header()를 사용할 때마다 출력이 시작되지 않아야합니다. 빈 행을 출력합니다.

?> 

<?php 

헤더() 상관없이 모든 실제 출력하기 전에 파일에 일반 HTML 태그, 빈 선으로, 호출해야합니다, 또는 PHP 에서 당신은

<?php 
    ob_start(); 
    session_start(); 
    ini_set('display_errors', 1); 
    error_reporting(-1); 
?> 

<?php 
include "../config/dbconnect.php"; 

시도 사이에 약간의 공간을 추가 한 아래처럼 만들고 다시 시도하십시오.

<?php 
    ob_start(); 
    session_start(); 
    ini_set('display_errors', 1); 
    error_reporting(-1); 
    include "../config/dbconnect.php"; 
    if(isset($_POST['submit'])) { 
.......................... 
+0

아니요, 여전히 작동하지 않습니다. 너무 긴장되었습니다. :/ – Anthosiast

+0

session_start와 ob_start의 순서를 변경하십시오. 먼저 session_start를 넣은 다음 ob_start를 입력하십시오. header(). exit(); 뒤에 Exit를 둡니다. –

+0

이것이이 의미입니까? http://prntscr.com/5qph02. 아직도 하하 일하지 않는다. – Anthosiast