آموزش ساخت فرم ثبت نام با php و mysql

daskhatmin فواد طهماسبی
118,794 بازدید
آموزش ساخت فرم ثبت نام با php

در این آموزش می خوام به شما نحوه ساختن سیستم ثبت نام با php در وبسایت رو آموزش بدم. اگرچه شاید برخی افراد فکر کنن کار سختی هست اما در این آمورش خواهند دید که ساده تر از چیزی است که فکر می کنن و با کمی کد نویسی ساده امکان پذیره . در عمل شما نیاز به یک جدول و یک سرور php دارید .  در این آموزش شما مطالب زیر رو یاد می گیرید:

  1. نحوه ایجاد فایل نصب برای اسکریپت
  2. نحوه اتصال به پایگاه داده
  3. نحوه ثبت نام کاربر
  4. ذخیره اطلاعات در پایگاه داده
  5. ورود یا همون login کاربر
  6. نحوه شناسایی کاربر در صفحات
  7. نحوه خروج از سیستم

قبل از شروع کار، شما به یک پایگاه داده نیاز دارید تا در برنامه از آن استفاده کنید. در ابتدا شما می توانید یک پایگاه داده با نام myDB ایجاد کنید در این پایگاه داده شما نیاز به یک جدول دارید . در این جدول نیز باید اطلاعات زیر وجود داشته باشند :

  1. (userid (auto increment
  2. username
  3. password
  4. email address

ساختار فایل install.php

حالا ما ساختار کلی از جدول را داریم ، اکنون می توانیم دستورات زیر را در mysql  یا از phpmyadmin اجرا کنیم تا جدول ساخته شود. دستورات یا کدهای لازم برای ساخت جدول “usersystem” در پایگاه داده”myDB” رو می تونید در سطر بعدی ببینید :

CREATE TABLE myDB.usersystem (
userid INT(5) NOT NULL AUTO_INCREMENT , 
username VARCHAR( 50 ) NOT NULL , 
password VARCHAR( 32 ) NOT NULL , 
email VARCHAR( 50 ) NOT NULL , 
PRIMARY KEY ( userid )
)

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

<?php
//نصب پایگاه داده

include('index.php');
// establish a connection to the database server
if(!$connection = mysqli_connect('localhost', 'root', '')) {
    die("ERROR: Can't Connect To Database Server;" . mysqli_error($connection));
}
mysqli_query($connection, "CREATE DATABASE myDB");
if(!mysqli_select_db($connection, 'myDB')) {
    mysqli_close($connection);
    die("ERROR: Can't Select Database;" . mysqli_error($connection));
}
mysqli_set_charset($connection, 'utf8');
$query = "
CREATE TABLE IF NOT EXISTS usersystem ( 
    userid INT(5) NOT NULL AUTO_INCREMENT , 
    username VARCHAR( 50 ) NOT NULL , 
    password VARCHAR( 32 ) NOT NULL , 
    email VARCHAR( 50 ) NOT NULL , 
    PRIMARY KEY ( userid )
)";

$result = mysqli_query($connection, $query);
if (!$result) {
    echo'>> Can\'t Creat Users Table < < '.  mysqli_error($connection).'<br />';
} else {
    echo '[ Users Table Created Successfully ] <br />';
}
?>
<br><hr><a href="index.php">Index Page</a><br>

ساختار فایل db.php

اولین فایل ، فایل ساختار ما خواهد بود که در این فایل function ها و دستورات اتصال ما به پایگاه داده قرار دارد. این فایل بعدا در ابتدای تمامی صفحات توسط include قرار داده می شود.

ابتدا ما ()sesssion_start را در خط اول می نویسیم . این دستور ما رو برای تشخیص کاربر وارد شده کمک خواهد کرد. در کل به عبارتی  session  برای هر کاربر یک آی دی ایجاد می کنه تا توسط اون کاربران در سیستم شناخته بشن تقریبا مانند cookie  در مرورگر برای وبسایت .

این کد به شکل زیر استفاده میشه :

<?php 
   session_start();
?>

در مرحله بعد باید با پایگاه داده اتصال برقرار کنیم . از توابع ()mysqli_connect و ()mysqli_select_db  برای اینکار استفاده می کنیم . این دو خط  هم به صورت زیراستفاده میشن :

<?php
  session_start();
  $connection = mysqli_connect("localhost", "username of your database", "password of database"); 
  mysqli_select_db($connection, "myDB");
?>

حالا تابع ()user_login رو درست می کنیم که کاربر خواست وارد بشه از اون استفاده کنیم. کدهای لازم برای ورود کاربر و کدهای لازم برای بررسی نام کاربری و کلمه عبور رو می تونید در ادامه ببینید :

<?php
  session_start();
  $connection = mysqli_connect("localhost", "root", "");
  mysql_select_db($connection, "myDB"); 

  //تابع بررسی صحت کاربر
function user_login ($username, $password) { 
  $username = mysqli_real_escape_string($connection, $username); 
  // چون پسورد در پایگاه داده به صورت کد شده قرار دارد ما نیز ابتدا پسورد دریافتی را کد کرده با پسورد موجود در پایگاه داده بررسی میکنیم
  $password = md5($password);
  $result = mysqli_query($connection, "SELECT * FROM usersystem WHERE username = '".$username."' AND password = '".$password."' LIMIT 1"); 
  $rows = mysqli_num_rows($result); 
  if ($rows<=0 ){ 
      echo "Incorrect username/password"; 
    }
  else { 
  // اگر کاربر تایید شد از طریق نشست ورود کاربر را مشخص میکنیم.
     $_SESSION['username'] = true;
	 echo "<a href='adminpage.php'>you're login successfuly [Go To ADMINPAGE]</a><br><br>";
    } 
 }
?>

حالا میریم سراغ قسمت ثبت نام کاربر :

ساختار فایل register.php

حالا ما نیاز به یک صفحه داریم تا کاربر بتونه ار اونجا ثبت نام خودش رو انجام بده. این فایل شامل کدهای HTML و PHP است که به صورت زیر است:

<html>
  <form action="register.php" method="post">
     Username: <input name="username" type="text" />
     Password: <input type="password" name="password" />
     Email: <input name="email" type="text" />
     <input type="submit" value="Submit" />
  </form>
</html>

حال نیاز داریم اطلاعات دریافت شده از کاربر رو  پاکسازی و سپس در پایگاه داده ثبت کنیم . در این کد ابتدا پر بودن فیلدهای username ، password و email بررسی می شود و سپس از تکراری نبودن username اطمینان حاصل می کند. کد زیر را ابتدای فایل register.php  و قبل از کدهای Html قرار دهید .

<?php 
// فراخوانی منوی بالا
include('index.php');
// فراخوانی فایل دیتابیس
include("db.php"); 
if(isset($_POST['username']) && isset($_POST['password']) && isset($_POST['email'])){ 
	$username = mysqli_real_escape_string($connection, $_POST['username']); 
	$email = mysqli_real_escape_string($connection, $_POST['email']); 
	$password = md5($_POST['password']); 
	$sql = mysqli_query($connection, "SELECT username FROM usersystem WHERE username = '".$username."'");
	if(mysqli_num_rows($sql)>0){ 
		die("Username taken."); 
	} 
	mysqli_query($connection, "INSERT INTO usersystem(username, password, email) VALUES('$username', '$password', '$email')") or die (mysqli_error($connection)); echo "Account created."; 
} 
?>

ساختار فایل login.php

و در آخر کدهای صفحه ورود. دراین فایل نیاز به یک فرم داریم تا username و password را از کاربر دریافت کرده و پس ازاعتبار سنجی کاربر مجوز لازم برای ورود داده شود.

<?php
include('index.php');
include("db.php"); 
if(isset($_POST['username']) && isset($_POST['password'])){ 
// تایید ورود کاربر از طریق تابعی که در فایل دیتابیس نوشتیم    
	user_login($_POST['username'], $_POST['password']); 
} 
?>
<html>
  <form action="login.php" method="post">
     Username: <input name="username" type="text" />
     Password: <input type="password" name="password" />
	 <input type="submit" value="submit" />
  </form>
</html>

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

<?php 
include('index.php');
include "db.php";
if(!$_SESSION['username']){
// تغییر مسیر کاربر در صورتی که وارد یا لاگین نشده است
  header('location: ../login.php');
  exit();
}
?>

ساختار فایل logout.php

<?php
// خروج از سیستم و فالس کردن نشست
session_start();
$_SESSION['username'] = false;
echo "<a href='adminpage.php'>you're log Out successfuly [Go To ADMINPAGE]</a><br><br>";
?>

این آموزش به صورت ساده بیان شده و برای استفاده در پروژه های تجاری و وبسایت هایی که نیاز به امنیت زیادی دارن توصیه نمی شود.

 

php-register-form
Download “فرم ثبت نام با php”
نسخه 3.0.0 33 بار دانلود شده است 5 KB

 

فایل بالا با توابع mysqli پیاده سازی و تست شده است.

این دسخط هم میتونه کمکتون کنه: نحوه برقراری ارتباط php و mysql

daskhatmin

فواد طهماسبی

فواد طهماسبی هستم، موسس وبسایت آموزشی دسخط. چندین سال تجربه کاری مرتبط با تکنولوژیهای توسعه وب دارم. علاقمند به ایده پردازی و توسعه کسب و کارهای اینترنتی هستم.

127 دیدگاه برای “آموزش ساخت فرم ثبت نام با php و mysql”

  1. سهیل گفت:

    سلام
    چطور میشه با phpmailer با smtp server خارجی مثل گوگل ایمیل ارسال کرد؟
    ممنون

  2. کاوه گفت:

    سلام مهندس جان
    من یک سایت دارم که وقتی عضو میخواهد ثبت نام بکنه میخواهم تیک شرایط و قوانین سایت هم بزنه یا مطاله کنه این کد را در سایت قرار دادم ولی بدون یک زدن میتونند ثبت نام کنند من میخواهم تیک زدن این قرار داد و شرایط الضامی باشه
    ممنون میشم راهنمایی کنید
    بدود

       
     <div class="form-group col-md-12 form_trms_cond_chkbox">
         <label for="terms_and_policy" class="form-check-label">
             <input class="form-check-input" type="checkbox" id="terms_and_policy" name="terms_and_policy" value="">   
             <label for="terms_and_policy" class="form-check-label">
             I have read and agree to the <a href="./agreement" target="_blank">Terms and Condition</a>          
         </label>
     
  3. mehdi گفت:

    سلام..اموزشا عالیه …من یه هفته بیشتر درگیرکدنویسی یه پنل کاربری هستم…امنیت کارم صفر …یه مدل فرم تو سایت w3school هستش …اون مدل امنیت خوبه؟..مممنون میشم کمکم کنید ..
    از این دستور استفاده کرده

    <form method="post" action="">
    

    ازاین فانکشن هم برای پاک کردن

    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }
    
    
    1. بله خوبه، میتونید از تابع filter_input() هم استفاده کنید.
      http://php.net/manual/en/function.filter-input.php

      برای مثال اطلاعات یک فیلد از فرمتون رو به این صورت میتونید دریافت کنید.

      $search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
      

      از این فیلترها برای اعتبار سنجی :
      http://php.net/manual/en/filter.filters.validate.php

      و از این فیلترها برای پاکسازی میتونید استفاده کنید:
      http://php.net/manual/en/filter.filters.sanitize.php

  4. mehdi گفت:

    سلام مرسی….عزیز من میتونم این اعتبار سنجی هارو تو یه برکه بریزم …بعد تو صفحه ثبتنام اینکلود کنم؟….باید اسم متغیرهای فانکشن ها با متغیر های من یکی باشه ؟..من فانکشن سردرنمیارم…بعد چجوری بفهمم این اعتبارسنجی ها جوابد داده درست کارمیکنن..

  5. mehdi گفت:

    مرسی ممنون.عزیز واس فرم ثبتنام وفرم سفارش باید چنتا جدول ساخت تو پایگاه داده.
    .من یه جدول واس جفتش ساختم .ولی تو ردیف های جداگونه میان..من نمیدونم خب این سفارش واس کدوم کاربر.
    چه راه حلی دارید مرسی…خیلی واجب..ممنون میشم کمکم کنید

    1. باید 3 تا جدول داشته باشید.
      یک جدول برای کاربران با آی دی یونیک
      یک جدول برای سفارشات با آی دی یونیک
      و یک جدول برای رابطه کاربر و سفارش که دو ستون آی دی کاربر و آی دی سفارش داره و هر دو کلید خارجی هستند برای جدول های اصلی خودشون.

  6. mahdi گفت:

    سلام کد اولی رو باید چیکار کنم

  7. navid گفت:

    با سلام خدمت شما
    من یک جدول به نام register در mysqlساخته ام که افرادیکه درسایت ثبت نام میکنند، مشخصاتشان در آن ذخیره میشود و یک کد خاص به هر فرد داده میشود.
    وهمچنین یک جدول دیگری به نام <> ساخته ام که در این صفحه، برخی کاربران میتوانند کاربران دیگری را به زیرمجموعه خود در بیاورند.
    سوال من این است که چگونه در جدول دوم ( جدول زیر مجموعه ) برای شناسایی افراد، از کد های جدول اول (جدول register) استفاده شود؟

  8. حسنا گفت:

    سلام.در فرم ثبت نام طراحی شده با php من می خواستم ایمیل منحصر به فرد باشد یعنی کسی که قبلا ثبت نام کرده با همان ایمیل دوباره نتواند ثبت نام کند. اما در کد نویسیش مشکل دارم در صورت امکان راهنمایی بفرمایید.ممنونم

  9. persianwikileaks گفت:

    باتشکر

  10. ساحل گفت:

    سلام
    من وقتی از توابع mysql_ connect برای اتصال به پایگاه داده استفاده میکنم . موقع اجرا برنامه خطا میده .
    و باید حتما از توابع mysqli_connect. استفاده کنم .
    ممنون میشم راهنماییم کنید تا موقع اجرای توابعی که با mysql نوشته میشه خطا نده !

  11. zohre گفت:

    با عرض سلام و خسته نباشید خدمت شما
    من یه سوال در این رابطه داشتم می خواستم بدونم که من چه جوری می توان در نرم افزار dreamweave که می خواهم برنامه php بنویسیم برای قسمت loginآن بخواهیم تا قبل از وارد شدن کاربر دکمهlog out غیر فعال شود و به محض ورود کاربر دکمه log out فعال شود.و فرم log in غیر فعال شود اگهر میشه در این رابطه به من کمک کنید
    واگر میشه جواب را حتما به ایمیلم ارسال کنید.
    با تشکر اسلامی

  12. web گفت:

    سلام
    من یه سایت در حال حاضر دارم که در ومپ و در قسمت لوکال هاست اجرا گرفتم
    اگر بخواهم از این کدهای شما اضافه کنم باید به کدام قسمت سایت اضافه کنم ؟

  13. امیر محمد گفت:

    با سلام
    و با تشکر از آموزش خوبتان
    اگه ممکنه متن زیر را برایم توضیح بدهید( در php )

    با تشکر و سپاس

  14. مرضیه گفت:

    من هنگام نصب MySQL 5.5 به کادر انتهایی که مرحله نصب برنامه(processing fconfiguration) میمونه و انتهای نوارعنوانش not responding میاد و ادامه نمیده .لطفا راهنماییم کنید به این برنامه خیلی نیاز دارم

  15. جمشید طهماسبی گفت:

    سلام وقت بخیر…
    من میخوام با PHP اطلاعات نام ونام خانوادگی و نام کاربری و پسورد و جنسیت را از کاربر بگیرد.
    باید اعتبارسنجی انجا بدهد(جلوگیری از تزریق کدهای جاوا اسکریپت و HTML کنترل خالی نبودن ورودی ها).
    اگر اعتبارسنجی نتیجه اش درست است در همان فایل اطلاعات وارد شده به کاربر نمایش داده شود.
    خیلی ممنونتون میشم اگه زود جواب بدید…

  16. nasrin گفت:

    سلام فایل index.php که لود کردین چیه؟

    1. فؤاد طهماسبی گفت:

      سلام،
      فایل index رو ببینید متوجه میشید!
      چیز خاصی نیست، فقط نقش منو رو داره برای راحتی کار.

  17. محمد گفت:

    سلام
    ممنون بابت آموزش خوبتون
    چند تا سوال داشتم
    اول اینکه وقتی نام کاربری اشتباه میزنی این رو نشون میده Incorrect username/password
    از کجا میشه عوضش کرد. چطور تشخیص میده که اشتباه وارد شده.
    دوم اینکه کار این دستور چیه؟ mysql_real_escape_string
    ممنون از مطلب مفیدتون

    1. فؤاد طهماسبی گفت:

      سوال اول شما در کد ها مشخصه، و سوال دوم شما هم در کامنت ها پاسخ داده شده. لطفا دوباره مطالعه کنید.

  18. سیدامین گفت:

    سلام
    این فرم برای من به خوبی کار می‌کنه فقط وقتی در فیلد نام، نام را به صورت فارسی وارد می‌کنم خطا می‌ده.
    فقط کاراکنرهای انگلیسی رو در این فیلد قبول می‌کنه. چطور باید اصلاحش کنم.
    ممنون

    1. فؤاد طهماسبی گفت:

      اعتبار سنجی خاصی نداره، اصولا باید کار کنه. کدینگ دیتابیس و اینا رو هم چک کنید. ولی درستش اینه که username با حروف لاتین باشه.

  19. mehrdad گفت:

    با عرض سلام و خسته نباشی
    میخواستم اگه میشه یه فرم login & register با امنیت بالا آموزش بدین ممنون میشم

  20. بابا احمد گفت:

    آقا خیلی عالی بود مرسی دستت درست

دیدگاه‌های بیشتر

*اگر پرسشی دارید که مربوط به این مطلب نیست لطفا در بخش پرسشها مطرح کنید. در غیر این صورت دیدگاه شما تایید نخواهد شد.


کد HTMLCSSJavaScriptPHP