امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
آموزشی مقدماتی پی اچ پی (PHP)
نویسنده پیام
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,497
موضوع‌ها: 270
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1652
( 3938 تشکر در 1453 ارسال )
ارسال: #12
پایگاه داده ها (پیشرفته)
در درس قبل با پایگاه داده ها و مفاهیم مهم در این زمینه آشنایی پیدا کردیم. یاد گرفتیم که چطور می شود پایگاهی برای انبار کردن داده ها با استفاده از phpMyAdmin ساخت. با توجه به آسانی کار در محیط این برنامه که به صورت «رابط کاربر گرافیکی» است، ابتدا از این ابزار برای بیان چگونگی ساخت پایگاه و متعلقاتش بهره بردیم، اما نکته در این است که در زمان نوشتن برنامه ای به زبان پی اچ پی و اتصال به پایگاه از داخل برنامه، باید از کد‌های زبان SQL استفاده کنیم.
پس این یک ضرورت است که با این زبان هم آشنا باشیم؛ البته کار بسیار راحتی است و دستورات بسیار محدود و ساده. در این درس با توجه به آشنایی مقدماتی درس قبلی با برنامه MySQL که از زبان SQL بهره می‌برد، تلاش می کنیم که زبان SQL را شرح دهیم.
 
MySQL و SQL
قبل از ورود به بحث لازم دیدیم یک بار دیگر در مورد این دو مفهوم توضیح کوتاهی بدهیم، باشد که تعریف واضع تر باعث فهم بهتر هر کدام از این دو گردد.
SQL یا Structured Query Language
این یک زبان برنامه نویسی ویژه ای است که به منظور مدیریت داده ها در سیستم های مدیریتی پایگاه داده های ارتباطی (RDBSM) نوشته شده است. سیستم های مدیریتی پایگاه داده های ارتباطی، به سیستم هایی گفته می شود که داده ها در داخل پایگاه براساس ارتباط بین شان انبار می شوند و در زمان خواندن از آنها، می توان با توجه به ارتباط داخلی، داده ها را فراخوانی کرد.
MySQL
این یک نرم افزار است که از زبان SQL استفاده می کند و ما معمولا آن را بر روی رایانه خود نصب می کنیم. می توان گفت که MySQL  موتوری است که دستورات SQL را اجرا می کند. البته نرم‌افزارهای دیگری هم هستند که از زبان SQL برای ساخت و کار پایگاه داده ها استفاده می کنند. به طور مثال شرکت مایکروسافت نرم افزاری بنام Microsoft SQL Server دارد و یا شرکت Oracle نرم افزاری با همین نام دارد که همه آنها از زبان SQL در نرم افزار خود استفاده می کنند.
اگر هنوز تفاوت این دو  برای تان روشن نیست، اشکالی ندارد؛ کمی صبر داشته باشید. همراه کار با پایگاه داده ها مفهوم مطالب بالا برای شما روشن تر خواهند شد.
 
دسترسی به MySQL Server
برای دسترسی به سرویس دهنده پایگاه داده ها و ساخت جدول و... ما نیاز به یک سطح دسترسی کاربری داریم. در درس قبل انجام این کار را توسط محیط phpMyAdmin دیدیم، اما در این درس این کار را توسط CMD انجام می دهیم.
کاربر MySQL
این کاربر هنگام نصب نرم‌افزار همراه بقیه موارد نصب می شود و برای استفاده از آن باید از محیط خط دستور یا همان Command Prompt Interface استفاده کرد. در شروع باید از طریق مسیر زیر (در سیستم عامل ویندوز) به CMD مراجعه کنید:

نقل قول: Start\ All Programs\Accessories\Command Prompt
راه دیگر هم دسترسی مستقیم به CMD از طریق گرفتن دکمه «پنجره» در صفحه کلید و انتخاب حرف R است. بعد در داخل کادری که باز می‌شود حروف cmd را بنویسید و دکمه Enter را بزنید.
هر دوی این ها به پنجره سیاه رنگ CMD در ویندوز ختم می‌شوند. در لینوکس نام این ابزار را Terminal می نامند که به خاطر گوناگونی نمای صفحه در نسخه های مختلف لینوکس هر کدام راه دسترسی خود را دارد.
نکته: برای کسانی که از Wamp Server استفاده می کنند، یک راه بسیار ساده وجود دارد. باید بر روی نشان برنامه در قسمت راست پایین صفحه کلیک کنید، بعد نشانگر را بر روی MySQL برده تا گزینه MySQL Console را مشاهده کنید. با این انتخاب مستقیما به پایگاه وصل می شوید.
حال فرض می کنیم که می خواهیم از داخل CMD وارد پایگاه شویم. پایگاه شما در داخل پوشه ای است که Wamp Server در آن نصب شده، پس باید به داخل آن پوشه رفت و دنبال پوشه ای به نام bin گشت. ما این برنامه را در دایرکتوری I نصب کرده ایم، پس آدرس ما به صورت زیر است:



نقل قول: I:\wamp\bin\mysql\mysql5.5.24\bin
این مسیر پوشه bin در رایانه ماست که آدرس ابتدایی به محل نصب بستگی دارد. به طور مثال اگر شما Wamp را در دایرکتوری C نصب کنید آدرس می شود:


نقل قول: C:\wamp\bin\mysql\mysql5.5.24\bin
این مسیر را باید از داخل cmd رفت. فرض کنید اکنون cmd ما را در داخل دایرکتوری C نشان می دهد.

لطفا به طرز انجام این کار دقت کنید:

نقل قول: C:\> I:     //   داخل دایرکتوری شو
I:\>    //  حال  اینجا هستیم

I:\> cd wamp\bin\mysql\mysql5.5.24\bin   //  ورود به آدرس جدید
I:\wamp\bin\mysql\mysql5.5.24\bin>    // bin  داخل پوشه
I:\wamp\bin\mysql\mysql5.5.24\bin> mysql -u root
این دستور ما را به پایگاه داده ها با شناسه کاربری root بدون هیچ روزی وصل می کند. اما این کار به دلایل امنیتی درست نیست و بهتر آن است که برای شناسه root یک رمز برگزینیم:
نقل قول: I:\wamp\bin\mysql\mysql5.5.24\bin> mysqladmin -u root password "darsnameh"
حال کاربر ریشه پایگاه رمز "darsnameh" را داراست. برای ورود باید به شیوه زیر عمل کرد:

نقل قول: برای جلوگیری از تکرار، از نوشتن آدرس دیگر خودداری می کنیم >mysql -u root -p
Enter Password: darsnameh
mysql>
این علامت ورود در پایگاه است. در حال حاضر به پایگاه داده ها وصل شدیم. البته برای ساختن کاربرهای جدید هم می توانید به طریق زیر عمل کنید:
نقل قول: >CREATE USER 'test' IDENTIFIED BY 'your_password';
نکته: در صورت تغییر رمز کاربر ریشه به هنگام باز کردن صفحه phpMyAdmin، به یک خطا می خورید. برای رفع این مشکل باید رمز را در داخل فایل تنظیمات وارد کنید. ابتدا به آدرس زیر رفته:

نقل قول: wamp\apps\phpmyadmin
و فایل config.inc.php را توسط ویرایشگر باز نموده و تغییرات زیر را انجام دهید:

کد php:
$cfg['Servers'][$i]['verbose'] = 'localhost';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'dars';
$cfg['Servers'][$i]['AllowNoPassword'] = true
لطفا تغییرات را بر اساس نام کاربری و رمز آن وارد کنید. موارد مهمی که اغلب نیاز به تغییر دارند به شرح زیر هستند:

کد php:
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'dars'



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

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

کد php:
show datanases

این کار لیستی از تمام پایگا‌ه داده‌ها را برای مان نمایش می دهد.

اجازه بدهید با پاک کردن پایگا‌ه هایی که دیروز ساختیم شروع کنیم:

کد php:
DROP DATABASE darsnameh
حال فرض کنید می خواهیم پایگاه داد‌ه جدیدی ساخته و در آن جدول درس قبلی را هم اضافه کنیم:

کد php:
CREATE DATABASE darsnameh 
قبل از ساخت جدول ابتدا باید مشخص کنیم که در کدام پایگاه می خواهیم جدول اضافه کنیم:

کد php:
> USE darsnameh ;
Database changed //  پیام تغییر پایگاه 

خب تا به اینجا پایگا‌هی با نام darsnameh ساخته شد و به آن متصل شدیم، مرحله بعدی ساخت جدول و ستون هایش است. جدولدرس قبل یادتان هست؟


 [تصویر:  attachment.php?aid=13676]
ساختار درست کردن جدول به شکل زیر است:
کد:
CREATE  TABLE   table_name
(
column_name1    data_type,
column_name2    data_type,
column_name3    data_type,
....
);
نام جدول که users است و دارای ۵ ستون. ابتدا باید جدول و ستون هایش را ساخت، وارد کردن داده ها باید در مرحله دیگری صورت بپذیرد:
کد:
> CREATE TABLE  users
(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
FirstName VARCHAR(20) NOT NULL,
LastName VARCHAR(40) NOT NULL,
Email VARCHAR(50),
PRIMARY KEY (ID)
) ;
  • INT: نوع صحیح، نوع داده هایی که در این ستون قرار می گیرند.

  • UNSIGNED: این داده ها بدون علامت و همه مثبت هستند.

  • NOT NULL: این خانه نمی تواند خالی بماند و حتما باید مقدار داشته باشد.

  • AUTO_INCREMENT: مقدار خانه ها را به طور اتوماتیک از 1 به بعد وارد می کند.

  • VARCHAR(20): نوع رشته ای، نوع داده هایی که در این ستون باید وارد شوند.

  • PRIMARY KEY (ID): انتخاب ستون ID به عنوان ستون کلیدی.

  • PRIMARRY KEY: وقتی به ستونی این المان را اضافه می کنید، آن ستون تبدیل به ستون منحصر به فرد می شود و رکورد‌هایی که می خواهید وارد جدول کنید را منحصر به فرد می‌کند.
هر جدول باید یک کلید اصلی داشته باشد و هر جدول تنها می‌تواند یک کلید اصلی داشته باشد. ستون کلید اصلی هرگز نمی‌تواند مقدار NULL داشته باشد. NULL مقداری است به معنی هیچ اما با ستون خالی متفاوت است. مقداری که وارد ستون کلید اصلی می شود باید منحصر به فرد باشد.
اینها ویژگی‌های ستون کلید اصلی دار هستند که باعث ایجاد قابلیت هایی در مورد نوشتن، خواندن و جستجو در جدول می شوند. در ادامه دوره با استفاده از این ویژگی، مفهوم آن بیشتر روشن خواهد شد.
در بخش قبل ما یک پایگاه داده ها درست کردیم و در درون آن هم جدولی ساختیم. حال برای دیدن جدول کافی است که دستور زیر را وارد کنید:
کد:
> SHOW TABLES;
mysql> SHOW TABLES;
+---------------------+
| Tables_in_darsnameh |
+---------------------+
| users                        |
+---------------------+
1 row in set (0.00 sec)

خروجی دستور به صورتی که مشاهده می کنید می شود. برای دیدن جزییات جدول دستور زیر را بزنید:
نقل قول: EXPLAIN users;
و یا


DESCRIBE users;
هر دوی این دستورات مشخصات جدول را برای شما نشان می دهند.

نکته: فراموش نکنید که قبل از هر کاری با پایگاه داده ها، باید ابتدا آن را انتخاب کنید:
نقل قول: > USE darsnameh;

خب تا به اینجا ما دو شیوه ساخت پایگاه داده ها و نحوه کار با آن را یاد گرفتیم. مرحله بعدی انبار کردن یا نوشتن داده ها در پایگاه است. برای نوشتن داده ای در پایگاه می توان به دو صورت عمل کرد.
۱- استفاده از محیط و دستورات SQL: با این شیوه می توان به طور مستقیم داده ها را وارد جدول پایگاه نمود.
۲- استفاده از پی اچ پی برای ثبت داده ها در پایگاه: در داخل کد‌های پی اچ پی از دستورات SQL استفاده کرده و داده ها را در آن می گذاریم.
از آنجایی که هدف ما یادگیری MySQL یا همان پایگاه داده های MySQL برای استفاده و تعامل با پی اچ پی است، از مورد اول صرف نظر می کنیم. اما این نکته را هم لحاظ کنید که شیوه کار چه به صورت مستقیم و چه به صورت استفاده از پی اچ پی، یکی است؛ پس با یادگیری دستورات توانایی هر دو را خواهید داشت.
این درس را هم در اینجا به پایان می بریم، شیوه یادگیری زبان برنامه نویسی SQL  در این دوره به صورتی خواهد بود که دستورات SQL را به طور موازی با پی اچ پی در زمان های لازم ارائه خواهیم داد. به این ترتیب شما با مفاهیم پیشرفته SQL به طور عملی و در حال بکارگیری آن بهتر آشنا خواهید شد.
در درس بعد ما به سراغ تارنمای خودمان رفته و موارد یاد گرفته شده تا به امروز را در آن پیاده می کنیم. پس لطفا قبل از اینکه به درسبعدی بروید، تا جای ممکن تلاش کنید که مفاهیم گفته شده را خوب یاد بگیرید، چرا که از این به بعد از تمام این موارد در ساخت الگوهای مورد استفاده در تارنما استفاده خواهیم کرد.


فایل‌(های) پیوست شده بندانگشتی (ها)
   

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
(آخرین ویرایش در این ارسال: ۳۰-فروردین-۱۳۹۵, ۱۳:۰۴:۴۶، توسط Ghoghnus.)
۳۰-فروردین-۱۳۹۵, ۱۳:۰۴:۰۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : lord_viper
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,497
موضوع‌ها: 270
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1652
( 3938 تشکر در 1453 ارسال )
ارسال: #13
RE: آموزشی مقدماتی پی اچ پی (PHP)
حال که از نظر دانش مقدماتی پی اچ پی و پایگاه داده ها به سطح خوبی رسیدیم، اجازه بدهید از تمامی این دانش بهره برده و آن را در تولید و ساخت یک برگه ثبت نام پیشرفته تر به کار بریم.
عملکرد خوب پی اچ پی و هماهنگی مورد قبول آن با پایگاه داده ها، این زبان را در سطح گسترده ای مورد قبول برنامه نویسان قرار داده است. حال در این درس ما هم از این قابلیت پی اچ پی استفاده کرده و یک فرم ثبت نام که داده ها را در پایگاه انبار می کند و در صورت لازم از آنها استفاده می کند، می سازیم.
قبل از ادامه شما باید مفاهیمی که تا به حال گفته شده را به خوبی درک کرده باشید تا در طول این درس به مشکل نخورید.
 
ارتباط با پایگاه داده ها
در زمان آموزش MySQL، طریقه ارتباط با پایگاه داده ها را از طریق phpMyAdmin و CMD به طور مستقیم و بدون بکارگیری پی اچ پی شرح دادیم. اما مسئله اصلی این است که ما می خواهیم از پایگاه داده ها توسط پی اچ پی و با یک تعامل دو طرفه استفاده کنیم.
برای بکارگیری این کار باید از طریق توابع از قبل تعریف شده در پی اچ پی عمل کرد. ابتدایی ترین کار برای ارتباط استفاده از تابع زیر است:
کد php:
$dbc mysqli_connect hostname username password db_name ); 
این تابع عمل ارتباط با پایگاه را انجام می دهد. پارامترهای آن به شرح زیر هستند:
  • hostname: در اصل همان مکان برای رجوع به پایگاه است. معمولا Localhost است ولی در شرایطی ممکن است متفاوت باشد که باید از سرویس دهنده در مورد آن جویا شد.

  • username: این شناسه کاربری است که در زمان ساخت پایگاه درست کردید.

  • password: رمزی که به شناسه کاربری برای اتصال به پایگاه داده اید.

  • db_name: نامی که برای پایگاه داده ها هنگام ساخت آن انتخاب کردید.
 
ساخت فایل ارتباط با پایگاه
یک راه درست برای انجام این عمل ساختن یک فایل مجزا برای ارتباط با پایگاه داده است که با داشتن این فایل در هر زمان که نیاز باشد، کافیست که فایل را در محل مناسب وارد کنیم. حتما تابع وارد کردن فایل یادتان هست!

کد php:
include(' db_connection.php '
از دیگر تکنیک هایی که می شود به کار برد قرار دادن مشخصات پایگاه در ثابت ها است. این کار امنیت ارتباط با پایگاه را بالا می برد. برای ساخت فایل ارتباط با پایگاه ابتدا فایلی با نام db_connection.php بسازید و در داخل آن کدهای زیر را قرار دهید:


کد php:
<?php # db_connection.php
// این فایل شامل مشخصات برای ارتباط با پایگاه داده ها است
// با وارد کردن این فایل پایگاه انتخاب و ارتباط با آن برقرار می شود.
DEFINE ('DB_USER''root');   //  نام کاربری را در ثابت قرار می دهد.
DEFINE ('DB_PASSWORD''dars');
DEFINE ('DB_HOST''localhost');
DEFINE ('DB_NAME''darsnameh');
$dbc mysqli_connect (DB_HOSTDB_USERDB_PASSWORDDB_NAME)
OR die (
' به پایگاه متصل نشد: ' mysqli_connect_error() );
?>
همان طور که مشاهده می کنید، در ابتدا مشخصات لازم به داخل ثابت ها قرار داده شده است و بعد ارتباط توسط تابع mysqli_connect برقرار می شود.
کد php:
$dbc mysqli_connect (DB_HOSTDB_USERDB_PASSWORDDB_NAME)
OR die (
' به پایگاه متصل نشد: ' mysqli_connect_error() ); 
برای شرح این دستور باید به سه نکته اشاره کرد:
۱. عمل ارتباط در داخل متغیری با نام $dbc ذخیره می شود. این کار یک اشاره گر به منظور رجوع بعدی در داخل برنامه می سازد.
۲. mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME): این تابع که کار ارتباط را انجام می دهد، چهار پارامتر دارد که با هر چهارتایشان آشنا هستیم.
۳. die (' به پایگاه متصل نشد: ' . mysqli_connect_error()Sad این تابع در صورت بروز خطا و عدم ارتباط با پایگاه یک متن «به پایگاه متصل نشد» را به همراه متن خطا چاپ می کند.
نکته: در زمان انجام بررسی ابتدایی و قبل از انتشار تارنما در اینترنت، برای دیدن و رفع خطا، قسمت مورد سوم را اضافه کنید. اما در زمان انتشار به دلایل امنیتی از این کار خودداری کنید. اگر می خواهید این تابع متن خطا را چاپ نکند، کافیست که یک علامت @ در ابتدای کد اضافه کنید:

کد php:
$dbc = @mysqli_connect (DB_HOSTDB_USERDB_PASSWORDDB_NAME)
OR die (
' به پایگاه متصل نشد: ' mysqli_connect_error() ); 



حال فایل ارتباط با پایگاه آماده است که در زمان لازم با تابع زیر آن را وارد فایل اصلی می کنیم:

کد php:
require_once ('db_connect.php'); // اتصال به پایگاه 

به خاطر اهمیت این فایل آن را با تابع require_once وارد می کنیم تا در زمان بروز خطا از ادامه اجرای برنامه جلوگیری شود.

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

کد php:
mysql -u root -p
password
dars 
ابتدا به جدول هایی که از قبل درست کردیم سری می زنیم:

کد php:
mysqlshow tables;
+---------------------+
Tables_in_darsnameh |
+---------------------+
users                                |
+---------------------+
1 row in set (0.00 sec
خروجی دستور نشان می دهد که از قبل جدولی با نام users  وجود دارد. بهتر است ابتدا این جدول را پاک کرده و بعد جدول جدید را بسازیم:
کد php:
mysql>DROP TABLE users 
برای پاک کردن جدول از دستور بالا استفاده می کنیم.

حال جدول جدید را با توجه به نیاز برگه ثبت نام می سازیم.

   
دستورات زیر را برای ساخت این جدول وارد کنید:
کد:
CREATE TABLE users
(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(20) NOT NULL,
last_name  VARCHAR(30) NOT NULL,
username  VARCHAR(20) NOT NULL,
password  CHAR(40) NOT NULL,
email VARCHAR(80) NOT NULL,
register_date   DATETIME NOT NULL,
PRIMARY KEY (ID)
) CHARSET utf8 ;    // نوع استاندارد کاراکتری جدول
تا به اینجا فایل ارتباط با پایگاه و جدول مورد نیاز ثبت داده ها را آماده کردیم. از این به بعد برای ساختن این برگه موارد دیگر را اضافه می کنیم.
پوشه ای به نام DatabaseConnecion در پوشه www برای این درس آماده کنید. در داخل آن محتوای پوشه Register که در درس های قبل داشتیم را وارد کنید.
از داخل پوشه includes فایل header.html را برای انجام بعضی تغییرات باز کنید و کدهای زیر را با کدهای قبلی تعویض کنید:
کد:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
<title> <?php echo $page_title; ?> </title>
<link rel="stylesheet" href="includes/style.css" type="text/css" media="screen" />
</head>
<body>
<div id="wrap">
<div id="header">
<h1> درسنامه </h1>
<div id="navigation">
<ul>
<li><a href="index.php"> خانه</a></li>
<li><a href="register.php">  ثبت نام </a></li>
</ul>
</div>
</div>
<div id="content">
کار با این فایل تمام است آن را ببندید. فایل بعدی style.css است. موارد تکراری را با کدهای قبلی جابه جا و موارد جدید را اضافه کنید.
کد:
#wrap{
    border:0px solid #ccc;
    width:751px;
    text-align:right;
    overflow:hidden;
    background-color:#fff;
    margin:auto;}
#header {
    border:0px solid #bbb;
    height:130px;
    margin:0 auto;
    width:100%;
}
#content {
    border:0px solid #ccc;
    border-top:1px dashed #ddd;
    border-bottom:1px dashed #ddd;
    width:100%;
    height:auto;
    min-height:400px;
    padding:0 0 20px 0;
}
.error{
    color : #F00 ;  margin : 5px 20px 5px auto;
}
.again { margin : auto 20px 0 auto; }
ساخت فایل register.php

در کنار فایل index.php، فایل دیگری به نام register.php بسازید و کدهای زیر را در داخل آن بنویسید:
کد php:
<?php
$page_title 
'ثبت نام';
include (
'includes/header.html'); ?>
<h1>  ثبت نام </h1>
<?php
if (isset($_POST['submit']))
{
require_once (
'mysqli_connect.php'); // اتصال به پایگاه
$errors = array(); //  یک آرایه برای نگهداری خطاها می سازد
$fname $_POST['f_name'] ;
$lname $_POST['l_name'] ;
$username $_POST['username'];
$pass1 $_POST['pass1'];
$pass2 $_POST['pass2'];
$email $_POST['email'];
if ( !empty(
$fname) && !empty($lname) && !empty($username) && !empty($pass1) && !empty($pass2) && !empty($email) )
{
 
    $fn mysqli_real_escape_string($dbc trim($fname));
 
    $ln mysqli_real_escape_string($dbc trim($lname));
 
    $un mysqli_real_escape_string($dbctrim($username));
 
    $e  mysqli_real_escape_string($dbctrim($email));
 
    if($pass1 == $pass2 {
 
         $passmysqli_real_escape_string($dbctrim($pass1));
 
    }else {
 
         $errors[] = "لطفا هر دو رمز یکسان باشند.";
 
    }
} else {
 
    if(empty($fname))
 
    $errors[] = ' لطفا نام خود را وارد کنید.'; }
 
    if(empty($lname))
 
    $errors[] = ' لطفا نام خانوادگی خود را وارد کنید.'; }
 
    if(empty($username))
 
    $errors[] = ' لطفا شناسه کاربری خود را وارد کنید.'; }
 
    if(empty($password))
 
    $errors[] = ' لطفا رمز خود را وارد کنید.'; }
 
    if(empty($email))
 
    $errors[] = ' لطفا رایانامه خود را وارد کنید.'; }
 
    }
if (empty(
$errors))  {
 
    $query "INSERT INTO users (first_name, last_name, username, password, email, register_date) VALUES ('$fn', '$ln', '$un', SHA1('$pass'),'$e',  NOW() )"//  نوشتن درخواست و گذاشتن در متغیر
 
    $r = @mysqli_query ($dbc$query); // اجرای درخواست
 
    if ($r // اگر درست اجرا شد
 
    echo ' از ثبت نام شما سپاسگزاریم. ' '<br />' $fn '<br />'  $ln  '<br />'  $un '<br />' SHA1$pass ) . '<br />' $e ;
}else { 
// اگر درست اجرا نشد
 
    echo '<h1> خطا در ثبت نام </h1><p class="error"> امکان ثبت نام برای شما به دلیل وجود مشکلی وجود ندارد. لطفا دوباره امتحان کنید. </p>';
 
    echo '<p>' mysqli_error($dbc) . '<br /><br />Query: ' $query '</p>' }
 
    mysqli_close($dbc); // Close the database connection.
 
         include ('includes/footer.html');
 
         exit(); 
}else{
echo 
'<div class="error">:خطاهای زیر صورت گرفته<br />';
 
    foreach ($errors as $msg) { // Print each error.
 
         echo "  .$msg - <br />"; }
 
         echo '</div><span class="again"> دوباره امتحان کنید.</span>';
 }// پایان شرط ارسال
?>
<!-- کد برای ساخت فرم - form.html -->
<form action="register.php" method="post">
<fieldset>
<legend align="right">لطفا فرم زیر را پر کنید</legend>
<label> نام </label>
<input type="text" name="f_name" value="<?php if (isset($_POST['f_name'])){ echo $_POST['f_name'];} ?>" />
<label> نام خانوادگی </label>
<input type="text" name="l_name" value="<?php if (isset($_POST['l_name'])){ echo $_POST['l_name'];} ?>" />
<label> شناسه </label>
<input type="text" name="username" value="<?php if (isset($_POST['username'])){ echo $_POST['username'];} ?>" />
<label> رمز </label>
<input type="password" name="pass1" />
<label> رمز  تکرار</label>
<input type="password" name="pass2" />
<label> رایانامه </label>
<input type="text" name="email" value="<?php if (isset($_POST['email'])){ echo $_POST['email'];} ?>" />
</fieldset>
<input type="submit" name="submit" value="ارسال" class="submit"/>
</form<?php include ('includes/footer.html'); ?>
توضیح کدها

بیشتر این کدها را از قبل دیده ایم، در اینجا فقط به قسمت های جدید اشاره می کنیم:
کد php:
if (isset($_POST['submit']))
{
require_once (
'mysqli_connect.php'); // اتصال به پایگاه
$errors = array(); //  یک آرایه برای نگهداری خطاها می سازد 

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

بعد یک آرایه برای نگهداری خطاها ساخته می شود، تا در صورت نیاز همه خطاها به طور منظم در یک آرایه نگهداری شوند.
کد php:
if ( !empty($fname) && !empty($lname) && !empty($username) && !empty($pass1) && !empty($pass2) && !empty($email) )
{
 
    $fn mysqli_real_escape_string($dbc trim($fname));
 
    $ln mysqli_real_escape_string($dbc trim($lname));
 
    $un mysqli_real_escape_string($dbctrim($username));
 
    $e  mysqli_real_escape_string($dbctrim($email));
 
    if($pass1 == $pass2)
 
    {
 
    $passmysqli_real_escape_string($dbctrim($pass1));
 
    }
 
    else
 
    {
 
         $errors[] = "لطفا هر دو رمز یکسان باشند";
 
    }

این قسمت چند شرط را شامل می شود که بعضی ها در حالت تو در تو هستند.
شرط ابتدایی بررسی می کند که اگر تمام متغیرهایی که بر دارنده داده های گرفته شده از کادرهای فرم هستند، پر باشند، آنها را پس از گذراندن از تابع دیگری که امنیت را مهیا می کند در متغیرهای جدید قرار دهد.
این متغییرهای جدید برای انتقال داده ها به پایگاه داده ها استفاده خواهند شد. شرطی که در داخل این شرط گذاشته شده است، وظیفه بررسی یکسان بودن هر دو کادر شامل رمز را دارا است. معمولا برای انتخاب رمز دو بار از کاربر خواسته می شود که رمز را وارد کند تا از بروز خطا جلوگیری شود.
کد php:
mysqli_real_escape_string(); 
برای برقراری امنیت، باید هر متنی از داخل این تابع بگذرد. این تابع متن را بررسی می کند و در صورت داشتن کاراکترهای مشکل ساز، آن را خالی و تمیز می کند.
کد php:
trim($fname
این تابع فاصله های غیر ضروری میان متون را از بین می برد.
کد php:
else  {
 
    if(empty($fname))
 
    $errors[] = ' لطفا نام خود را وارد کنید.'; }
 
    if(empty($lname))
 
    $errors[] = ' لطفا نام خانوادگی خود را وارد کنید.'; }
 
    if(empty($username))
 
    $errors[] = ' لطفا شناسه کاربری خود را وارد کنید.'; }
 
    if(empty($password))
 
    $errors[] = ' لطفا رمز خود را وارد کنید.'; }
 
    if(empty($email))
 
    $errors[] = ' لطفا رایانامه خود را وارد کنید.'    
در قسمت دوم شرط یا همان else، در زمانی که هر کدام از متغیرها خالی باشند، متنی را برای هشدار دادن به کاربر در داخل آرایه $errors  می گذارد. این متن ها به صورت مرتب در خانه های آرایه جای می گیرند. در ادامه از این آرایه استفاده خواهد شد.

اتفاقی که تا به اینجا افتاده، این است که برنامه با یک شرط از زده شدن دکمه ارسال اطمینان حاصل می کند و بعد مقادیر داخل کادرها را به متغیرها سپرده تا در ارتباط با پایگاه در آن ذخیره کند.
کد php:
if (empty($errors))


این شرط ابتدا بررسی می کند که متغیر $errors  خالی است یا نه. اگر این متغیر خالی باشد، یعنی خطایی در آن ثبت نشده و تمام داده های گرفته شده از کادرهای فرم وارد متغیرهای اصلی شده اند.

حال که خطایی وجود ندارد، باید داده ها را وارد پایگاه داده ها کرد. در ابتدای فایل دیدیم که با وارد کردن فایل پایگاه به آن متصل شدیم. حال نوبت اندوختن داده ها در آن است. این کار را با چند تابع انجام می دهیم.
کد php:
$query "INSERT INTO users (first_name, last_name, username, password, email, register_date) VALUES ('$fn', '$ln', '$un', SHA1('$pass'),'$e',  NOW() )"//  نوشتن درخواست و گذاشتن در متغیر 

 

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

کد:
INSERT INTO tablename (column1, column2  …)
VALUES (value1, value2 …)
ترجمه این دستور می شود:
در جدولی به نام «نام جدول» tablename
و با ستون های «نام ستون ها»   (column1, column2)
مقادیر «مقادیر» VALUES را وارد کن.
نام فنی این کار نوشتن query (بخوانید کوئری) است که ما این query را در داخل متغیری ذخیره می کنیم.
کد:
$r = @mysqli_query ($dbc, $query); // اجرای درخواست
اجرای این "کوئری" با تابعی به نام mysqli_query انجام می گیرد. این تابع دارای دو پارامتر است.
  • $dbc: این همان متغیری است که در فایل db_connection.php ارتباط با پایگاه را در آن قرار دادیم.

  • $query: و این هم متغیری است که در همین فایل دستورات وارد کردن را در آن قرار دادیم. این تابع کار وارد کردن داده ها را در پایگاه انجام می دهد.
    if ($r)  { // اگر درست اجرا شدecho ' از ثبت نام شما سپاسگزاریم. ' . '<br />' . $fn . '<br />' .  $ln  . '<br />' .  $un . '<br />' . SHA1( $pass ) . '<br />' . $e ;
این شرط درستی انجام وارد کردن داده ها در پایگاه را بررسی می کند که در صورت درستی، پیغام موفقیت می دهد.
کد php:
}else  // اگر درست اجرا نشد
echo '<h1> خطا در ثبت نام </h1><p class="error"> امکان ثبت نام برای شما به دلیل وجود مشکلی وجود ندارد. لطفا دوباره امتحان کنید. </p>';
echo 
'<p>' mysqli_error($dbc) . '<br /><br />Query: ' $query '</p>'; }
 
    mysqli_close($dbc); // Close the database connection.
 
    include ('includes/footer.html');
 
    exit();

اگر وارد کردن داده ها در پایگاه با موفقیت انجام نشود، وارد قسمت else شرط می شود که پیغام مشکل ایجاد شده را می دهد. بعد از آن ارتباط با پایگاه را توسط mysqli_close($dbc);  قطع می کند.
کد php:
else{
echo 
'<div class="error">:خطاهای زیر صورت گرفته<br />';
 
    foreach ($errors as $msg) { // Print each error.
echo "  .$msg - <br />"; }
 
     echo '</div><span class="again"> دوباره امتحان کنید.</span>';
}
}
// پایان شرط ارسال 
این قسمت در اصل قسمت else شرط بررسی کننده متغیر  $errors است. زمانی برنامه وارد این قسمت می شود که این متغییر دارای مقدار باشد و این یعنی کاربر یکی از موارد ثبت نام را خالی گذاشته و یا هر دو رمز را به طور یکسان وارد نکرده است. در اینجا تمام متن هایی که به صورت اخطار وارد این آرایه شده را با یک تابع حلقه چاپ می کند تا کاربر آنها را درست وارد کند.
بخش های عددی فایل را قبلا در درس های قبلی دیده ایم، تنها تفاوت این است که ما در اینجا چند کادر اضافه برای مواردی که اضافه کردیم داریم.
 
خلاصه این درس
در این درس ما یک برگه ثبت نام درست و محتوای آن را درون پایگاه داده ها ثبت کردیم. این درس شامل ساختن فایلی مجزا برای اتصال به پایگاه با مشخصات لازم برای ارتباط و همچنین چگونگی وارد کردن داده ها به درون پایگاه بود.
در این درس با چند تابع جدید آشنا شدیم که عمل اتصال به پایگاه توسط پی اچ پی با آنها انجام می شود. از موارد دیگر می توان به استفاده از یک آرایه برای نگهداری خطاها و چاپ خطاها در زمان لازم نام برد. همچنین با یک دستور دیگر زبان SQL، برای وارد کردن داده ها در جدول مورد نظر آشنا شدیم.
در درس بعدی با چگونگی خواندن داده های ثبت شده در پایگاه و استفاده از آنها برای ردیابی کاربران در تارنما آشنا خواهیم شد.

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
۰۶-اردیبهشت-۱۳۹۵, ۱۴:۳۲:۵۱
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [آموزشی] مجموعه آموزشی php bghad1 2 3,512 ۲۷-اسفند-۱۳۹۳, ۱۴:۵۱:۱۷
آخرین ارسال: bghad1
  آموزشی مقدماتی پی اچ پی (PHP) Ghoghnus 9 7,781 ۱۶-خرداد-۱۳۹۳, ۱۰:۰۰:۲۸
آخرین ارسال: Ghoghnus

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS