2017-12-02 8 views
-1

저는 2 주 전에 대학 프로젝트로 시작한 PHP의 초보자이며 로그인 페이지에서 세션과 어려움을 겪고 있습니다. print_r ($ SESSION) 함수를 인쇄 할 때 비어있는 것으로 나타납니다. 다음은 아래 코드입니다 (ps. 지금은 SQL 주입에 대해 걱정하지 마십시오).

다른 모든 기능은 완벽하게 작동합니다. 오류가 완벽하게 표시됩니다. 세션 값이 비어 있습니다.

건설적인 피드백 만하시기 바랍니다! 그리고 2 주 전에 시작 했으므로 pls가 너무 복잡하지 않도록 노력해야한다는 것을 기억하십시오.

<?php 
session_start(); 
include 'dbconnect.php'; 
$emailerror = $passworderror = ""; 

if(isset($_POST['submit'])) 
{ 


    $email= $_POST["email"]; 
    $password= $_POST["password"]; 

    if (empty($email)) { 
     $emailerror = "*Email must be entered"; 
    } 

    elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
    { 
     $emailerror= "*Invalid email address Entered";  
    } 

    // To check if email has already been used or if another account with the same email exists 
    else{   
     $emailquery = ("SELECT * FROM `Potential_Employee` WHERE `Email` = '$email'"); 
     $emailcheckresult = mysqli_query($connection, $emailquery); 


     if(mysqli_num_rows($emailcheckresult) == 1){    
      $row=mysqli_fetch_assoc($emailcheckresult); 

      if (!password_verify($password, $row['Password'])){ 
       $passworderror = "*Password is incorrect!"; 
      } 
      else{ 
       $_SESSION['Email'] = $email; 
       $_SESSION['logged_in'] = true; 
       echo "<script>document.location='EmployeeDashboard.php';</script>"; 

      } 

     } 
     else{ 
      $emailerror = "*Email does not exist"; 
     } 

    } 

    if (empty($password)) { 
     $passworderror = "*Password must be entered"; 
    } 

    elseif (strlen($password) < 4) 
    { 
     $passworderror= "*Password Has to be greater than 8 Characters"; 
    } 
+0

약간의 팁, 나는 늘 SQLI을 언급 .. 당신이 만약 예를 들어 오류를 저장하십시오. $ errors [ 'email'], $ errors [ 'password']'와 같은 배열에서'$ emailerror, $ passworderror'를 호출하면 비어 있는지 여부를 간단히 확인할 수 있습니다. 더 멋진 그룹화,보다 쉽게 ​​뷰를 전달하는 등으로 더 깨끗하게 만들 것입니다. 그리고 일단 20 개 이상의 입력이있는 폼으로 옮기면 모든 글로벌 바를 기억할 필요가 없습니다. 하나의 var 만 디버깅하십시오. 해피 코딩 .. –

+0

좋은 지적 @ LawrenceCherone 해피 코딩 –

+0

@ LawrenceCherone 아 고맙습니다. – TomCreed

답변

-1

당신은 아래와 같은 디버그 세션에 필요 그냥 오타처럼

print_r($_SESSION); 

또는

echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>'; 
// Make second argument TRUE so it will return instead of echo 

또는

echo '<pre>'; 
var_dump($_SESSION); 
echo '</pre>'; 
+0

내가 묻는다면, 디버그는 무엇을 의미합니까? 죄송합니다. 나는이 용어들에 익숙하지 않습니다. 또한 Ive는 세션에있는 것을보기 위해 첫 번째 기능을 시도했으며 Array ->() 또는 그 이상으로 나타납니다. 배열이 비어 있습니다. – TomCreed

+0

은 모든 세션을 인쇄하여 출입 여부를 확인하는 것을 의미합니다. 당신은 틀린 방식으로 인쇄하고 있습니다. print_r ($ SESSION) –

+0

비어 있기 때문에 그것의 빈 공간이 전혀 없었습니다. –