CORS PHP身份验证和维护会话

时间:2012-11-17 18:39:18

标签: php session authentication cors

我在移动网站上工作。所有服务都将存储在远程主机上,因此我将以下标题发送回浏览器。

header('Access-Control-Allow-Credentials: true');
header("Access-Control-Allow-Headers: Authorization, Content-Type");
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); 
header('Access-Control-Max-Age: 1000');
header('content-type: application/json; charset=utf-8;');

现在问题出现在我正在设置会话的登录页面上,一切正常。但是在第二次请求时没有会话。 我该如何处理这个问题。

编辑:

的login.php

    <?php
        require('includes/functions.php');
        if (authenticate()) { 
        include('includes/headers.php');
        $arr = array('status' => 'success');    
        echo json_encode($arr);  
        }           
    ?>

users.php

    <?php
        include('includes/headers.php');
        require('includes/functions.php');      
        if( isloggedin() ) { 
        $users = get_users();
        $arr = array('status' => 'success', 'users' =>$users);  
        echo json_encode($arr);
      } 
   ?>

使用的功能

    //AUTHENTICATE USER AND CREATE SESSION
    function authenticate() {
    connect();
    global $pdo;    
    $stmt = $pdo->prepare('
    SELECT *
    FROM users
    WHERE username = :username
    LIMIT 1');

    $stmt->execute( array( ':username' => $_POST['username'] ) );
    $details = $stmt->fetch( PDO::FETCH_OBJ );
    //echo $details->password;
    //echo "<br />" . PassHash::hash($_POST['password']);
if($details) {  
    if (PassHash::check_password($details->password, $_POST['password'])) {
        $ss = new SecureSession(); $ss->Open();
        $_SESSION['isloggedin'] = TRUE;     
        return TRUE;
    }
} else {
    return FALSE;
}
}


//CHECK IF USER LOGGEDIN
function isloggedin() {
if( isset($_SESSION['isloggedin'])) {
    return TRUE;
}
}

0 个答案:

没有答案