طراحی صفحه ثبت نام و ورود کاربران PHP و MySQL



دانیال
PHP
3079
۱۳ آذر ۱۳۹۴

برای ثبت اطلاعات کاربران در پایگاه داده سایت، باید با استفاده از PHP اطلاعات ارسال شده توسط کاربر را دریافت کنیم و با استفاده از دستورات MySQL ذخیره کنیم. جهت اجرای کدهای PHP و MySQL در ویندوز باید نرم افزار WAMP یا XAMP را در سیستم خود نصب کنید. با استفاده از این نرم افزار یک لوکال هاست مجازی در سیستم شما شبیه سازی می شود تا کدهای PHP را اجرا و پایگاه داده MySQL را ایجاد کنید.

در ادامه مطلب همراه من باشید.

هنگامی که یک برنامه نویس کدهای یک سایت را توسعه می دهد بایستی فرآیند اجرای برنامه را در سیستم خود آزمایش کند تا از لحاظ کارایی و امنیت در سطح قابل قبولی باشد، به دلیل هزینه بر بودن اجاره هاست و تخصیص حافظه به سایت در سرور، معمولا تست کارایی و امنیت در لوکال هاست انجام می شود.

پس از نصب نرم افزار WAMP به محل نصب بروید و پوشه www را باز کنید. در این پوشه فایل ها و پوشه های پروژه قرار می گیرد و می توان پس از اجرای نرم افزار WAMP، در مرورگر از طریق آدرس /localhost به پروژه دسترسی داشت. حالا یک پوشه به نام ad در پوشه www ایجاد کنید و تمامی فایل های پروژه را در آن کپی کنید در حال حاظر پروژه در مرورگر با آدرس localhost/ad قابل مشاهده است.

حالا برای ذخیره نام کاربری و گذرواژه کاربران در سایت باید از MySQL استفاده کنیم. برای دسترسی به MySQL در لوکال هاست باید آدرس localhost/phpmyadmin را در مرورگر خود وارد کنیم در صورت مواجه شدن با صفحه ورود باید نام کاربری root و پسوورد خالی را وارد کنید. در این قسمت شما می توانید پایگاه داده های موجود را مشاهده کنید یا پایگاه داده جدیدی را ایجاد کنید. در قسمت MySQL localhost می توانید نام پایگاه داده و شیوه کدگذاری اطلاعات جدول را مشخص کنید من در اینجا نام پایگاه داده را برابر با ad و شیوه کدگذاری اطلاعات را برابر با utf8_persian_ci جهت ثبت کاراکترهای فارسی در نظر گرفتم حال روی دکمه create کلیک کنید.

پس از اینکه پایگاه داده را ایجاد کردید وارد قسمت جدول های پایگاه داده می شوید، در این قسمت می توانید نام جدول و تعداد ستون های آن را در قسمت create table on database مشخص کنید و روی دکمه Go کلیک کنید. در اینجا من نام پایگاه داده را برابر با users و تعداد ستون های جدول را برابر با 3 در نظر گرفتم که به ترتیب user_id، username و password می باشد. پس از کلیک روی دکمه Go به قسمت وارد کردن اظلاعات فیلد ها می رسید در اینجا باید اطلاعات مربوط به فیلد ها همچون: نام فیلدها، نوع داده فیلدها، اندازه فیلدها و ... را مشخص کنید که در ادامه تمامی موارد را بررسی می کنیم.

Field: نام فیلد را مشخص می کند.

Type: نوع فیلد را مشخص می کنید به عنوان مثال می توان برای داده های عددی مقدار Int و برای داده های متنی مقدار Varchar را انتخاب کرد.

Length: اندازه فیلد را مشخص می کنیم. به عنوان مثال می توان برای فیلد گذرواژه اندازه 20 را در نظر گرفت در این صورت فقط 20 کاراکتر را در خود جای می دهد.

Default: مقدار پیش فرض را برای فیلد در نظر می گیرد بدین معنی که هنگام ایجاد سطر جدید به صورت پیش فرض مقدار مشخص شده در فیلد قرار می گیرد.

Collation: شیوه کدگذاری کاراکترهای فیلد را نمایش می دهد.

Attributes: در این قسمت چند ویژیگی موجود است که هریک را بررسی می کنم.

  • Binary: با انتخاب این گزینه، colllation مناسب برای فیلد با توجه به collation پایگاه داده در نظر گرفته می شود. به طور مثال اگر فیلدی دارای نوع داده Varchar باشد و collation پایگاه داده برابر با utf-8 باشد، collation فیلد utf-8_bin تنظیم می شود.
  • Unsigned: فقط مقادیر 0 یا بزرگتر از آن در فیلد قرار داده می شود.
  • Unsigned zero fill: این گزینه با توجه به اندازه فیلد و مقدار وارد شده، در صورت کوچکتر بودن اندازه مقداراز لحاظ طول، پیش ار مقدار وارد شده 0 قرار می دهد. به عنوان مثال اگر شما نوع داده فیلد را برابر با int و اندازه فیلد را 8 تنظیم کرده باشید و مقدار 1 را برای فیلد مشخص کنید، در پایگاه داده 00000001 وارد می شود.
  • Update_current_timestamp: با انتخاب این گزینه هنگامی که سطری ویرایش می شود مقدار timestamp جاری در فیلد قرار می گیرد.

Null: امکان قرار گرفتن Null در فیلد.

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

Auto Increment: هنگام اضافه شدن سطر جدید، مقدار فیلد به صورت خودکار اضافه می شود، به عنوان مثال فیلد user_id با اضافه شدن سطر جدید به صورت خودکار یک واحد اضافه شده و در فیلد قرار می گیرد.

Comments: در این قسمت می توان برای فیلد توضیح ایجاد کرد.

در زیر مشخصات فیلد های جدول users را مشاهده می کنید:

نام فیلد نوع داده دیگر مشخصات
user_id Int AUTO_INCREMENT & Index = PRIMARY
username Varchar Length = 150
password Varchar Length = 50

فیلد user_id با مشخص کردن مقدار PRIMARY برای Index به عنوان کلید برای این جدول در نظر گرفته شده است. مقدار این فیلد در دو سطر مختلف نمی تواند برابر باشد و مقدار باید UNIQUE یا منحصر به فرد باشد. همچنین گزینه AUTO_INCREMENT را هم فعال کردم تا با هر بار اضافه شدن سطر جدید یک مقدار جدید در فیلد قرار بگیرد.

فیلد username برای نگهداری نام کاربران ایجاد شده و نوع داده آن را Varchar انتخاب کردم که رشته نام کاربری را در خود ذخیره کند. همچنین اندازه آن را برابر با 150 در نظر گرفتم و فقط این تعداد کاراکتر در داخل فیلد قابل ذخیره شدن می باشد.

فیلد password هم مانند username دارای نوع داده Varchar می باشد تا رشته گذرواژه را در خود ذخیره کند اما با اندازه کمتر از فیلد username.

حالا روی دکمه Save کلیک می کنیم و جدول به پایگاه داده اضافه می شود.

ار این پس می توانیم اطلاعات مورد نیاز را در پایگاه داده ذخیره کنیم اما قبل از آن بایستی با برخی از دستورات SQL آشنا شویم که در زیر 4 دستور اصلی را شرح دادم:

SELECT: با استفاده از این دستور می توان مقادیر فیلدهای مورد نظر یک جدول را دریافت کرد.

SELECT experssions FROM table WHERE conditions

در قسمت experssions نام فیلدها یا توابع SQL قرار می گیرید.

در قسمت table نام جدول قرار می گیرد.

در قسمت conditions شرط مورد نظر برای انتخاب سطرهای قرار می گیرد که می توان از آن صرف نظر کرد و تمامی اطلاعات جدول را دریافت کرد.

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

SELECT username FROM users WHERE user_id = 15

INSERT INTO: با استفاده از این دستور در SQL می توان اطلاعات جدید را وارد جدول کرد که به دو صورت می توان از آن استفاده کرد:

INSERT INTO table VALUES(value1, value2, value3, ...)
INSERT INTO table(column1, column2, ...)  VALUES(value1, value2, ...)

در فرم اول باید تمامی مقادیر فیلدها را متناظر با ترتیب فیلدها در جدول وارد کنیم اما در فرم دوم می توان دستور را به صورت سفارشی نوشت، بدین صورت که نام فیلدها مورد نظر را در قسمت column نوشته و پس از آن در قسمت values مقادیر را به صورت متناظر اضافه کنیم.

به عنوان مثال می توان برای درج یک کاربر جدید در جدول users از دستور INSERT INTO به شکل زیر استفاده کرد:

INSERT INTO users(username,password) VALUES('myuser','123abc')

در صورتی که فیلدی دارای ویژیگی AUTO_INCREMENT باشد میتوان از درج نام و مقدارش در query به صورت بالا صرف نظر کرد، زیرا به صورت خودکار، مقدار در فیلد قرار می گیرد.

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

UPDATE table SET column1 = value, column2 = value, ... WHERE conditions

در قسمت table نام جدول را وارد کرده و در قسمت column = value می توان نام فیلد به همراه مقدار مورد نظر را نوشت همچنین می توان شرطی را در قسمت condition برای مشخص کردن سطر مورد نظر قرار داد.

به عنوان مثال برای ویرایش گذرواژه کاربری با شناسه کاربری 215 می توان از دستور UPDATE به صورت زیر استفاده کرد:

UPDATE users SET password = 'abc1234' WHERE user_id = 215

دستور DELETE: برای حذف رکورد یا رکوردها از جدول استفاده می شود.

DELETE FROM table WHERE conditions

در قسمت table نام جدول را وارد می کنیم و در قسمت conditions می توان شرط مورد نظر را نوشت، به این نکته توجه داشته باشید که در صورتی که شرطی را برای این دستور وارد نکنید تمامی سطرهای جدول حذف خواهد شد.

به عنوان مثال برای حذف کاربری با نشانه کاربری 312 می توان از دستور DELETE به صورت زیر استفاده کرد:

DELETE FROM users WHERE user_id = 312

حالا باید با استفاده از زبان PHP به پایگاه داده متصل شویم و اطلاعات مورد نظر را به پایگاه داده ارسال و ذخیره کنیم اما قبل از آن باید با زبان PHP آشنا شویم که در ادامه مباحث متغیر، آرایه، رشته، شرط ها، POST_$ و GET_$ و توابع  را بررسی می کنیم.

با استفاده از IDE که در آن کدنویسی می کنید یا با استفاده از notepad یک فایل PHP به نام signup را در پوشه پروژه ایجاد کنید، سپس آن را باز کنید.

کدهای PHP بین php?> و ?> قرار می گیرد، و هر خط از دستورات این زبان همانند زبان C و ++C با ; سیمی کالن خاتمه پیدا می کند.

متغیرها: در PHP مانند هر زبان دیگر برای نگهداری داده ها یا اطلاعات مورد نیاز می توان از متغیر ها استفاده کرد، متغیرها در PHP با استفاده از علامت $ تعریف می شوند. زبان های برنامه نویسی از لحاظ تعریف متغیر ها به دو نوع Strongly Typed و Loosely Typed تقسیم می شوند تفاوت بین این دو مشخص کردن نوع داده هنگام تعریف متغیر ها می باشد در زبان های Strongly Typed باید هنگام تعریف متغیر، نوع داده را مشخص نمود مانند: زبان ++C یا #C اما در Loosely Typed نیازی به مشخص کردن نوع داده نمی باشد مانند: زبان PHP، بدین صورت پس از تعریف متغیر می توان مقدار، با هر نوع داده ای را در آن قرار داد.

مثال تعریف متغیر:

<?php
  $name = 'Danial';
  $num = 15;
?>

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

آرایه های شاخص دار: در این نوع از آرایه می توان با استفاده از شماره شاخص یا index به خانه های آرایه دسترسی داشت به عنوان مثال:

<?php
  $numbers = array(1,2,3,4,5);
  $result = $numbers[0] + $numbers[3]; //جمع مقدار خانه اول و چهارم آرایه
?>

همانطور که ملاظه می کنید مقادیر 1 تا 5 در متغیری به نام numbers که به صورت آرایه می باشد قرار گرفته است، برای تعریف آرایه از array استفاده می شود. شروع شاخص یک آرایه از 0 می باشد یعنی در PHP برای دسترسی به اولین خانه از آرایه باید از شاخص 0 استفاده کنیم.

در شکل بالا ساختار ساده ای از آرایه ها را ملاحظه می کنید که هر یک از مقادیر در خانه ای از آرایه قرار گرفته و با استفاده از شاخص قابل دسترسی می باشند.

آرایه ها انجمنی: در این نوع از آرایه می توان کلیدی برای هریک از خانه های آرایه معین کرد. به عنوان مثال:

<?php
   $person = array('name' => 'Omid', 'age' => 25, 'city' => 'Tehran');
   $city = $person['city'];
?>

همانطور که در کد بالا ملاحظه می کنید برای دسترسی به مقدار 'Tehran' باید از کلید 'city' استفاده کرد. به این نکته توجه داشته باشید که در صورتی که در داخل array قصد انتساب مقدار را داشته باشید باید از <= استفاده کنید، صورت دیگر انتساب در آرایه ها به صورت زیر می باشد:

<?php
   $array['city'] = 'Tehran';
?>

آرایه های چند بعدی: در این نوع از آرایه ها در PHP هریک از خانه های آرایه، خود می تواند یک آرایه باشد. به عنوان مثال:

<?php
   $car_details = array(
                        'BMW' => array(
                                      'color' => 'White',
                                      'weight' => 1670
                                 ),
                         'Mercedes Benz' => array(
                                                 'color' => 'Black',
                                                 'Weight' => 1500, 
                                            )
                  );
   $color = $car_details['BMW']['color'];
?>

در کد بالا ملاحظه می کنید که برای دسترسی به مقادیر موجود در آرایه باید از دو کلید استفاده کنیم.

رشته: در PHP برای ایجاد یک رشته باید مقدار مورد نظر را بین دو علامت '' یا "" قرار داد. تفاوت بین این دو در استفاده از کاراکترهای ویژه و درج مقدار متغیر ها در رشته می باشد.

به عنوان مثال برای تعریف یک رشته با مقدار Hello World به صورت زیر عمل می کنیم:

<?php
    $string = "Hello World";
    $string2 = 'Hello World';
?>

کاراکترهای ویژه شامل:

  • \\: کاراکتر \ ایجاد می کند.
  • n\: ایجاد خط جدید.(کد اسکی: 10)
  • "\: کاراکتر نقل قول جفتی
  • t\: یک تب به جلو.
  • $\: ایجاد کاراکتر $.
  • r\: ایجاد خط جدید.(کد اسکی: 13)

همچنین میتوان مقدار متغیر ها را به طور مستقیم در رشته که داخل "" قرار دارد به کار برد:

<?php
   $age = 23;
   $string = "I am $age years old";
?>

در PHP برای چاپ مقادیر مختلف از echo استفاده می شود به طور مثال:

<?php
   $name = "Danial";
   $string = "My name is $name";
   echo $string;
?>
<?php
   $person = array('name' => 'Omid', 'age' => 25, 'city' => 'Tehran');
   $age = $person['age'];
   echo $age; 
?>

عملگر: در همه زبان های برنامه نویسی برای پیاده سازی منطق برنامه نیاز به عملگرهای مختلف برای محاسبه و مقایسه نیاز داریم. در جداول زیر به بررسی عملگر ها می پردازیم:

عملگرهای محاسباتی:

مثال توضیح عملگر
$result = $num1 + $num2 مجحوع دو مقدار را محاسبه می کند. +
$result = $num1 - $num2 تفاضل دو مقدار را محاسبه می کند. -
$result = $num1 / $num2 خارج قسمت تقسیم دو مقدار را محاسبه میکند. /
$result = $num1 % $num2 باقی مانده تقسیم دو مقدار را محاسبه می کند. %
$result = $num1 * $num2 حاصل ضرب دو مقدار را محاسبه می کند. *
$result = -$num1 اگر به صورت تکی استفاده کنیم علامت را نقیض می کند.

-

$result = $num1++; مقدار عملوند خود را یک واحد افزایش می دهد، اگر قبل عملوند باشد یک واحد اضافه سپس مقدار را بر می گرداند در غیر اینصورت ابتدا مقدار را بر می گرداند و یک واحد به مقدار اضافه می کند. ++
$result = $num1--; مقدار عملوند خود را یک واحد کاهش می دهد، اگر قبل عملوند باشد یک واحد کاهش می دهد سپس مقدار را بر می گرداند در غیر اینصورت ابتدا مقدار را بر می گرداند و یک واحد از مقدار کاسته می شود. --

همانطور که در جدول بالا مشاهده می کنید از علامت = برای انتساب مقدار استفاده می شود، در اینجا حاصل نتایج در متغیر result$ قرار گرفته است.

عملگرهای منطقی:

مثال توضیح عملگر
$result=$a and $b در صورتی که هر دو عملوند این عمگر دارای مقدار TRUE باشند، نتیجه TRUE خواهد بود. and
$result=$a && $b صورت دیگری از عملگر and می باشد. &&
$result=$a or $b در صورت که یکی از دو عملوند این عملگر دارای مقدار TRUE باشد، نتیجه TRUE خواهد بود. or
$result=$a || $b صورت دیگری از عملگر or می باشد. ||
$result=$a xor $b اگر یکی از عملوندهای این عملگر مقدار TRUE و دیگری مقدار FALSE داشته باشد، نتیجه TRUE خواهد بود. xor
$result=!$a عملوند خود را نقیض می کند. !

در جدول بالا متغیرهای a$ و b$ به عنوان عملوند در نظر گرفته شده است.

عملگرهای مقایسه:

مثال توضیح عملگر
$result=$a == $b در صورتی که مقادیر عملوندها برابر باشند نتیجه TRUE خواهد بود. ==
$result=$a != $b در صورتی که که مقادیر عملوندها برابر نباشند نتیجه TRUE خواهد بود. !=
$result=$a <> $b صورت دیگری از =! می باشد. <>
$result=$a === $b در صورتی که مقادیر عملوندها و نوع داده آنها برابر باشد نتیجه TRUE خواهد بود. ===
$result=$a !== $b در صورتی که مقادیر عملوندها برابر نباشد یا نوع داده آنها برابر باشد نتیجه TRUE خواهد بود. !==
$result=$a > $b اگر عملوند چپ از عملوند راست بزرگتر باشد نتیجه TRUE خواهد بود. >
$result=$a >= $b اگر عملوند چپ بزرگتر یا مساوی عملوند راست باشد نتیجه TRUE خواهد بود. >=
$result=$a < $b اگر عملوند چپ کوچکتر از عملوند راست باشد نتیجه TRUE خواهد بود. <
$result=$a <= $b اگر عملوند چپ کوچکتر یا مساوی عملوند راست باشد نتیجه TRUE خواهد بود. <=

if و else: از این دو برای کنترل روند اجرا و منطق برنامه استفاده می شود، در صورتی که حاصل عبارت دستور if مقدار TRUE باشد، دستورات داخل بدنه if اجرا می شود در غیر اینصورت دستورات داخل بدنه else اجرا می شود می توان از else هم طرف نظر کرد و فقط از if استفاده کرد به عنوان مثال:

<?php
   $number = 23;
   if( $number % 2 == 0 ){
       echo "The number is even";
   }
?>

در کد بالا بررسی کردم که اگر مقدار متغیر number زوج بود رشته The number is even چاپ شود اما در صورتی که شرط برقرار نباشد عملی انجام نمی شود. برای اجرای دستورات در صورت برقرار نبودن شرط باید از دستور else به صورت زیر استفاده کنیم.

<?php
   $number = 23;
   if( $number % 2 == 0 ){
       echo "The number is even";
   }else{
       echo "The number is odd";
   }
?>

POST_$ و GET_$: زمانی که اطلاعات وارد شده در فرم های HTML به سمت سرور ارسال می شود، با توجه به متد ارسال، می توان در سمت سرور و با استفاده از متغیرهای سراسری همچون POST_$ و GET_$ به اطلاعات دریافتی از سمت کاربر دسترسی داشت. به عنوان مثال: فرم موجود در صفحه signup دارای فیلدهای ورودی با نام های username و password و repassword بود. زمانی که کاربر روی دکمه 'ثبت نام' کلیک می کند اطلاعات فیلدهای موجود به سمت سرور ارسال می شود. برای دسترسی به اطلاعات باید از این متغیرها به همراه نام فیلدهای مورد نظر استفاده کنیم.

<?php
   $username = $_POST['username'];
   $password = $_POST['password'];
   $repassword = $_POST['repassword'];
?>

همانطور که در کد بالا ملاحظه می کنید نام فیلدهای ورودی که در فرم موجود می باشد به عنوان کلیدی برای دسترسی به اطلاعات فیلدها استفاده می شود.

توابع: در همه زبان های برنامه نویسی یک سری توابع برای انجام کارها ایجاد شده است، ساختار توبع در PHP به صورت زیر است:

<?php
    function(parameter1, parameter2, ..., parameter(n));
?>

در کد بالا به جای function نام تابع مورد نظر و به جای parameter مقدار یا مقادیر متناسب قرار می گیرد، برخی از توابع مقداری را به عنوان خروجی باز می گردانند. در PHP مانند هر زبان دیگر می توان توابع شخصی ایجاد کرد که در قسمت های بعدی به صورت کامل بررسی می کنیم.

تابع isset: در PHP از این تابع برای بررسی موجود بودن مقدار در متغیر یا خانه ای از آرایه استفاده می شود. به عنوان مثال می توان بررسی نمود در صورتی که کاربر در فیلدها مقداری را واردد کرده بود، آن مقدار را به متغیری نسبت دهیم.

<?php
   if(isset($_POST['username'])){
       $username = $_POST['username'];
   }
?>

پس از آشنایی با مقدمات زبان PHP باید کدهای مورد نظر را برای ثبت کاربران در فایل signup.php بنویسیم.

برای ارتباط با پایگاه داده MySQL در PHP باید از تابع mysql_connect استفاده کنیم، برای اتصال به پایگاه داده نیاز به نام سرور، نام کاربری و گذرواژه خواهیم داشت.

از این تابع به صورت زیر استفاده می کنیم:

<?php
   $connection = mysql_connect('localhost', 'root', '');
?>

همانظور که در کد بالا مشاهده می کنید برای دسترسی به پایگاه داده نام سرور را 'localhost'، نام کاربری را 'root' و گذرواژه خالی را به عنوان مقدار پارامترهای تابع قرار دادم، در صورت موفقیت آمیز بودن ارتباط این تابع یک ID یا نشانه را بر می گرداند که از آن برای ارتباطات دیگر با پایگاه داده استفاده می شود.

کد زیر برای بررسی صحت ایجاد ارتباط:

<?php
    $connection = mysql_connect('localhost', 'root', '');
    if($connection){
        $db = mysql_select_db('ad', $connection);
        if(!$db){
            die('Could not be selected');
        }
    }else{
        die('Could not connect');
    }
?>

در زبان های برنامه نویسی هر مقدار مخالف 0 به عنوان TRUE در نظر گرفته می شود، در اینجا پس از ایجاد ارتباط با استفاده از تابع mysql_connect، مقدار برگشتی را با استفاده از دستور if بررسی کردم، در صورتی که مقدار مخالف 0 یا TRUE باشد پایگاه داده مورد نظر را با استفاده از تابع mysql_select_db انتخاب می کنم در غیر اینصورت پیام 'Could not connect' را چاپ می کنم.

تابع mysql_select_db برای انتخاب پایگاه داده استفاده می شود. این تابع نام پایگاه داده و لینک ارتباط را دریافت می کند و پایگاه مورد نظر ما را برای کار کردن انتخاب می کند، در اینجا من نام پایگاه داده 'ad' و لینک ارتباط با پایگاه داده را به عنوان پارامترهای تابع mysql_select_db قرار دادم.

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

پس از بررسی و انتخاب پایگاه داده مورد نظر باید اطلاعات ارسالی به سرور توسط کاربر را بررسی کنیم، در صورتی که کاربر مقدار فیلدها را وارد کرده بود با استفاده از دستور INSERT INTO اطلاعات را در جدول وارد می کنیم.

if(isset($_POST['username']) && isset($_POST['password']) && isset($_POST['repassword']) && $_POST['password'] == $_POST['repassword']){
    $query = "INSERT INTO users (username, password) VALUES('". $_POST['username'] ."', '". $_POST['password'] ."')";
    $result = mysql_query($query);
    header('location:http://localhost/ad');
    exit();
}

در کد بالا با استفاده از تابع isset وارد شدن مقدار در POST_$ و با استفاده از عملگر == تساوی مقدار دو فیلد password و repassword را بررسی کردم و در صورت برقرار بودن شرط با استفاده از INSERT INTO اطلاعات را وارد جدول کردم. برای ارسال اطلاعت به پایگاه داده باید از الحاق رشته ها استفاده کنیم. در PHP برای الحاق رشته ها از . استفاده می شود به عنوان مثال:

<?php
     $string = "Number: ";
     $number = 15;
     echo $string . $number; 
?>

در کد برنامه من قصد دارم مقدار فیلدهای username و password را به جدول اضافه کنم برای این کار باید از دستور INSERT TNTO در MySQL استفاده کنم. همانطور که در توضیح این دستور بررسی کردیم باید نام فیلدها به همراه مقدار متناظرشان را واد کنیم به این ترتیب رشته username و password را در قسمت نام فیلدها، و مقادیر ['POST_$['username و ['POST_$['password را به عنوان مقدار آنها در قسمت مقدار فیلد ها الحاق می کنیم. به این نکته توجه داشته باشید که مقادیر باید به صورت رشته وارد جدول شوند بنابراین یک ' یا single cot در دو طرف متغیر ها قرار می دهیم.

$query = "INSERT INTO users (username, password) VALUES('". $_POST['username'] ."', '". $_POST['password'] ."')";

برای اجرای query در MySQL از تایع mysql_query استفاده می کنیم. این تابع یک رشته را به عنوان query دریافت و آن را در MySQL اجرا می کند.

$result = mysql_query($query);

پس از اجرای query آدرس صفحه به localhost/ad/signup.php انتقال یافته است و چون در فایل signup,php هیچ گونه کد HTML نداریم مورد خاصی نمایش داده نمی شود برای هدایت مرورگر به آدرس مورد نظر از تابع header در PHP استفاده می کنیم. این تابع یک HTTP header ساده را تنظیم می کند. باید به این نکته توجه داشت که قبل از ارسال header نباید در خروجی هیچ نوع کاراکتری چاپ شده باشد.

header('location:http://localhost/ad');
exit();

همانطور که در کد بالا مشاهده می کنید با استفاده از location در رشته منتسب به ورودی header، تعیین کردم که موقعیت جاری باید به http://localhost/ad(صفحه اول سایت) منتقل شود، همچنین باید به این نکته توجه داشت که قبل از localhost باید http را قرار دهیم تا آدرسی که وارد می کنیم به آدرس قبل اضافه نشود و به صورت مستقل منتقل شود.

از دستور exit بعد از header برای پایان اسکریپت PHP استفاده کردم.

در پایان، کد PHP فایل signup.php به صورت زیر می باشد.

<?php
    $connection = mysql_connect('localhost', 'root', '');
    if($connection){
        $db = mysql_select_db('ad', $connection);
        if(!$db){
            die('Could not be selectted');
        }else{
            if(isset($_POST['username']) && isset($_POST['password']) && isset($_POST['repassword']) && $_POST['password'] == $_POST['repassword']){
                $query = "INSERT INTO users (username, password) VALUES('". $_POST['username'] ."', '". $_POST['password'] ."')";
                $result = mysql_query($query);
                header('location:http://localhost/ad');
                exit();
            }            
        }
    }else{
        die('Could not connect');
    }
?>

پس از اتمام فایل signup.php باید فایل login.php را برای ورود کارابران در پوشه پروژه ایجاد کنیم. برای قسمت login هم مانند signup باید ابتدا به پایگاه داده متصل شده و پایگاه داده را انتخاب کنیم، در صورت ایجاد ارتباط باید POST_$ را بررسی کنیم و اینبار از دستور SELECT استفاده کنیم.

در پایین کد کامل فایل login.php را مشاهده می کنید:

<?php
    $connection = mysql_connect('localhost', 'root', '');
    if($connection){
        $db = mysql_select_db('ad', $connection);
        if($db){
            if(isset($_POST['username']) && isset($_POST['password'])){
                $query = "SELECT user_id FROM users WHERE username = '". $_POST['username'] ."' AND password = '". $_POST['password'] ."'";
                $result = mysql_query($query);
                $fetch_array = mysql_fetch_array($result);
                if(isset($fetch_array['user_id'])){
                    echo 'ok';
                }else{
                    header('location:http://localhost/ad/login.html');
                    exit();
                }
            }
        }else{
            die('Could not be selected');
        }
    }else{
        die('Could not connect');
    }
?>

در کد بالا از دستور SELECT برای بررسی موجود بودن کاربر با مشخصات وارد شده استفاده کردم، بدین صورت که در قسمت WHERE دو مقدار وارد شده توسط کاربر یعنی username و password را به عنوان شرط انتخاب به query اضافه می کنم.

"SELECT user_id FROM users WHERE username = '". $_POST['username'] ."' AND password = '". $_POST['password'] ."'"

در صورتی که که کاربری با نام کاربری و گذرواژه وارد شده موجود باشد user_id کاربر به عنوان نتیجه باز می گردد. در PHP برای دسترسی به نتایج SELECT می توان از توابعی همچون:

  1. ()mysql_fetch_array
  2. ()mysql_fetch_accoc
  3. ()mysql_fetch_row

استفاده کرد که تفاوتشان همانند آرایه ها در شیوه دسترسی به مقادیر می باشد.به طور مثال در صورتی که از دستور SELECT زیر استفاده کنیم و نتایج را با استفاده از mysql_fetch_accoc دریافت کنیم:

SELECT user_id, username FROM users WHERE user_id = 200

نتایج به صورت:

<?php
   array(
       'user_id' => 200,
       'username' => 'Danial'
   );
?>

باز می گردد. در کد login برای دسترسی به اطلاعات query از تابع ()mysql_fetch_array استفاده کردم، این تابع نتایج حاصل از query را دریافت و یک آرایه شامل اطلاعات را بر می گرداند. حالا برای بررسی اینکه کاربری با مشخصات وارد شده موجود هست یا نه از تابع ()isset استفاده کردم.

if(isset($fetch_array['user_id'])){
    echo 'ok';
}else{
    header('location:http://localhost/ad/login.html');
    exit();
}

در کد بالا ملاحظه می کنید که برای بررسی وجود کاربر با مشخصات وارد شده، پس از اجرای query از دستور isset استفاده کردم.

برای مشاهده نتابج تابع ()mysql_fetch_array یا دو تابع دیگر که نتایج را به صورت آرایه بر می گردانند می توان از تابع var_dump استفاده کنید، این تابع یک آرایه را به عنوان ورودی دریافت می کند و ساختار کامل آرایه را نمایش می دهد.

<?php
   var_dump($fetch_array);
?>

در قسمت بعد ناحیه کاربری را طراحی می کنیم، تا پس از تایید ورود، کاربران به ناحیه کاربری خود وارد شوند.

سوالات مربوط به پی اچ پی
0 دیدگاه