2017-08-18 485 views
0

我在使用Chrome和PHP會話時遇到問題。 我正在構建將用於我的組織的OAuth2服務器,OAuth2部分工作正常,但是當我嘗試在OAuth2授權請求之前實現簡單登錄時,PHP會話每次在Chrome上刷新頁面時都會重置(已經使用Firefox,Safari和Edge進行測試)。Chrome會話數據丟失

最喜歡的圖標是不是由於該文件位於根目錄(因爲我的圖標還沒有準備好,沒有版權侵犯意圖,所以在網上找到了隨機圖標)。

我的PHP的OAuth2 authorize.php:

<?php 
require_once __DIR__.'/server.php'; 

$request = OAuth2\Request::createFromGlobals(); 
$response = new OAuth2\Response(); 

if (!$server->validateAuthorizeRequest($request, $response)) { 
    $response->send(); 
    die; 
} 
if(!isset($_SESSION['logged_in_user'])){ 
    $link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
    echo "<script>window.location.href = \"login.php?next=".urlencode($link)."\";</script>"; 
    die(''); 
} 
if (empty($_POST)) { 
    exit(' 
<form method="post"> 
    <label>Do You Authorize TestClient?</label><br /> 
    <input type="submit" name="authorized" value="yes"> 
    <input type="submit" name="authorized" value="no"> 
</form>'); 
} 
$is_authorized = ($_POST['authorized'] === 'yes'); 
$server->handleAuthorizeRequest($request, $response, $is_authorized); 
$response->send(); 

我的login.php:

<?php 
    if(!isset($_SESSION['logged_in_user'])){ 
     if(empty($_POST)){ 
?> 
<form method="post"> 
    <label>Do You Want To Login To TestClient?</label><br /> 
    <input type="submit" name="authorized2" value="yes"> 
    <input type="submit" name="authorized2" value="no"> 
</form> 
<?php 
     }else{ 
      $_SESSION['logged_in_user'] = true; 
      echo "<script>window.location.href = \"".urldecode($_GET['next'])."\";</script>"; 
      die(''); 
     } 
    }else{echo "<script>window.location.href = \"".urldecode($_GET['next'])."\";</script>";} 
?> 

正如你可以看到的是一個非常簡單的代碼(我將實現真正的分貝取後登錄)。

我用於OAuth2的PHP庫是bshaffer中的一個,您可以在github上找到,「server.php」文件就是您可以在庫食譜中找到的文件。

會話我的php.ini值: php.ini session values

如果有人想嘗試訪問,我通過谷歌的OAuth 2.0遊樂場做我的測試。

操場的設定值: playground setup values

有沒有人有一個解決方案?

編輯1:我已經安裝了PHP版本7.1.8是作爲在ISPConfig 3.1.6

+0

我沒有在您的示例頁面頂部看到session_start [會話基礎](http://php.net/manual/en/session.examples.basic.php) – JDA

+0

如果您看到我的php.ini: 「session.auto_start」=>「開」 – Zed93

回答

0

FPM服務大量搜索,我發現這個問題...內存緩存後。 由於某些未知原因,memcache和會話不能在我的PHP安裝上一起工作。其他緩存系統也可以,但是如果我激活了memcache,會話在Chrome中不起作用。

  • PHP 7.1.8
  • 內存緩存3.0.9-dev的
  • 的Memcached 3.0.3

我也試圖與內存緩存3.0.8(穩定),但結果沒有按」 t改變...會話可以,但不會在Chrome中丟失會話每頁重新加載。