সঠিক নাম দিন।
🇧🇩 +880
সঠিক বাংলাদেশি নম্বর দিন।
সঠিক ইমেইল ঠিকানা দিন।
ভেরিফিকেশন লিংক এই ইমেইলে পাঠানো হবে।
4–6 সংখ্যার PIN দিন।
PIN মিলছে না।

ইতিমধ্যে অ্যাকাউন্ট আছে? লগইন করুন

if (isLoggedIn()) redirect('/dashboard.php'); $error = ''; $success = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $token = $_POST['csrf_token'] ?? ''; if (!verifyCSRFToken($token)) { $error = 'নিরাপত্তা যাচাই ব্যর্থ। পুনরায় চেষ্টা করুন।'; } else { $name = trim($_POST['name'] ?? ''); $phone = trim($_POST['phone'] ?? ''); $email = trim($_POST['email'] ?? ''); $pin = $_POST['pin'] ?? ''; $pinConfirm = $_POST['pin_confirm'] ?? ''; // Validate if (empty($name) || strlen($name) < 2) { $error = 'সঠিক নাম দিন (কমপক্ষে ২ অক্ষর)।'; } elseif (!validateBDPhone($phone)) { $error = 'সঠিক বাংলাদেশি ফোন নম্বর দিন (01XXXXXXXXX)।'; } elseif (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) { $error = 'সঠিক ইমেইল ঠিকানা দিন।'; } elseif (strlen($pin) < PIN_MIN_LENGTH || strlen($pin) > PIN_MAX_LENGTH || !ctype_digit($pin)) { $error = PIN_MIN_LENGTH . '–' . PIN_MAX_LENGTH . ' সংখ্যার PIN দিন।'; } elseif ($pin !== $pinConfirm) { $error = 'PIN এবং কনফার্ম PIN মিলছে না।'; } elseif (!rateLimitCheck($_SERVER['REMOTE_ADDR'] ?? 'unknown', 'register', 5, 3600)) { $error = 'অনেকবার চেষ্টা করা হয়েছে। ১ ঘণ্টা পরে আবার চেষ্টা করুন।'; } else { $db = getDB(); // Check duplicate phone $stmt = $db->prepare("SELECT id FROM users WHERE phone = ? LIMIT 1"); $stmt->bind_param('s', $phone); $stmt->execute(); $dup = $stmt->get_result()->fetch_assoc(); $stmt->close(); if ($dup) { $error = 'এই ফোন নম্বরটি ইতিমধ্যে নিবন্ধিত।'; } else { $hash = hashPIN($pin); $emailVal = $email ?: null; $stmt = $db->prepare( "INSERT INTO users (phone, pin_hash, name, email, status) VALUES (?, ?, ?, ?, 'inactive')" ); $stmt->bind_param('ssss', $phone, $hash, $name, $emailVal); if ($stmt->execute()) { $stmt->close(); // Generate & send OTP $otp = generateOTP(); $exp = date('Y-m-d H:i:s', time() + OTP_EXPIRY_MINUTES * 60); $stmtO = $db->prepare("INSERT INTO otp_codes (phone, code, expires_at) VALUES (?, ?, ?)"); $stmtO->bind_param('sss', $phone, $otp, $exp); $stmtO->execute(); $stmtO->close(); sendOTP($phone, $otp); $_SESSION['reg_phone'] = $phone; redirect('/verify-otp.php?phone=' . urlencode($phone) . '&from=register'); } else { $error = 'রেজিস্ট্রেশন ব্যর্থ হয়েছে। পুনরায় চেষ্টা করুন।'; $stmt->close(); } } } } } $csrfToken = generateCSRFToken(); $pageTitle = 'রেজিস্টার'; $bodyClass = 'auth-page'; include __DIR__ . '/includes/header.php'; ?>
সঠিক নাম দিন।
🇧🇩 +880
সঠিক বাংলাদেশি নম্বর দিন।
4–6 সংখ্যার PIN দিন।
PIN মিলছে না।

ইতিমধ্যে অ্যাকাউন্ট আছে? লগইন করুন