2011-11-10 31 views

Trả lời

8

Bạn wil Tôi cần một tập lệnh tích hợp với khung phpBB. Một cái gì đó như thế này sẽ làm việc.

<?php 
define('IN_PHPBB', true); 
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 

// Start session management 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup(); 
?> 

Sau đó, nhìn vào $auth->login() chức năng (một sử dụng ví dụ là trong login_box() chức năng trong /includes/functions.php). Một ví dụ đơn giản nhưng đầy đủ là:

$result = $auth->login($username, $password); // There are more params but they're optional 

if ($result['status'] == LOGIN_SUCCESS) 
{ 
    // Logged in 
} 
else 
{ 
    // Something went wrong 
} 
-1

Trong kịch bản PHP của bạn đó là thu thập thông qua HTML sẽ cần phải:

  • dữ liệu POST như thế nào nếu nó được điền vào mẫu
  • Nhận câu trả lời từ máy chủ; lẽ trích xuất các tập tin cookie của phiên
  • Gửi những cookie cho yêu cầu tiếp theo

Bạn có thể quan tâm trong việc sử dụng một số thư viện đã tồn tại để tạo điều kiện đó.
Ví dụ, bạn có thể có một cái nhìn tại Zend_Http_Client (see also; phần về Sending Multiple Requests With the Same Client lẽ sẽ quan tâm bạn ;-))


Bạn cũng có thể muốn có một cái nhìn tại một số các câu hỏi/câu trả lời khác, như:

+0

Không thực sự chắc chắn về cách thực hiện điều này với phpBB? – nickb

+0

Câu hỏi đặt ra là: "Làm thế nào để lập trình đăng nhập vào diễn đàn phpBB?". Đây là một câu trả lời chung tốt giải thích điều đó. – budwiser

+0

@budwiser - Câu hỏi đặt ra là cách đăng nhập vào ** phpBB **, không phải cách đăng nhập vào bất kỳ ứng dụng web từ xa nào.Vì vậy, nó không thích hợp cho phpBB, đặc biệt khi có sẵn một API và câu trả lời này đang nói về việc thu thập dữ liệu HTML và xác thực từ xa. (Câu hỏi của OP nêu rõ nhu cầu về giải pháp xác thực cục bộ) – nickb

10

Trước tiên, bạn cần phải bootstrap cho phpBB:

define('IN_PHPBB', true); 
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './phpBB/'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 

$user->session_begin(); 

Bạn sẽ phải thay thế phần ./phpBB/ với đường dẫn tương đối so với diễn đàn.

Để làm cho người dùng đăng nhập, bạn phải làm:

$result = $user->session_create($user_id, $admin, $autologin, $viewonline); 

$admin có lẽ nên được false, $autologin$viewonline phụ thuộc vào những gì bạn muốn.

LƯU Ý: Gọi session_create sẽ đặt cookie phiên cho người dùng, vì vậy hãy đảm bảo bạn chỉ gọi khi yêu cầu hiện tại thực sự phân phát người dùng đó.

+0

Điều này không trả lời câu hỏi của OP, vì giải pháp của bạn không chấp nhận tên người dùng/mật khẩu của người dùng để đăng nhập, nhưng buộc đăng nhập của '$ user_id '. – nickb

+8

Đủ công bằng, tôi đã đi quá xa vào chi tiết. Tôi sẽ để lại câu trả lời của tôi ở đây anyway, kể từ khi tôi đặt một số nỗ lực vào nó. Có thể giúp ai đó một ngày nào đó. – igorw

+0

Tôi đồng ý, nó rất hữu ích nếu bạn đã có ID của họ. – nickb

Các vấn đề liên quan