اذهب إلى المحتوى

Ayman Abdullah3

الأعضاء
  • المساهمات

    1
  • تاريخ الانضمام

  • تاريخ آخر زيارة

إنجازات Ayman Abdullah3

عضو مبتدئ

عضو مبتدئ (1/3)

1

السمعة بالموقع

  1. <?php session_start(); // توليد توكن CSRF عند بدء الجلسة if (empty($_SESSION['token'])) { $_SESSION['token'] = bin2hex(random_bytes(32)); } // الاتصال بقاعدة البيانات $servername = "localhost"; $username = "root"; $password = ""; $dbname = "test_db"; $conn = new mysqli($servername, $username, $password, $dbname); // تحقق من الاتصال if ($conn->connect_error) { error_log("فشل الاتصال: " . $conn->connect_error); // سجل الخطأ في ملف السجل die("حدث خطأ أثناء الاتصال بقاعدة البيانات."); } // تسجيل المستخدم if (isset($_POST['register'])) { // التحقق من توكن CSRF if (!hash_equals($_SESSION['token'], $_POST['token'])) { die("خطأ: التوكن غير صحيح."); } // التحقق من المدخلات $username = trim($_POST['username']); $password = $_POST['password']; // التحقق من طول اسم المستخدم (من 3 إلى 20 حرف) if (strlen($username) < 3 || strlen($username) > 20) { die("خطأ: يجب أن يكون اسم المستخدم بين 3 و 20 حرفًا."); } // التحقق من وجود رموز غير مسموح بها في اسم المستخدم if (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) { die("خطأ: اسم المستخدم يمكن أن يحتوي على أحرف إنجليزية وأرقام وشرطة سفلية فقط."); } // التحقق من طول كلمة المرور (يجب أن تكون على الأقل 8 أحرف) if (strlen($password) < 8) { die("خطأ: يجب أن تكون كلمة المرور على الأقل 8 أحرف."); } // تشفير كلمة المرور $hashed_password = password_hash($password, PASSWORD_DEFAULT); // استخدام إعدادات مستعدة للحماية من SQL Injection $stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)"); if ($stmt) { // ربط المتغيرات $stmt->bind_param("ss", $username, $hashed_password); // تنفيذ الاستعلام if ($stmt->execute()) { echo "تم التسجيل بنجاح!<br>"; echo "اسم المستخدم المدخل: " . htmlspecialchars($username, ENT_QUOTES, 'UTF-8'); } else { error_log("خطأ أثناء تنفيذ الاستعلام: " . $stmt->error); // سجل الخطأ في ملف السجل echo "حدث خطأ أثناء التسجيل. يرجى المحاولة لاحقًا."; } // إغلاق البيان $stmt->close(); } else { error_log("خطأ في التحضير: " . $conn->error); // سجل الخطأ في ملف السجل echo "حدث خطأ أثناء معالجة الطلب."; } } $conn->close(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>تسجيل الاشتراك</title> </head> <body> <h2>تسجيل الاشتراك</h2> <form method="post" action=""> <input type="text" name="username" placeholder="اسم المستخدم" required><br> <input type="password" name="password" placeholder="كلمة المرور" required><br> <input type="hidden" name="token" value="<?= htmlspecialchars($_SESSION['token'], ENT_QUOTES, 'UTF-8') ?>"> <button type="submit" name="register">تسجيل</button> </form> </body> </html> اريد التاكد هل تم حمابته من بعض الثغرات المستخدمه في الكود
×
×
  • أضف...