2014-05-09 3 views
0

좋아, login 메서드에 쿠키가 설정되어있는 authentication이라는 PHP 클래스가 있는데 사람이 성공적으로 로그인 한 경우 동일한 메서드의 내 스크립트 login 나는 적절한 URL에 php의 header을 사용하여 사용자를 전달하고있다. 그러나 어떤 이유로 쿠키가 설정되지 않습니다. 이제PHP로 쿠키를 설정하려고 시도했지만 설정하지 않음

<?php 

require '../../config.php'; 
require base .'lib/helpers/bao.php'; 

class authentication extends bao { 

    /* 
     Login 
    */ 
    public function login($email, $pass, $fUrl = null) { 

     // set the forwarding url 
     $forward = '/login.php'; 

     // check for empty values 
     if(!empty($email) && !empty($pass)) { 

      // set params for binding and run query 
      $params = array(':email' => $email); 
      $runQuery = parent::query("SELECT * FROM users WHERE email = :email", $params); 

      // check to see if an account was found 
      if(parent::numRows($runQuery) > 0) { 

       // place result into array for use 
       $result = parent::fetch($runQuery); 

       // check to see if passwords match 
       if($result['pword'] === sha1($result['salt'] . $pass)) { 

        // update login in time in the database 
        $params = array(':login' => expLogin, ':id' => $result['id']); 
        $updateLoggedin = parent::query("UPDATE users SET login = :login WHERE id = :id", $params); 

        // Set a bunch of cookies 
        setcookie("userId", $result['id'], expLogin, '/'); 
        $emailCookie = setcookie("userEmail", $result['email'], expLogin, '/'); 
        setcookie("userNotifications", base64_encode($result['email']), expLogin, '/'); 
        setcookie("userType", $result['type'], expLogin, '/'); 
        setcookie("userStatus", $result['status'], expLogin, '/'); 
        setcookie("userLogin", $result['login'], expLogin, '/'); 

        // set forwarding url 
        switch($result['type']) { 
         case 'obl': 
          $forward = $fUrl ? $fUrl : '/admin/'; 
         break; 

         case 'broker': 
          $forward = $fUrl ? $fUrl : '/admin/'; 
         break; 

         case 'borrower': 
          $forward = $fUrl ? $fUrl : '/admin/'; 
         break; 
        } 

        $processMeta = 'Congrats you are logged in!'; 

       } else { 

        $processMeta = 'Your passwords did not match, please try again!'; 

       } 

      } else { 

       $processMeta = 'I\'m sorry we could not locate your account'; 

      } 

     } else { 
      $processMeta = 'You did not enter one of the required fields please try again!'; 
     } 

     // set process message to session 
     $_SESSION['processMeta'] = $processMeta; 

     // forward onto next url 
     header("Location: ". $forward); 

    } 

} 

?> 

나는이 방법을 내가 절차 적 코드를 프로그래밍하고되기 전에 유일한 차이점은 지금은에 같은 코드를 삽입 한 것을 그러나 여러 번 사용했습니다 : 여기

클래스 authentication입니다 수업. 대부분의 경우 동일한 구문을 사용하여 클래스에 넣어지면 쿠키가 제대로 설정되지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다!

감사

답변

0

난 당신이 쿠키 시간 만료로 expLogin 사용을 참조하십시오. 상수 인 경우 값 (초 수)을 확인해야합니다. expLogin ($ expLogin에 오타가있을 수 있습니다.)이 정의되지 않은 경우 php는 문자열이 이라고 생각하고 정수로 캐스팅 할 때 값은 0입니다.

+0

fark, 오른쪽, 웬일인지 그 이유를 잊어 버렸습니다. 당신은 유닉스 타임 스탬프를 사용해야하고 iso8601 형식을 사용하고있었습니다! 감사!!! –

관련 문제