آموزش ساخت یک صفحه وب با php

ساختن یک صفحه وب :

برای این که اطلاعات یا درخواست‌های کاربر را دریافت کنیم، 3 روش وجود دارد استفاده از URLs/Links (GET) استفاده از Forms(POST) استفاده از Cookies
دو فایل php خواهیم ساخت، یکی به نام firstPage و دیگری به نام secondPage، حال می‌خواهیم از صفحه اول به صفحه دوم برویم برای این کار از تگ a مربوط به html استفاده می‌کنیم و آدرس صفحه‌ای را که می‌خواهم در href قرار می‌دهیم، وقتی بر روی لینک ایجاد شده کلیک کنیم به صفحه دوم می‌رویم، اگر بخواهیم پارامتری به صفحه دوم بفرستیم می‌توانیم با استفاده از کویری استرینگ این کار را انجام دهیم. برای این کار بعد از آدرس صفحه مورد نظر علامت سوال قرار می‌دهیم و نام کاراکتر علامت مساوی و سپس مقداری که می‌خواهیم انتقال پیدا کند را می‌نویسیم، در مثال وقتی روی لینک ایجاد شده کلیک کنیم، به صفحه دوم می‌رویم اگر به URL دقت کنید می‌بینید که http://localhost/codes/secondPage.php?id=2 چاپ شده است .

حال باید این داده را در صفحه دوم بگیریم برای این کار از سوپرگلوبالی به نام $_GET استفاده می‌کنیم، به صفحه دوم بروید و متغیری به نام id یا هر نام دیگری ایجاد کنید، سپس با استفاده از $_GET مقدار id را درون آن بریزید و چاپ کنید، برای آن که ببینید در $_GET چه چیزهایی وجود دارد می‌توانید آن را print_r کنید.

در هنگام استفاده از URL ممکنه است مشکلاتی ایجاد شود. بعضی از کلمات برای url معنی خاصی دارند مثلا &، اگر بخواهیم دو پارامتر را در url ارسال کنیم از این علامت استفاده می‌کنیم

همان طور که می‌بینید در صفحه اول پارامتر company را در url ارسال کردیم که داخل آن darkoob & we وجود دارد اما وقتی در صفحه دوم این پارامتر را می‌گیریم فقط darkoob برای من چاپ می‌شود چرا چون علامت & برای تعریف یک کاراکتر دیگر در url استفاده می‌شود، در اینجا web به عنوان یک پارامتر دیگر در نظر گرفته شده است. برای رفع این مشکل از urlencode استفاده می‌کنیم .

ممکن است بخواهیم آدرسی را در url ارسال کنیم، نه فقط یک پارامتر را برای این کار از rawurlencode استفاده می‌کنیم.

urlencode برای کویری استرینگ‌ها و rawurlencode برای مسیرها است به مثال زیر دقت کنید.

اگر کدبالا را اجرا کنیم خروجی زیر را خواهید دید .

phptutotial14

در لینک اول سیستم به دنبال bio/Molana فاصله jalalodin … می‌گردد اما در لینک دوم سیستم به دنبال /bio/Molana+Jalalodin+Balkhi خواهد گشت، اما ما چیزی به اسم Molana+Jalalodin+Balkhi نداریم. این تفاوت استفاده از rawurlencodeو urlencode است.
فقط url ها نیستند که کاراکترهای رزرو شده دارند بلکه html نیز همین گونه است. فرض کنید می‌خواهم لینکی بسازیم و در آن بنویسم<Click>&lean more در این صورت html این عبارت را به عنوان یک تگ می‌شناسد و <Click> نمایش داده نمی‌شود.

phptutotial15
بعد از استفاده از htmlspecialchars
phptutotial16

حال که مطالب جلسه گذشته را فرا گرفتیم، یک url فرضی خواهیم ساخت.

چنین لینکی وجود ندارد، اما روی لینک به کلیک کنید و در نوار آدرس، آدرس ایجاد شده را ببینید.

کاملا صحیح ایجاد شده است و درست همان چیزی چاپ می‌شود که می‌خواهیم .
اگر بخواهیم از فانکشنی که در یک صفحه php وجود دارد داخل صفحه دیگری استفاده کنیم چه کاری باید انجام دهیم ؟؟؟
از include یا require ، include_once ، require_once استفاده می‌کنیم.

تفاوت آنها در این است که اگر از include استفاده کنید، اما صفحه مورد نظر وجود نداشته باشد، برنامه هم چنان به کار خود ادامه خواهد داد. اما در هنگام استفاده از require اگر صفحه وجود نداشته باشد می‌گوید “هی صفحه مورد نظر وجود نداره و این صفحه خیلی مهمه”، برای مثال در صفحه‌ای که مربوط به اتصالات دیتابیس شما می‌باشد بهتر است از reqire استفاده کنید .
Include_once() فقط یک بار عمل اینکلود را انجام می‌دهد و اگر دوباره بخواهیم این عمل انجام شود این کار انجام نخواهد شد .
فکر می‌کنم عمل کرد require_once نیز مشخص شده باشد.
من 3 فایل php ایجاد می‌کنم به نام‌های

سپس از این صفحه‌ها در صفحه سوم خود یعنی includes استفاده می‌کنم :

Page Redirection :

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

برای این کار از header استفاده خواهیم کرد.

در مثال فوق هر موقع به صفحه‌ی redirect.php برویم بدون معطلی به صفحه basic.php انتقال خواهیم یافت.

کار با فرم :

دو فایل php می‌سازم اولی form.php نام دارد، داخل آن فرمی قرار دارد که اطلاعات را با متد post ارسال می‌کند. بعد از زدن دکمه submit در این صفحه به صفحه formProcessing.php منتقل می‌شویم، در formProcessing.php اطلاعات دریافت و چاپ می‌شوند.

برای اینکه ببینیم چه چیزی در $_POST قرار دارد می توانیم آن را print_r کنیم، می‌دانیم که چگونه از $_POST اطلاعات را بگیریم اما مشکل اینجاست که ممکنه است اصلا اطلاعات پست نشده باشند در این صورت با خطا مواجه می‌شیم، برای رفع خطا چک می‌کنیم اگر دکمه سابمیت زده شده بود (اگر دکمه سابمیت زده شود مقدار کلید سابمیت، سابمیت خواهد بود. پس می‌توانیم با isset آن را چک کنیم ).آنگاه چک کن اگر username ست شده بود مقدار آن داخل متغییر username قرار گیرد (می توانید همان لحظه چاپش کنید ) در غیر این صورت داخل متغییر username کلمه default قرار گیرد.
برای password نیز همین کار را کردم

بعد از آن به این دو خط کد می‌رسید این دو خط همان کار if else را برای ما انجام می‌دهند، قسمت اول شرط یک شرط بولین است یعنی جواب یا true یا false می‌باشد. سپس علامت سوال بعد از آن کاری که اگر جواب true بود می‌خواهیم انجام شود را می‌نویسیم‌، بعد علامت دو نقطه بعد از آن کاری که اگر شرط false بود می‌خواهیم انجام شود را می‌نویسیم. اگر مستقیما وارد صفحه formProcessing.php شوید می‌بینید که مقادیر دیفالت برای ما چاپ می‌شوند و منظور مرا بهتر متوجه می‌شوید.
اگر بخواهیم یک فرم تنها را پروسس کنیم چگونه این عمل را انجام دهیم ؟؟
برای این کار آدرس همان صفحه را در action فرم قرار می‌دهیم، در مثال زیر من چک می‌کنم اگر submit زده شد مقدار username , password در داخل متغییرهای username , password قرار گیرد سپس اگر username ما برابر پوریا و password برابر 222 بود به صفحه basic.php برو در غیر این صورت پیام خطا چاپ شود.

همین طور صفحه‌ای به نام includedFunctions.php ساختم که در آن فانکشنی برای ریدایرکت کردن ایجاد شده است، در کد بالا می‌بینید که این صفحه را include_once کردم.

includedFunctions.php :

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

فانکشن hasPresence چک می‌کند اگر ورودی ما وجود داشت و خالی نبود مقدار true و در غیر این صورت مقدار false را به ما بر می‌گرداند، فانکشن hasMaxLength طول رشته را چک می‌کند، فانکشن formErrors آرایه‌ای از خطا ها را دریافت می‌کند، قرار است ما خطاهای خود را در داخل آرایه ریخته و به این فانکشن پاس دهیم، تا این فانکشن خطاها را برای ما چاپ کند.
به فایل formSingle باز می‌گردیم :

و اما کد‌های اضافه شده، ابتدا با دستور require_once فایل validationFunctions.php را فراخوانی می‌کنیم، می‌خواهم چک کنیم تا فیلدهای مان خالی نباشد. برای این کار باید از hasPresence که نوشته بودیم استفاده کنیم.

برای چک کردن username , password آرایه‌ای به نام fieldsRequired می‌سازیم. که داخل این آرایه username, password وجود دارد. البته نام آنها، سپس با یک foreach هرکدام از آنها را در داخل فانکشن hasPresence قرار می‌دهیم و چک می‌کنیم .
بیاید طول username , password را نیز چک کنیم تا از 30 و 8 بیشتر نباشد برای این کار هم مشابه قبل عمل می‌کنیم .
در قسمت پایین نیز برای اینکه بتواینم خطاها را مشاهده کنیم بعد از چاپ messege فانکشن formErrors را صدا زدیم. در آخر چک می‌کنیم اگر آرایه errors خالی بود، انتقال انجام شود.

به صفحه formSingle.php باز گردید یک بار username و یک بار password را خالی رها کنید می‌بینید که به برای شما پیغام خطا چاپ می‌شود یا پسورد را بیش از 8 کاراکتر قرار دهید خطای مربوطه نمایش داده خواهد شد.
به خاطر داشته باشید که شما می‌توانید این اعمال را به گونه‌ای دیگر نیز انجام دهید.

پیشنهاد می‌کنم این مقالات هم بخوانید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

۱ ستاره۲ ستاره۳ ستاره۴ ستاره۵ ستاره
(ستاره دهید)
Loading...
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on facebook