آموزش PHP   >   راهکارهای موثر در PHP > راهکار 1 : ثبت نام و شناسایی کاربران در وب سایت ها
بخش ششم - طراحی صفحه ثبت نام اعضای جدید در سایت

مقدمه :

یکی از مراحل اصلی در فرآیند ثبت نام اعضا برای سایت ، ساخت صفحه ثبت نام اعضای جدید است . این صفحه signup.php نام داشته و کد آن را از پوشه پروژه که دانلود کرده اید ، باز کنید . در این بخش به تشریح کد این صفحه خواهیم پرداخت .
در مرحله اول برای راهنمایی کاربران به صفحه ثبت نام ، لینکی با متن Sign Up را در صفحات سایت قرار داده تا کاربران با کلیک بر روی آن به صفحه ثبت نام راهنمایی شوند .

کد صفحه ثبت نام :

صفحه signup.php را باز نمایید . در این صفحه کدهای لازم برای عملیات ثبت نام کاربران طراحی شده است .
این کدها با یک تابع شروع می شود که برای جلوگیری از حملات اسکریپتی SQL Injection به بررسی کاراکترهای ورودی می پردازد . سپس تابع دیگری چک می کند ، آیا اطلاعات لازم از فرم ثبت نام با متد Post  ، ارسال شده اند یا خیر ؟ به کد زیر دقت نمایید :

کد $uname = $_POST['username'];
$pword = $_POST['password'];

$uname = htmlspecialchars($uname);
$pword = htmlspecialchars($pword);

پس از آنکه مقادیر نام کاربری و رمز عبور را از کاربر دریافت نمودیم ، در مرحله بعدی می خواهیم چک کنیم ، آیا تعداد کاراکترهای وارد شده برای هر مورد در اندازه مناسب قرار دارد یا خیر ؟
در کدی که طراحی نموده ایم ، چک شده آیا نام کاربری حداقل 10 کاراکتر و حداکثر 20 کاراکتر را داراست یا خیر ؟
همچنین حداقل کاراکتر مجاز برای رمز عبور 8 کاراکتر و حداکثر آن 16 عدد است . چنانچه مقادیر ورودی توسط کاربر به غیر از این تعداد باشد ، پیام های هشداری ، وی را از خطا مطلع ساخته و خواستار اصلاح پارامترها می شود . به کد زیر و نحوه عملکرد آن دقت نمایید :

کد $uLength = strlen($uname);
$pLength = strlen($pword);

if ($uLength >= 10 && $uLength <= 20) {
      $errorMessage = "";
     }
else {
      $errorMessage = $errorMessage . "Username must be between 10 and 20 characters" . "<BR>";
     }
if ($pLength >= 8 && $pLength <= 16) {
      $errorMessage = "";
     }
else {
     $errorMessage = $errorMessage . "Password must be between 8 and 16 characters" . "<BR>";
    }

پس از اینکه از اتصال صحیح به پایگاه داده مطمئن شدیم ، نوبت چک کردن نام کاربری است . بایستی چک کنیم که این نام کاربری قبلا توسط کاربر دیگری در پایگاه داده ثبت شده است یا خیر . زیرا امکان ثبت نام دو کاربر با نام کاربری یکسان در سیستم عضویت امکان پذیر نیست .
دستور زیر تعداد تمام رکوردهایی که مقدار فیلد نام کاربری آنها ( L1 ) برابر با نام کاربری وارد شده توسط کاربر باشد ، را می شمارد . اگر تعداد این رکوردها از صفر بیشتر باشد ( تعداد آن توسط متغیر num_rows$ مشخص می شود ) نشان دهنده آن است که قبلا این نام کاربری ثبت شده ، ولی اگر صفر باشد ، به معنای خالی بودن نام کاربری بوده و سپس دستورات لازم برای ثبت کاربر جدید اجرا می شود .

ولی اگر نام کاربری قبلا استفاده شده بود ، یک پیام خطا در متغیر errorMessage$ ایجاد می شود تا به کاربر این مشکل را اعلام نماید . به صورت زیر :

کد $SQL = "SELECT * FROM login WHERE L1 = $uname";
$result = mysql_query($SQL);
$num_rows = mysql_num_rows($result);
if ($num_rows > 0) {
    $errorMessage = "Username already taken";
   }
else {
   }

ثبت نام کاربری جدید در پایگاه داده :

اگر در مرحله قبل ، مقدار متغیر num_rows$ صفر بوده و نام کاربری تعیین شده قبلا استفاده نشده بود ، کدهای لازم برای درج نام کاربری و رمز عبور در فیلدهای مربوطه ذخیره می شود .
به وسیله دستور Insert Into مقادیر ( L1 و L2 ) برای نام کاربری و رمز عبور به ترتیب در فیلدهای مربوطه ذخیره می شود .

کد $SQL = "INSERT INTO login (L1, L2) VALUES ($uname, $pword)";
$result = mysql_query($SQL);
mysql_close($db_handle);

پس از اینکه نام کاربری جدید ذخیره شد ، می توانیم عملیات ذخیره Session به نام login را برابر با 1 قرار می دهد . بنابراین کاربر از این به بعد می تواند به مشاهده صفحات محتوای سایت بپردازد . همچنین پس از پایان عملیات ثبت نام کاربر جدید ، می توانیم وی را توسط یک دستور header به یک صفحه محتوا هدایت نمایید . به صورت زیر :

کد session_start();
$_SESSION['login'] = "1";
header ("Location: page1.php");

در مرحله بعدی که مرحله پایانی راهکار است به جمع بندی و ارائه چندین نکته که بایستی در طراحی کد ثبت نام به آنها دقت نماییم ، خواهیم پرداخت .



راجع این مطلب سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...         >>>>>  ورود به انجمن تخصصی


نطر خودتان درباره این صفحه  :

آیا مطالب این صفحه برای شما مناسب و مفید بوده است :

نام :               
آدرس Email :  

نظر شما :      
سوال امنیتی : جمع سه + پنج چنده ؟