D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
skyconb
/
newsyacine
/
Filename :
edit_user.php
back
Copy
<?php // =============================================== // PHP: معالجة تعديل المستخدم // =============================================== session_start(); include 'db_connect.php'; $message = ''; $error = ''; $user_to_edit = null; // التحقق من تسجيل الدخول وصلاحية المسؤول $is_admin = ($_SESSION['admin_logged_in'] ?? false) === true && ($_SESSION['admin_role'] ?? 'user') === 'admin'; if (!$is_admin) { $_SESSION['error'] = "ليس لديك الصلاحية للوصول إلى هذه الصفحة."; header("Location: admin.php"); exit(); } // 1. جلب بيانات المستخدم المراد تعديله $user_id = $_GET['id'] ?? null; if (!$user_id || !is_numeric($user_id)) { $_SESSION['error'] = "معرف المستخدم غير صالح."; header("Location: admin.php?section=users"); exit(); } $sql = "SELECT id, username, email, role FROM users WHERE id = ?"; $stmt = $conn->prepare($sql); if ($stmt) { $stmt->bind_param("i", $user_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows === 1) { $user_to_edit = $result->fetch_assoc(); } else { $_SESSION['error'] = "المستخدم المطلوب غير موجود."; header("Location: admin.php?section=users"); exit(); } $stmt->close(); } // 2. معالجة نموذج التعديل (POST) if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit_user'])) { $new_username = trim($_POST['username']); $new_email = trim($_POST['email']); $new_role = $_POST['role']; $new_password = $_POST['password']; $update_fields = []; $update_params = []; $param_types = ""; // بناء استعلام التحديث بشكل ديناميكي // a. تحديث اسم المستخدم if ($new_username !== $user_to_edit['username']) { // التحقق من تكرار اسم المستخدم $check_sql = "SELECT id FROM users WHERE username = ? AND id != ?"; $check_stmt = $conn->prepare($check_sql); $check_stmt->bind_param("si", $new_username, $user_id); $check_stmt->execute(); $check_stmt->store_result(); if ($check_stmt->num_rows > 0) { $error = "اسم المستخدم هذا مستخدم بالفعل."; $check_stmt->close(); } else { $update_fields[] = "username = ?"; $update_params[] = $new_username; $param_types .= "s"; } } // b. تحديث البريد الإلكتروني والدور if (!$error) { $update_fields[] = "email = ?"; $update_params[] = $new_email; $param_types .= "s"; $update_fields[] = "role = ?"; $update_params[] = $new_role; $param_types .= "s"; // c. تحديث كلمة المرور (إذا تم إدخال واحدة) if (!empty($new_password)) { if (strlen($new_password) < 6) { $error = "كلمة المرور الجديدة يجب أن تكون 6 أحرف على الأقل."; } else { $hashed_password = password_hash($new_password, PASSWORD_DEFAULT); $update_fields[] = "password = ?"; $update_params[] = $hashed_password; $param_types .= "s"; } } } // تنفيذ التحديث إذا لم يكن هناك خطأ وكانت هناك حقول للتحديث if (!$error && count($update_fields) > 0) { $update_sql = "UPDATE users SET " . implode(', ', $update_fields) . " WHERE id = ?"; $stmt_update = $conn->prepare($update_sql); // إضافة ID المستخدم إلى نهاية المصفوفة لشرط WHERE $update_params[] = $user_id; $param_types .= "i"; // ربط المعاملات $stmt_update->bind_param($param_types, ...$update_params); if ($stmt_update->execute()) { $_SESSION['message'] = "تم تحديث المستخدم بنجاح!"; // إعادة التوجيه لـ admin.php لعرض رسالة النجاح header("Location: admin.php?section=users"); exit(); } else { $error = "خطأ في التحديث: " . $stmt_update->error; } $stmt_update->close(); } elseif (count($update_fields) === 0) { $error = "لم يتم إجراء أية تغييرات."; } // تحديث بيانات النموذج المعروضة بعد الفشل $user_to_edit['username'] = $new_username; $user_to_edit['email'] = $new_email; $user_to_edit['role'] = $new_role; } ?> <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>تعديل المستخدم</title> <style> /* CSS بسيط لتنسيق النموذج (يمكنك استخدام CSS من admin.php) */ body { font-family: Tahoma, sans-serif; margin: 0; background-color: #f0f2f5; display: flex; justify-content: center; align-items: center; min-height: 100vh; } .form-container { background-color: white; padding: 30px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); width: 450px; } h2 { text-align: center; color: #2c3e50; margin-bottom: 25px; } .form-group { margin-bottom: 15px; } .form-group label { display: block; margin-bottom: 5px; font-weight: bold; color: #34495e; } .form-group input[type="text"], .form-group input[type="email"], .form-group input[type="password"], .form-group select { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; font-size: 16px; } .submit-btn { width: 100%; background-color: #3498db; color: white; padding: 12px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; margin-top: 10px; transition: background-color 0.3s; } .submit-btn:hover { background-color: #2980b9; } .status-message { padding: 10px; margin-bottom: 15px; border-radius: 4px; text-align: center; font-weight: bold; } .error { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; } .back-link { display: block; text-align: center; margin-top: 20px; color: #3498db; text-decoration: none; } </style> </head> <body> <div class="form-container"> <h2>✏️ تعديل المستخدم: <?php echo htmlspecialchars($user_to_edit['username'] ?? 'خطأ'); ?></h2> <?php if ($error): ?><div class="status-message error"><?php echo $error; ?></div><?php endif; ?> <form method="POST"> <input type="hidden" name="user_id" value="<?php echo $user_to_edit['id'] ?? ''; ?>"> <div class="form-group"> <label for="username">اسم المستخدم:</label> <input type="text" id="username" name="username" required minlength="3" value="<?php echo htmlspecialchars($user_to_edit['username'] ?? ''); ?>"> </div> <div class="form-group"> <label for="email">البريد الإلكتروني (اختياري):</label> <input type="email" id="email" name="email" value="<?php echo htmlspecialchars($user_to_edit['email'] ?? ''); ?>"> </div> <div class="form-group"> <label for="role">الصلاحية:</label> <select id="role" name="role" required> <option value="user" <?php echo (($user_to_edit['role'] ?? '') == 'user') ? 'selected' : ''; ?>>مستخدم عادي (user)</option> <option value="admin" <?php echo (($user_to_edit['role'] ?? '') == 'admin') ? 'selected' : ''; ?>>مسؤول (admin)</option> </select> </div> <div class="form-group"> <label for="password">كلمة المرور الجديدة (اتركها فارغة لعدم التغيير):</label> <input type="password" id="password" name="password" minlength="6" placeholder="أدخل كلمة مرور جديدة إذا أردت التغيير"> </div> <button type="submit" name="edit_user" class="submit-btn">حفظ التعديلات</button> </form> <a href="admin.php?section=users" class="back-link">العودة لإدارة المستخدمين</a> </div> </body> </html> <?php $conn->close(); ?>