2017-04-09 240 views
3

香草论坛2.3香草论坛SSO的PHP不登录到论坛

我已经过了好几次,我都看着几乎每一个文件,我可以找到,但我坚持。

我已经下载了最新版本的香草和我已经下载了最新版本的插件jsconnect的..

我已经全部配置在管理方面的jsconnect插件设置中设置

jsConnect设置

登录网址 http://localhost/site/login.php

注册网址 http://localhost/site/register.php

注销网址 http://localhost/site/logout.php

论坛位于在 http://localhost/site/forums/

验证URL http://localhost/site/includes/auth.php

所以I L ogin到我的网站一切都很好我点击论坛,它说我没有登录。

我的登录页面功能

function login_user($email, $password){ 

    $active = 1; 

    $db = dbconnect(); 
    $stmt = $db->prepare('SELECT * FROM users WHERE email = ? AND active= ?'); 
    $stmt->bind_param('si', $email, $active); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 

    if ($result->num_rows == 1) { 
     $row = $result->fetch_array(); 

     $id = $row['id']; 
     $email = $row['email']; 
     $username = $row['username']; 
     $db_password = $row['password']; 

     isset($_POST['remember']) ? $remember = $_POST['remember'] : $remember = ""; 

     if (password_verify($password, $db_password)) { 

      $_SESSION['id'] = $id; 
      $_SESSION['email'] = $email; 
      $_SESSION['username'] = $username; 

      $fingerprint = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); 
      $_SESSION['last_active'] = time(); 
      $_SESSION['fingerprint'] = $fingerprint; 

      if($remember === "yes"){ 
      rememberMe($id); 
      } 

      return true; 
     } else { 
      return false; 
     } 
     return true; 
    } else { 
     return false; 
    } 
} 

我authenticate.php

<?php 

include_once '../db/db.php'; 
include_once '../db/functions.php'; 
require_once '../vanilla/plugins/jsconnect/functions.jsconnect.php'; 



// 1. Get your client ID and secret here. These must match those in your jsConnect settings. 
$clientID = "xxxxx"; 
$secret = "xxxxxxxxxx"; 



// 2. Grab the current user from your session management system or database here. 
$signedIn = true; // this is just a placeholder 

if($_SESSION['id']) 
    $signedIn = true; 


// 3. Fill in the user information in a way that Vanilla can understand. 
$user = array(); 


if ($signedIn) { 
    // CHANGE THESE FOUR LINES. 

    $user['uniqueid'] = $_SESSION['id']; 
    $user['name'] = $_SESSION['username']; 
    $user['email'] = $_SESSION['email']; 

} 

// 4. Generate the jsConnect string. 

// This should be true unless you are testing. 
// You can also use a hash name like md5, sha1 etc which must be the name as the connection settings in Vanilla. 
$secure = true; 

WriteJsConnect($user, $_GET, $clientID, $secret, $secure); 

exit(); 

?> 
+0

我所拥有的一切所需要的香草JS连接SSO PHP是这里https://github.com/vanilla/jsConnectPHP – Case

回答

3

看来你没有启动此页面上的会话,你必须使用 尝试以下

<?php 
session_start(); 

include_once '../db/db.php'; 
include_once '../db/functions.php'; 
require_once '../vanilla/plugins/jsconnect/functions.jsconnect.php';