File manager - Edit - /home/webapp69.cm.in.th/u69319090017/shop17/register.php
Back
<?php session_start(); require_once 'db.php'; $error = ""; $success = ""; // โหลดการตั้งค่าภาษาจากเซสชันของ Noa Shop หากมี $lang = $_SESSION['lang'] ?? 'th'; $reg_txt = [ 'th' => [ 'title' => '📝 สมัครสมาชิกใหม่', 'desc' => 'ร่วมเป็นส่วนหนึ่งของ Noa Shop เพื่อเลือกช็อปปิ้งเสื้อผ้า หรือเปิดร้านค้าของตนเอง', 'lbl_name' => 'ชื่อ-นามสกุล', 'ph_name' => 'กรุณากรอกชื่อและนามสกุลจริงของคุณ...', 'lbl_email' => 'อีเมลผู้ใช้งาน (Email Address)', 'ph_email' => 'example@email.com', 'lbl_password' => 'รหัสผ่านหลัก (Password)', 'ph_password' => 'กำหนดรหัสผ่านอย่างน้อย 6 ตัวอักษร...', 'lbl_role' => 'ประเภทผู้ใช้งาน (Account Type)', 'role_buyer' => 'ผู้ซื้อสินค้า (Buyer)', 'role_seller' => 'เปิดร้านขายของ (Seller)', 'btn_submit' => 'สร้างบัญชีผู้ใช้งาน', 'login_prompt' => 'มีบัญชีอยู่แล้ว?', 'login_link' => 'เข้าสู่ระบบที่นี่', 'back_link' => '← ย้อนกลับไปหน้าร้านหลัก' ], 'en' => [ 'title' => '📝 User Registration', 'desc' => 'Create an account to start purchasing clothing products or open your own merchant shop.', 'lbl_name' => 'Full Name', 'ph_name' => 'Enter your full name...', 'lbl_email' => 'Email Address', 'ph_email' => 'example@email.com', 'lbl_password' => 'Password', 'ph_password' => 'At least 6 characters...', 'lbl_role' => 'Account Type', 'role_buyer' => 'Buyer Account', 'role_seller' => 'Seller Store', 'btn_submit' => 'Create Account', 'login_prompt' => 'Already have an account?', 'login_link' => 'Log In here', 'back_link' => '← Return to main store' ] ]; $rt = $reg_txt[$lang]; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = trim($_POST['name'] ?? ''); $email = trim($_POST['email'] ?? ''); $password = $_POST['password'] ?? ''; $role = $_POST['role'] ?? 'buyer'; if (empty($name) || empty($email) || empty($password)) { $error = ($lang == 'th') ? "กรุณากรอกข้อมูลให้ครบถ้วนทุกช่อง" : "Please fill in all fields."; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $error = ($lang == 'th') ? "รูปแบบอีเมลไม่ถูกต้อง" : "Invalid email format."; } elseif (strlen($password) < 6) { $error = ($lang == 'th') ? "รหัสผ่านต้องยาวอย่างน้อย 6 ตัวอักษร" : "Password must be at least 6 characters."; } else { try { // ตรวจสอบว่าอีเมลนี้ถูกใช้งานไปแล้วหรือไม่ $stmt = $pdo->prepare("SELECT COUNT(*) FROM users WHERE email = ?"); $stmt->execute([$email]); if ($stmt->fetchColumn() > 0) { $error = ($lang == 'th') ? "อีเมลนี้ถูกใช้งานไปแล้วในระบบ" : "This email is already registered."; } else { $hashedPass = password_hash($password, PASSWORD_DEFAULT); $stmt = $pdo->prepare("INSERT INTO users (name, email, password, role) VALUES (?, ?, ?, ?)"); $stmt->execute([$name, $email, $hashedPass, $role]); // หากลงทะเบียนเป็นผู้ขาย ให้สร้างร้านค้าเริ่มต้นด้วย if ($role === 'seller') { $sellerId = $pdo->lastInsertId(); $stmtShop = $pdo->prepare("INSERT INTO shops (seller_id, name, description, status) VALUES (?, ?, ?, 'approved')"); $stmtShop->execute([$sellerId, 'ร้านค้าของ ' . $name, 'คำอธิบายร้านค้าแฟชั่นมินิมอลเริ่มต้น']); } $success = ($lang == 'th') ? "🎉 สมัครสมาชิกสำเร็จ! กำลังพาท่านไปหน้าเข้าสู่ระบบ..." : "🎉 Registration successful! Redirecting you to login page..."; header("refresh:2;url=login.php"); } } catch (PDOException $e) { $error = ($lang == 'th') ? "เกิดข้อผิดพลาดในการลงทะเบียน: " : "Error occurred during registration: " . $e->getMessage(); } } } ?> <!DOCTYPE html> <html lang="<?= $lang ?>"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title><?= ($lang == 'th') ? 'สมัครสมาชิกผู้ใช้งานใหม่' : 'Sign Up' ?> - Noa Shop</title> <script src="https://cdn.tailwindcss.com"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/> <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&family=Sarabun:wght@300;400;600;800&display=swap" rel="stylesheet"> <style> body { font-family: 'Outfit', 'Sarabun', sans-serif; background: linear-gradient(135deg, #090d16 0%, #0f172a 40%, #1e1b4b 80%, #2e1005 100%); } .glass-panel { background: rgba(15, 23, 42, 0.65); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px rgba(255, 255, 255, 0.08) solid; } </style> </head> <body class="min-h-screen flex items-center justify-center p-4 text-slate-100 antialiased"> <div class="max-w-md w-full p-8 rounded-3xl glass-panel shadow-2xl animate__animated animate__zoomIn border border-slate-700/30"> <!-- Header --> <div class="text-center mb-6"> <div class="inline-flex p-3 rounded-full bg-amber-500/10 text-amber-500 mb-3 border border-amber-500/20"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-8 h-8"> <path stroke-linecap="round" stroke-linejoin="round" d="M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z" /> </svg> </div> <h2 class="text-2xl font-black text-amber-500 tracking-tight"><?= $rt['title'] ?></h2> <p class="text-xs text-slate-400 mt-1.5 leading-relaxed"><?= $rt['desc'] ?></p> </div> <!-- Alert Notification --> <?php if (!empty($error)): ?> <div class="p-3 mb-5 rounded-2xl bg-red-500/10 border border-red-500/30 text-red-400 font-bold text-center text-xs animate__animated animate__shakeX"> ⚠️ <?= htmlspecialchars($error) ?> </div> <?php endif; ?> <?php if (!empty($success)): ?> <div class="p-3 mb-5 rounded-2xl bg-green-500/10 border border-green-500/30 text-green-400 font-bold text-center text-xs animate__animated animate__bounceIn"> 🎉 <?= htmlspecialchars($success) ?> </div> <?php endif; ?> <!-- Form --> <form action="register.php" method="POST" class="space-y-4"> <!-- Full Name --> <div> <label class="block text-xs font-bold uppercase tracking-wider text-slate-400 mb-1.5"><?= $rt['lbl_name'] ?></label> <input type="text" name="name" required class="w-full px-4 py-3 rounded-xl bg-slate-950/50 border border-slate-700 text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent text-sm transition" placeholder="<?= $rt['ph_name'] ?>"> </div> <!-- Email --> <div> <label class="block text-xs font-bold uppercase tracking-wider text-slate-400 mb-1.5"><?= $rt['lbl_email'] ?></label> <input type="email" name="email" required class="w-full px-4 py-3 rounded-xl bg-slate-950/50 border border-slate-700 text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent text-sm transition" placeholder="<?= $rt['ph_email'] ?>"> </div> <!-- Password --> <div> <label class="block text-xs font-bold uppercase tracking-wider text-slate-400 mb-1.5"><?= $rt['lbl_password'] ?></label> <input type="password" name="password" required class="w-full px-4 py-3 rounded-xl bg-slate-950/50 border border-slate-700 text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent text-sm transition" placeholder="<?= $rt['ph_password'] ?>"> </div> <!-- Role Selection --> <div> <label class="block text-xs font-bold uppercase tracking-wider text-slate-400 mb-2"><?= $rt['lbl_role'] ?></label> <div class="grid grid-cols-2 gap-4"> <label class="flex items-center justify-center border border-slate-700/60 rounded-xl p-3.5 cursor-pointer bg-slate-950/20 hover:bg-slate-950/50 transition has-[:checked]:border-amber-500 has-[:checked]:bg-amber-500/5"> <input type="radio" name="role" value="buyer" checked class="accent-amber-500 mr-2"> <span class="text-xs text-slate-300 font-semibold"><?= $rt['role_buyer'] ?></span> </label> <label class="flex items-center justify-center border border-slate-700/60 rounded-xl p-3.5 cursor-pointer bg-slate-950/20 hover:bg-slate-950/50 transition has-[:checked]:border-amber-500 has-[:checked]:bg-amber-500/5"> <input type="radio" name="role" value="seller" class="accent-amber-500 mr-2"> <span class="text-xs text-slate-300 font-semibold"><?= $rt['role_seller'] ?></span> </label> </div> </div> <button type="submit" class="w-full py-3.5 rounded-xl font-bold bg-gradient-to-r from-amber-500 to-orange-600 hover:from-amber-600 hover:to-orange-700 text-white shadow-lg shadow-orange-950/20 hover:shadow-orange-500/10 transition transform active:scale-95 text-sm mt-3"> <?= $rt['btn_submit'] ?> </button> </form> <!-- Redirect to Login --> <div class="mt-6 text-center border-t border-slate-800 pt-4 flex flex-col gap-2.5"> <div class="text-xs text-slate-400"> <?= $rt['login_prompt'] ?> <a href="login.php" class="text-amber-500 hover:text-amber-400 font-bold transition underline hover:no-underline"> <?= $rt['login_link'] ?> </a> </div> <a href="index.php" class="text-xs text-slate-500 hover:text-slate-300 transition font-semibold mt-1"> <?= $rt['back_link'] ?> </a> </div> </div> </body> </html>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.22 |
proxy
|
phpinfo
|
Settings