XOOPS उपयोगकर्ता प्रणाली
XOOPS उपयोगकर्ता प्रणाली उपयोगकर्ता खाते, प्रमाणीकरण, प्राधिकरण, समूह सदस्यता और सत्र प्रबंधन का प्रबंधन करती है। यह आपके एप्लिकेशन को सुरक्षित करने और उपयोगकर्ता पहुंच को नियंत्रित करने के लिए एक मजबूत ढांचा प्रदान करता है।
उपयोगकर्ता सिस्टम आर्किटेक्चर
Section titled “उपयोगकर्ता सिस्टम आर्किटेक्चर”graph TD A[User System] -->|manages| B[XoopsUser] A -->|manages| C[XoopsGroup] A -->|handles| D[Authentication] A -->|handles| E[Sessions]
D -->|validates| F[Username/Password] D -->|validates| G[Email/Token] D -->|triggers| H[Post-Login Hooks]
E -->|manages| I[Session Data] E -->|manages| J[Session Cookies]
B -->|belongs to| C B -->|has| K[Permissions] B -->|has| L[Profile Data]
C -->|defines| M[Access Levels] C -->|contains| N[Multiple Users]XoopsUser कक्षा
Section titled “XoopsUser कक्षा”उपयोगकर्ता खाते का प्रतिनिधित्व करने वाला मुख्य उपयोगकर्ता ऑब्जेक्ट वर्ग।
कक्षा अवलोकन
Section titled “कक्षा अवलोकन”namespace Xoops\Core\User;
class XoopsUser extends XoopsObject{ protected int $uid = 0; protected string $uname = ''; protected string $email = ''; protected string $pass = ''; protected int $uregdate = 0; protected int $ulevel = 0; protected array $groups = []; protected array $permissions = [];}कंस्ट्रक्टर
Section titled “कंस्ट्रक्टर”public function __construct(int $uid = null)एक नया उपयोगकर्ता ऑब्जेक्ट बनाता है, जिसे वैकल्पिक रूप से आईडी द्वारा डेटाबेस से लोड किया जाता है।
पैरामीटर:
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
$uid | int | लोड करने के लिए उपयोगकर्ता आईडी (वैकल्पिक) |
उदाहरण:
// Create new user$user = new XoopsUser();
// Load existing user$user = new XoopsUser(123);मुख्य गुण
Section titled “मुख्य गुण”| संपत्ति | प्रकार | विवरण |
|---|---|---|
uid | int | उपयोगकर्ता आईडी |
uname | स्ट्रिंग | उपयोगकर्ता नाम |
email | स्ट्रिंग | ईमेल पता |
pass | स्ट्रिंग | पासवर्ड हैश |
uregdate | int | पंजीकरण टाइमस्टैम्प |
ulevel | int | उपयोगकर्ता स्तर (9=व्यवस्थापक, 1=उपयोगकर्ता) |
groups | सारणी | समूह आईडी |
permissions | सारणी | अनुमति झंडे |
कोर तरीके
Section titled “कोर तरीके”getID / getUid
Section titled “getID / getUid”उपयोगकर्ता की आईडी प्राप्त करता है.
public function getID(): intpublic function getUid(): int // Aliasरिटर्न: int - उपयोगकर्ता आईडी
उदाहरण:
$user = new XoopsUser(1);echo $user->getID(); // 1echo $user->getUid(); // 1getUnameReal
Section titled “getUnameReal”उपयोगकर्ता का प्रदर्शन नाम प्राप्त करता है.
public function getUnameReal(): stringरिटर्न: string - उपयोगकर्ता का वास्तविक नाम
उदाहरण:
$realName = $user->getUnameReal();echo "Hello, $realName";ईमेल प्राप्त करें
Section titled “ईमेल प्राप्त करें”उपयोगकर्ता का ईमेल पता प्राप्त करता है.
public function getEmail(): stringरिटर्न: string - ईमेल पता
उदाहरण:
$email = $user->getEmail();mail($email, 'Welcome', 'Welcome to XOOPS');getVar / setVar
Section titled “getVar / setVar”उपयोगकर्ता वैरिएबल प्राप्त या सेट करता है।
public function getVar(string $key, string $format = 's'): mixedpublic function setVar(string $key, mixed $value, bool $notGpc = false): boolउदाहरण:
// Get values$username = $user->getVar('uname');$email = $user->getVar('email', 's'); // Formatted for display
// Set values$user->setVar('uname', 'newusername');$user->setVar('email', 'user@example.com');समूह प्राप्त करें
Section titled “समूह प्राप्त करें”उपयोगकर्ता की समूह सदस्यता प्राप्त करता है।
public function getGroups(): arrayरिटर्न: array - समूह आईडी की श्रृंखला
उदाहरण:
$groups = $user->getGroups();echo "Member of " . count($groups) . " groups";समूह में है
Section titled “समूह में है”जाँचता है कि उपयोगकर्ता किसी समूह से संबंधित है या नहीं।
public function isInGroup(int $groupId): boolपैरामीटर:
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
$groupId | int | चेक करने के लिए ग्रुप आईडी |
रिटर्न: bool - यदि समूह में है तो सत्य है
उदाहरण:
if ($user->isInGroup(1)) { // 1 = Webmasters echo 'User is a webmaster';}एडमिन है
Section titled “एडमिन है”जाँचता है कि उपयोगकर्ता प्रशासक है या नहीं।
public function isAdmin(): boolरिटर्न: bool - यदि व्यवस्थापक है तो सही है
उदाहरण:
if ($user->isAdmin()) { // Show admin controls echo '<a href="admin/">Admin Panel</a>';}प्रोफ़ाइल प्राप्त करें
Section titled “प्रोफ़ाइल प्राप्त करें”उपयोगकर्ता प्रोफ़ाइल जानकारी प्राप्त करता है.
public function getProfile(): arrayरिटर्न: array - प्रोफ़ाइल डेटा
उदाहरण:
$profile = $user->getProfile();echo 'Bio: ' . $profile['bio'];सक्रिय है
Section titled “सक्रिय है”जाँचता है कि उपयोगकर्ता खाता सक्रिय है या नहीं।
public function isActive(): boolरिटर्न: bool - यदि सक्रिय है तो सत्य है
उदाहरण:
if ($user->isActive()) { // Allow user access} else { // Restrict access}अपडेटलास्टलॉगिन
Section titled “अपडेटलास्टलॉगिन”उपयोगकर्ता के अंतिम लॉगिन टाइमस्टैम्प को अपडेट करता है।
public function updateLastLogin(): boolरिटर्न: bool - सफलता पर सच
उदाहरण:
if ($user->updateLastLogin()) { echo 'Login recorded';}XoopsGroup कक्षा
Section titled “XoopsGroup कक्षा”उपयोगकर्ता समूहों और अनुमतियों का प्रबंधन करता है।
कक्षा अवलोकन
Section titled “कक्षा अवलोकन”namespace Xoops\Core\User;
class XoopsGroup extends XoopsObject{ protected int $groupid = 0; protected string $name = ''; protected string $description = ''; protected int $group_type = 0; protected array $users = [];}स्थिरांक
Section titled “स्थिरांक”| लगातार | मूल्य | विवरण |
|---|---|---|
TYPE_NORMAL | 0 | सामान्य उपयोगकर्ता समूह |
TYPE_ADMIN | 1 | प्रशासनिक समूह |
TYPE_SYSTEM | 2 | सिस्टम समूह |
नाम प्राप्त करें
Section titled “नाम प्राप्त करें”समूह का नाम मिलता है.
public function getName(): stringरिटर्न: string - समूह का नाम
उदाहरण:
$group = new XoopsGroup(1);echo $group->getName(); // "Webmasters"विवरण प्राप्त करें
Section titled “विवरण प्राप्त करें”समूह विवरण प्राप्त करता है.
public function getDescription(): stringरिटर्न: string - विवरण
उदाहरण:
echo $group->getDescription();उपयोगकर्ता प्राप्त करें
Section titled “उपयोगकर्ता प्राप्त करें”समूह के सदस्य मिलते हैं.
public function getUsers(): arrayरिटर्न: array - उपयोगकर्ता आईडी की श्रृंखला
उदाहरण:
$users = $group->getUsers();echo "Group has " . count($users) . " members";addUser
Section titled “addUser”किसी उपयोगकर्ता को समूह में जोड़ता है.
public function addUser(int $uid): boolपैरामीटर:
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
$uid | int | उपयोगकर्ता आईडी |
रिटर्न: bool - सफलता पर सच
उदाहरण:
$group = new XoopsGroup(2); // Editors$group->addUser(123);$groupHandler->insert($group);उपयोगकर्ता हटाएँ
Section titled “उपयोगकर्ता हटाएँ”किसी उपयोगकर्ता को समूह से हटा देता है.
public function removeUser(int $uid): boolउदाहरण:
$group->removeUser(123);उपयोगकर्ता प्रमाणीकरण
Section titled “उपयोगकर्ता प्रमाणीकरण”लॉगिन प्रक्रिया
Section titled “लॉगिन प्रक्रिया”/** * User login */function xoops_user_login(string $uname, string $pass, bool $rememberMe = false): ?XoopsUser{ global $xoopsDB;
// Sanitize username $uname = trim($uname);
// Get user from database $query = $xoopsDB->prepare( 'SELECT * FROM ' . $xoopsDB->prefix('users') . ' WHERE uname = ? AND active = 1' ); $query->bind_param('s', $uname); $query->execute(); $result = $query->get_result();
if ($result->num_rows === 0) { return null; // User not found }
$row = $result->fetch_assoc();
// Verify password if (!password_verify($pass, $row['pass'])) { return null; // Invalid password }
// Load user object $user = new XoopsUser($row['uid']);
// Update last login $user->updateLastLogin();
// Handle "Remember Me" if ($rememberMe) { // Set persistent cookie setcookie( 'xoops_user_remember', $user->uid(), time() + (30 * 24 * 60 * 60), // 30 days '/', $_SERVER['HTTP_HOST'] ?? '' ); }
return $user;}```### पासवर्ड प्रबंधन
```php/** * Hash password securely */function xoops_hash_password(string $password): string{ return password_hash($password, PASSWORD_BCRYPT, [ 'cost' => 12 ]);}
/** * Verify password */function xoops_verify_password(string $password, string $hash): bool{ return password_verify($password, $hash);}
/** * Check if password needs rehashing */function xoops_password_needs_rehash(string $hash): bool{ return password_needs_rehash($hash, PASSWORD_BCRYPT, [ 'cost' => 12 ]);}सत्र प्रबंधन
Section titled “सत्र प्रबंधन”सत्र कक्षा
Section titled “सत्र कक्षा”namespace Xoops\Core;
class SessionManager{ protected array $data = []; protected string $sessionId = '';
public function start(): void {} public function get(string $key): mixed {} public function set(string $key, mixed $value): void {} public function destroy(): void {}}सत्र विधियाँ
Section titled “सत्र विधियाँ”सत्र प्रारंभ करें
Section titled “सत्र प्रारंभ करें”<?phpsession_start();
// Regenerate session ID for securitysession_regenerate_id(true);
// Set session timeoutini_set('session.gc_maxlifetime', 3600); // 1 hour
// Store user in sessionif ($user) { $_SESSION['xoops_user'] = $user; $_SESSION['xoops_uid'] = $user->getID(); $_SESSION['xoops_uname'] = $user->getVar('uname');}जाँच सत्र
Section titled “जाँच सत्र”/** * Get current user from session */function xoops_get_current_user(): ?XoopsUser{ if (isset($_SESSION['xoops_user']) && $_SESSION['xoops_user'] instanceof XoopsUser) { return $_SESSION['xoops_user']; } return null;}
/** * Check if user is logged in */function xoops_is_user_logged_in(): bool{ return isset($_SESSION['xoops_uid']) && $_SESSION['xoops_uid'] > 0;}सत्र नष्ट करें
Section titled “सत्र नष्ट करें”/** * User logout */function xoops_user_logout(){ global $xoopsUser;
// Log the logout if ($xoopsUser) { error_log('User ' . $xoopsUser->getVar('uname') . ' logged out'); }
// Destroy session data $_SESSION = [];
// Delete session cookie if (ini_get('session.use_cookies')) { $params = session_get_cookie_params(); setcookie( session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly'] ); }
// Destroy session session_destroy();}अनुमति प्रणाली
Section titled “अनुमति प्रणाली”अनुमति स्थिरांक
Section titled “अनुमति स्थिरांक”| लगातार | मूल्य | विवरण |
|---|---|---|
XOOPS_PERMISSION_NONE | 0 | कोई अनुमति नहीं |
XOOPS_PERMISSION_VIEW | 1 | सामग्री देखें |
XOOPS_PERMISSION_SUBMIT | 2 | सामग्री सबमिट करें |
XOOPS_PERMISSION_EDIT | 4 | सामग्री संपादित करें |
XOOPS_PERMISSION_DELETE | 8 | सामग्री हटाएं |
XOOPS_PERMISSION_ADMIN | 16 | व्यवस्थापक पहुंच |
अनुमति जाँचना
Section titled “अनुमति जाँचना”/** * Check if user has permission */function xoops_check_permission($user, $resource, $permission){ if (!$user) { return false; }
// Admins have all permissions if ($user->isAdmin()) { return true; }
// Check group permissions $groups = $user->getGroups(); foreach ($groups as $groupId) { if (xoops_group_has_permission($groupId, $resource, $permission)) { return true; } }
return false;}उपयोगकर्ता हैंडलर
Section titled “उपयोगकर्ता हैंडलर”UserHandler उपयोगकर्ता दृढ़ता संचालन का प्रबंधन करता है।
/** * Get user handler */$userHandler = xoops_getHandler('user');
/** * Create new user */$user = new XoopsUser();$user->setVar('uname', 'newuser');$user->setVar('email', 'user@example.com');$user->setVar('pass', xoops_hash_password('password123'));$user->setVar('uregdate', time());$user->setVar('uactive', 1);
if ($userHandler->insert($user)) { echo 'User created with ID: ' . $user->getID();}
/** * Update user */$user = $userHandler->get(123);$user->setVar('email', 'newemail@example.com');$userHandler->insert($user);
/** * Get user by name */$user = $userHandler->findByUsername('john');
/** * Delete user */$userHandler->delete($user);
/** * Search users */$criteria = new CriteriaCompo();$criteria->add(new Criteria('uname', '%admin%', 'LIKE'));$users = $userHandler->getObjects($criteria);संपूर्ण उपयोगकर्ता प्रबंधन उदाहरण
Section titled “संपूर्ण उपयोगकर्ता प्रबंधन उदाहरण”<?php/** * Complete user authentication and profile example */
require_once XOOPS_ROOT_PATH . '/include/common.inc.php';
$xoopsUser = $GLOBALS['xoopsUser'];
// Check if user is logged inif (!$xoopsUser || !$xoopsUser->isActive()) { redirect_header(XOOPS_URL, 3, 'Please login');}
// Get user handler$userHandler = xoops_getHandler('user');
// Get current user with fresh data$currentUser = $userHandler->get($xoopsUser->getID());
// User profile pageecho '<h1>Profile: ' . htmlspecialchars($currentUser->getVar('uname')) . '</h1>';
echo '<div class="user-profile">';echo '<p><strong>Username:</strong> ' . htmlspecialchars($currentUser->getVar('uname')) . '</p>';echo '<p><strong>Email:</strong> ' . htmlspecialchars($currentUser->getVar('email')) . '</p>';echo '<p><strong>Registered:</strong> ' . date('Y-m-d H:i:s', $currentUser->getVar('uregdate')) . '</p>';echo '<p><strong>Groups:</strong> ';
$groupHandler = xoops_getHandler('group');$groups = $currentUser->getGroups();$groupNames = [];foreach ($groups as $groupId) { $group = $groupHandler->get($groupId); if ($group) { $groupNames[] = htmlspecialchars($group->getName()); }}echo implode(', ', $groupNames);echo '</p>';
// Admin statusif ($currentUser->isAdmin()) { echo '<p><strong>Status:</strong> Administrator</p>';}
echo '</div>';
// Change password formif ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['change_password'])) { $oldPassword = $_POST['old_password'] ?? ''; $newPassword = $_POST['new_password'] ?? ''; $confirmPassword = $_POST['confirm_password'] ?? '';
// Verify old password if (!password_verify($oldPassword, $currentUser->getVar('pass'))) { echo '<div class="error">Current password is incorrect</div>'; } elseif ($newPassword !== $confirmPassword) { echo '<div class="error">New passwords do not match</div>'; } elseif (strlen($newPassword) < 6) { echo '<div class="error">Password must be at least 6 characters</div>'; } else { // Update password $currentUser->setVar('pass', xoops_hash_password($newPassword)); if ($userHandler->insert($currentUser)) { echo '<div class="success">Password changed successfully</div>'; } else { echo '<div class="error">Failed to update password</div>'; } }}
// Password change formecho '<form method="post">';echo '<h3>Change Password</h3>';echo '<div class="form-group">';echo '<label>Current Password:</label>';echo '<input type="password" name="old_password" required>';echo '</div>';echo '<div class="form-group">';echo '<label>New Password:</label>';echo '<input type="password" name="new_password" required>';echo '</div>';echo '<div class="form-group">';echo '<label>Confirm Password:</label>';echo '<input type="password" name="confirm_password" required>';echo '</div>';echo '<button type="submit" name="change_password">Change Password</button>';echo '</form>';सर्वोत्तम प्रथाएँ
Section titled “सर्वोत्तम प्रथाएँ”- हैश पासवर्ड - पासवर्ड हैशिंग के लिए हमेशा bcrypt या argon2 का उपयोग करें
- इनपुट मान्य करें - सभी उपयोगकर्ता इनपुट को मान्य और स्वच्छ करें
- अनुमतियाँ जाँचें - कार्यों से पहले हमेशा उपयोगकर्ता की अनुमतियाँ सत्यापित करें
- सत्रों का सुरक्षित रूप से उपयोग करें - लॉगिन पर सत्र आईडी पुन: उत्पन्न करें
- लॉग गतिविधियां - लॉग लॉगिन, लॉगआउट और महत्वपूर्ण क्रियाएं
- दर सीमित करना - लॉगिन प्रयास दर सीमित करना लागू करें
- HTTPS केवल - प्रमाणीकरण के लिए हमेशा HTTPS का उपयोग करें
- समूह प्रबंधन - अनुमति संगठन के लिए समूहों का उपयोग करें
संबंधित दस्तावेज़ीकरण
Section titled “संबंधित दस्तावेज़ीकरण”- ../कर्नेल/कर्नेल-क्लासेस - कर्नेल सेवाएँ और बूटस्ट्रैपिंग
- ../डेटाबेस/QueryBuilder - उपयोगकर्ता डेटा के लिए डेटाबेस क्वेरीज़
- ../Core/XoopsObject - बेस ऑब्जेक्ट क्लास
यह भी देखें: XOOPS उपयोगकर्ता API | PHP सुरक्षा