آموزش برنامه نویسی وب با PHP
در طی مسیر فراگیری دانش و توسعه مهارتهای برنامه نویسی وب پس از آموختن کلیاتی از CSS, HTML و JavaScript دیر یا زود اسمی از یک زبان برنامه نویسی سمت سرور مانند PHP به گوشمان خواهد خورد، ساختار وب به گونه ای است که از دو بخش سمت کاربر (مرورگر) و سمت سرور (جایی که صفحه وب یا برنامه تحت وب در آن قرار دارد) تشکیل شده و لذا صرف آشنایی با آنچه تا کنون آموخته ایم نمی تواند برای انجام فعالیت های حرفه ای و طراحی سیستم های پیشرفته کافی باشد و لزوما باید یک زبان برنامه نویسی سمت سرور مانند PHP را فرا بگیریم، با PHP می توانیم به صورت پویا آنچه را که کاربر باید در صفحه مرورگر خود ببیند مدیریت کنیم، به طور مثال اگر فرم اولیه ورود به سایت با HTML و CSS طراحی شده باشد، پس از ارسال نام کاربری و کلمه عبور به سرور، این PHP است که وظیفه تطبیق اطلاعات با پایگاه داده و صدور اجازه یا عدم اجازه دسترسی به پنل مدیریت را بر عهده دارد، با PHP می توانیم تقریبا هر خواسته ای که از سرور داشته باشیم را عملی و صفحات وب داینامیک و برنامه های تحت وب حرفه ای طراحی کنیم.
تعریف PHP به زبان ساده
اگر بخواهیم PHP را به زبان ساده تعریف کنیم می توانیم آن را زبان برنامه نویسی اسکریپتی چند منظوره بنامیم که به طور خاص برای وب توسعه یافته و جهت نوشتن برنامه های تحت وب کاربرد تخصصی دارد، این تعریف ترجمه ساده از عبارتی است که در سایت php.net درج شده است:
PHP is a popular general-purpose scripting language that is especially suited to web development.این زبان در سال 1994 میلادی توسط Rasmus Lerdorf با هدف نمایش آنلاین اطلاعات و رزومه شخصی به زبان C نوشته شد که به همین دلیل در ابتدا آن را Personal Home Page نامیدند که PHP مخففی از سرواژه های این عبارت است، بعدها با پیشرفت PHP عبارت توضیحی HyperText Preprocessor (پیش پردازنده ابرمتن) جایگزین عبارت فوق شد، منظور از پیش پردازنده ابرمتن این است که PHP ابتدا کدها و دستورات را با مفسر خود پردازش کرده و سپس خروجی را به مرورگر کاربر ارسال می کند.نکته: منظور از اسکریپتی بودن PHP این است که کدهای آن در مفسر سرور پردازش شده و مانند برنامه های رایج در قالب یک بسته نرم افزاری کامپایل نمی شوند.
چرا PHP بیاموزیم و با PHP برنامه نویسی کنیم؟
اغلب علاقمندان به فراگیری دانش برنامه نویسی وب پس از اینکه از مرحله زبان های سمت کاربر عبور می کنند در دو یا بعضا چندراهی انتخاب یک زبان برنامه نویسی سمت سرور به شک و تردید دچار می شوند، محدودیت های زمانی، انرژی و حوصله ای که برای فراگیری یک زبان برنامه نویسی صرف می شود این انتخاب را بیش از پیش حساستر کرده و حتی آینده حرفه ای ما را رقم می زند، اگر در وب عباراتی مانند "PHP یا ASP کدام بهتر است؟!" را جستجو کنید، ملاحظه می کنید که اغلب بین برنامه نویسان در این خصوص که کدام زبان مناسب تر است بحث های طولانی و بعضا متعصبانه رخ داده و هر کسی با دید خود به این قضیه نگاه می کند، اما واقعیت این است که هیچ زبانی کامل و بی نقص نیست و ما هم قصد نداریم PHP را با زبان های دیگر مقایسه کنیم چرا که هیچ محدودیتی از این نظر که بتوانیم از چند زبان برنامه نویسی استفاده کنیم وجود ندارد و در واقع مرزی برایمان به عنوان برنامه نویس نباید ترسیم کنیم، PHP را می آموزیم چون متخصص در امر وب است و تمام نیازهایمان را به خوبی پوشش می دهد، چون ساده و در عین حال قدرتمند، سریع و امن است، رایگان، کم دردسر و در دسترس است، کدنویسی با PHP اغلب به درک بهتر ساختار و پیچیدگی های وب کمک می کند، PHP از شیوه های برنامه نویسی معمولی و شی گرا به خوبی پشتیبانی می کند، برای کار با پایگاه داده اکستنشن های قوی و تخصصی دارد، PHP متن باز (Open-source) است و آنگونه که توسعه محصولات شرکت های بزرگ به پدیدآورنده محدود می شود وابسته به شرکت خاصی نیست، اغلب برنامه های رایگان و پرکاربرد مدیریت محتوای وب (CMS) به زبان PHP نوشته شده اند مانند وردپرس، جوملا، دروپال و...، PHP توسط گروهی حرفه ای از برنامه نویسان وب پشتیبانی می شود، وجود سایت مرجع php.net و جامعه وسیعی از کاربران در سطح وب خود نویدبخش رشد شتابان PHP و رفع نواقص احتمالی نسبت به زبان های مشابه و آینده روشن است، لذا می توان PHP را یکی از مناسبترین گزینه ها برای برنامه نویسی سمت سرور به شمار آورد.
فراگیری PHP، آسان و شیرین!
شاید در نگاه اول آموختن PHP کاری پیچیده به نظر برسد اما اصولا برای یادگیری زبان های برنامه نویسی کافیست ایده های ذهنی مان را خط به خط روی کاغذ بنویسیم و سپس با توجه به دستورالعمل و شیوه نگارش (Syntax) هر زبانی به دنبال راه حل تبدیل و فهماندن ایده به سیستم شویم (تبدیل زبان انسان به زبان ماشین)، این روند در مورد PHP نیز صادق است و خوشبختانه می توان این زبان را جزء آسانترین و شیرین ترین زبان های برنامه نویسی قلمداد کرد که در عین قدرتمندی از سادگی و روانی خاص خود برخوردار است، یادآور می شویم PHP یک زبان برنامه نویسی است و قاعدتا مباحث آن به هم مرتبط و حالت سلسله مراتبی خواهند داشت، لذا اکیدا توصیه می کنیم آموزش ها را گام به گام، آهسته و پیوسته و با تمرین کافی فرا بگیرید تا شیرینی کدنویسی با این زبان را به بهترین نحو تجربه کنید.
برای کدنویسی PHP از چه برنامه ای استفاده کنیم؟
اکنون که با کلیات برنامه نویسی با PHP آشنا شدیم نوبت به ورود عملی به این مسیر است، در اولین گام این سوال مطرح می شود که برای کدنویسی PHP از چه برنامه ای باید استفاده کنیم؟ در پاسخ می توان چند برنامه قوی و کاربردی مختلف را پیشنهاد داد از جمله برنامه قدرتمند و مناسب PhpStorm (توصیه می کنیم برای شروع از این برنامه استفاده کنید)، برنامه شرکت ادوبی با نام Adobe Dreamweaver، برنامه رایگان و متن باز NetBeans IDE - PHP Development با محیط کدنویسی قوی و پشتیبانی مناسب، در کنار این برنامه ها استفاده از ویرایشگرهای به ظاهر ساده مانند ++Notepad برای کار با فایل های PHP ضروری خواهد بود، خوشبختانه تمام موارد نامبرده با یک جستجوی کوتاه در وب در دسترس می باشند.
اجرای کدهای PHP در سیستم عامل
از آنجایی که PHP یک زبان سمت سرور (Server-side) است برای اجرای آن در سیستم خود نیاز به برنامه هایی تحت عنوان سرور مجازی (Localhost) داریم که اغلب به صورت رایگان در دسترس هستند، برای نمونه یکی از بهترین ها در آدرس زیر قابل دریافت است.
apachefriends.orgهمچنین:wampserver.comو همچنین:appservnetwork.comپس از نصب هر یک از برنامه های XAMPP، WampServer یا AppServ اکنون شما قادر به اجرای فایل های PHP بر روی سیستم خودتان خواهید بود (توصیه می کنیم یکی از نسخه های برنامه XAMPP را متناسب با سیستم خود انتخاب کرده و نصب نمائید)، پس از نصب و اجرای برنامه به آیکن مربوطه که معمولا در نوار وظیفه سیستم عامل مشخص است دقت نمائید به طور مثال برنامه XAMPP پنجره کنترلی برای مشاهده وضعیت سرویس های مورد نیاز (Apache، MySQL و...) را در رابط کاربری خود نمایش می دهد یا برنامه WampServer در حالت عادی آیکنی سبزرنگ را نمایش می دهد و این یعنی سرور مجازی شما فعال و آماده به کار است، اکنون برنامه ویرایشگر فایل های PHP خود (به طور مثال PhpStorm) را اجرا و فایلی با نام example.php (فایل فرضی و نام دلخواه) در فولدر htdocs یا www (با توجه به برنامه مورد استفاده) در محل نصب سرور مجازی ذخیره نمائید، به فرض اگر برنامه XAMPP یا WampServer را در درایو C در فولدرXampp یا Wamp قرار داده باشید ریشه سرور مجازی شما به صورت نمونه های زیر خواهد بود:C:\Xampp\htdocs
C:\Wamp\wwwفایل example.php را درون این فولدر قرار دهید، بهتر است این فایل با نمونه کدهای ساده HTML کدنویسی شده باشد تا در هنگام گرفتن خروجی نتیجه مشخص شود، در نهایت مرورگرتان را اجرا کرده و عبارت http://localhost/example.php را در قسمت نوار آدرس نوشته، دکمه Enter را در صفحه کلید بزنید تا فایل از فولدر htdocs یا www فراخوانی شود، اگر همه چیز صحیح باشد صفحه وب شما در مرورگر نمایش داده خواهد شد درست مانند اینکه یک سایت آنلاین بر روی سرور واقعی برپا کرده باشید (در سرور آنلاین نیز معمولا ریشه سایت فولدر public_html یا www است).چند مثال ساده با PHP
فلسفه پیدایش PHP (سال 1994 میلادی توسط Rasmus Lerdorf) ایجاد صفحات داینامیک و استفاده از آن در وب بوده (هرچند PHP را می توان به صورت General-purpose استفاده کرد) لذا می توان دستورات این زبان را در کنار کدهای ساده HTML درج و اجرا کرد (در اصطلاح PHP را HTML-embedded می گویند) این قابلیت یکی از نقاط قوت PHP محسوب شده و یادگیری آن را ساده تر می کند، برای شروع و آشنایی بیشتر کدها و مثال هایی ساده از این زبان را مرور می کنیم:
<?php
echo "اولین کد PHP من!";
?>توضیح:- کدهای PHP با تگ علامت سوال ، php شروع و با علامت سوال بسته می شوند (شیوه استاندارد).
- دستور echo مقادیر را به خروجی ارسال و در مرورگر چاپ می کند.
حال به کد زیر توجه کنید:
<?php
$text = "اولین کد PHP من!";
echo $text;
?>پیش نمایشتوضیح:
- در کد بالا عبارت اولین کد PHP من! به جای اینکه مستقیما به echo داده شود، ابتدا به یک متغیر (در آینده در این رابطه مفصل خواهیم گفت) نسبت داده شده و سپس مقادیر متغیر با دستور echo به خروجی داده می شود (علامت $ در PHP نشان دهنده متغیر است).
حال به مثال زیر توجه کنید:
<?php
$num1 = 20;
$num2 = 50;
$total = $num1 + $num2;
echo $total;
?>پیش نمایشتوضیح:
- کد بالا مقدار متغیر total را به خروجی خواهد داد و متغیر total برابر است با حاصل جمع دو متغیر num1 و num2 که اعدادی به دلخواه به آنها داده ایم.
- ملاحظه می کنید که PHP قدرت محاسبه منطقی دارد و می توان با آن از ترکیب چند مقدار یک مقدار جدید به دست آورد، این مثال ها اولیه و ساده هستند اما ما را با دنیای جدیدی آشنا می کنند که همان داشتن تفکر و هوش منطقی است و رفته رفته ذهنمان را برای نوشتن برنامه های سیستماتیک، طراحی الگوریتم ها و ساختارهای پیچیده تر وب آماده می کنند.
مثالی دیگر:
<?php
$name = 'Webgoo';
if ($name == 'Webgoo'){
$hi = 'سلام وبگو!';
}
else{
$hi = 'سلام، لطفا در سایت عضو شوید!';
}
echo $hi;
?>پیش نمایشتوضیح:
- if (اگر) و else (در غیر اینصورت) برای ایجاد شرط منطقی به کار می روند و علامت == نشان دهنده برابری دو طرف آن است، اینها ابزارهایی است که در دنیای برنامه نویسی به کارمان می آیند و می توانیم به کمک آنها زبان انسان را به زبان ماشین تبدیل کنیم، در تفسیر کد بالا ابتدا متغیر name را با مقادیر از پیش تعریف شده Webgoo مقدار دهی کرده ایم (می تواند هر چیز دیگری باشد)، سپس با شرط if بررسی کرده ایم که اگر متغیر name برابر با مقدار Webgoo باشد، دستور echo داخل شرط if که بین دو علامت {} مشخص است اجرا شود، در غیر اینصورت قسمت else اجرا خواهد شد.
تقریبا هر آنچه که از وب بخواهید با PHP دستیافتنی است، در ادامه مطالب بخش آموزش های مقدماتی PHP در این باره بیشتر خواهیم گفت.
تعریف و استفاده از متغیر (Variable) در PHP
دستورات شرطی (Conditional Statements) در PHP
توابع کار با آرایه در PHP - بخش دوم
توابع (Functions) در PHP
دستور switch و case در PHP
من یه همچین کدی نوشتم
<?php
session_start();
if(!isset($_SESSION['adminlog'])){
?>
<form method="post">
<div class="title">
<strong>ورود به پنل مدیریت</strong>
</div>
<table>
<tr>
<td align="left">نام کاربری:</td>
<td align="right"><input type="input" name="user" /></td>
</tr>
<tr>
<td>رمز عبور:</td>
<td><input type="password" name="pass" /></td>
</tr>
</table>
<input class="submit" type="submit" name="sub" value="ورود به پنل مدیریت" />
</form>
<?php
define('USERNAME','chatshitonha@');
define('PASSWORD','admin');
if(isset($_POST['sub'])){
$user = $_POST['user'];
$pass = $_POST['pass'];
if(($user != '' && $pass != '') && ($user == USERNAME && $pass == PASSWORD)){
$_SESSION['adminlog'] = md5(USERNAME);
echo "<script type='text/javascript'>window.location.href = '';</script>";
}else{
echo "<p>نام کاربری یا رمز عبور اشتباه میباشد</p>";
}
}
die();
?>و آن را به اسم پسورد دات پی اچ پی ذخیره کردم و در تمامی فایل های سایتم آن را اینکلود می کنم<?php include('../password.php'); ?>و این ارور را میدهWarning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/chatshit/public_html/jensiat/index.php:1) in /home/chatshit/public_html/password.php on line 2ولی اما اگر بجای اینکلود اون فایل ها رو کپی کنم ارور رفع میشه ولی من 20 تا فایل دارم و میخواهم اینکلود کنم لطفا راهنمایی کنیم خیلی ممنون- در هر بار اجرای کدها تنها یک تابع session_start باید اجرا شود.
- کدهای بالاتر از تابع سشن نباید هیچ نوع خروجی داشته باشند، حتی کاراکترهای نامرئی BOM، برای اطمینان فایل های خود را با ویرایشگر ++Notepad باز و از قسمت Encoding گزینه Encode in UTF-8 without BOM را انتخاب کنید.
با توجه به نکته های بالا می توانید فایل هایتان را include کنید.
<?php
$text = 'این یک متن آزمایشی است';
$result = mb_substr($text, 0, 20, 'UTF-8');
echo $result;
?>همچنین آموزشی جداگانه در این خصوص در سایت وجود دارد، عبارت "پاراگراف" را در قسمت جستجو وارد کنید.خیلی جزئی با session آشنایی دارم
خسته نباشید
میخواستم بپرسم چطوری میشه متغیر ها رو از یه صفحه php به صفحه دیگه ارسال کرد، مثلا من یه فرم رو با متد post به یک صفحه php ارسال کردم و عملیات اعتبار سنجی رو انجام دادم حالا میخوام اگر اطلاعات غلط بود برگرده صفحه فرم که با این دستور انجام میشه
header("Location: Form.html")و اگر اطلاعات درست بود متغیر هایی که اطلاعات توشون ذخیره شده مثل$user=$_POST['user'];
$pass=$_POST['pass'];
$pass2=$_POST['pass2'];
$email=$_POST['email'];رو بفرسته به یک صفحه دیگه که یه سری عملیات دیگه مثل نمایش روشون انجام بشه یعنی منظورم اینه که میخوام مثلا$userرو بفرستم به یه صفحه دیگه مثلا با این آدرسwelcom.php رو در اونجا echo کنمecho ("$user");خسته نباشید
میخوام وقتی تعداد پست های صفحه مثلا به 21 رسید اولین پست بره صفحه 2 و همینطور وقتی به 22 رسید دومین پست بره صفحه 2 یعنی میخوام تو هر صفحه فقط 20 تا پست نمایش داده بشه و همینطور میخوام صفحه هایی که ایجاد میشه شمارش همون جایی که براش مشخص کردم ظاهر بشه
در واقع میخوام یه چیزی شبیه همین شماره صفحه که تو همین صفحه هست برای سایتم بسازم
میخواستم راهنماییم کنید که چه کد هایی برای php و sql باید بنویسم
اگر ممکنه سورسش رو برام بزارید
ممنون میشم
آیا میشه برنامه ای به زبان مثلا ++c یا #c داشته باشیم در محیط php بنویسیم یا نه ؟
یه سوال دیگه هم داشتم من یه برنامه به نام komodo IDE نصب کردم که تازگیها پایتون این برنامه داده بیرون چون من یه برنامه پایگاه داده دارم درست می کنم میخواستم از این برنامه که میشه تو محیطش php نوشت استفاده کنم سوال من اینکه میتونم از این محیط برای نوشتن زبان php استفاده کنم؟
ببخشید من قسمتی که گفتید رو خوندم ولی زیاد نفهمیدم
اگه امکانش هست رو کدی که فرستادم میشه بگید که باید چکار کنم؟ و چطور اطلاعات یک فرم را به صفحه دیگر انتقال دهم؟
با تشکر فراوان
<form method = "post" action = "handleform.php">
first name <input type = "text" name = "FirsName" size = "20"><br>
last name <input type = "text" name = "LastName" size = "40"><br>
comment <textarea name = "Comment" rows = "5" cols = "40" ></textarea><br>
<input type = "submit" name = "Submit" value = "go">
</form>اطلاعات پس از ارسال در فایل handleform.php به شکل نمونه زیر قابل دریافت هستند:<?php
$name = $_POST['FirsName'];
$family = $_POST['LastName'];
$comment = $_POST['Comment'];
?>- PhpStorm
- Adobe Dreamweaver
- NetBeans IDE
<form method = "post" action = "handleform.php">
first name <input type = "text" name = "FirsName" size = "20"><br>
last name <input type = "text" name = "LastName" size = "40"><br>
comment <textarea name = "Comment" rows = "5" cols = "40" ></textarea><br>
<input type = "submit" name = "Submit" value = "go">
</form>
////////////////////////
<?php
print "$FirstName<br>";
print "$LastName<br>";
?>در کدهای بالا $firstname c را نمیشناسد!از نرم افزار easyphp استفاده میکنم
- سازگاری با انواع مختلف سرورها (لینوکس، ویندوز و...) و برپایی آسان و سریع در لوکال (با نصب برنامه هایی مانند WampServer).
- بسیاری از مشکلات شما در برنامه نویسی از قبل توسط جامعه وسیع کاربران در سراسر دنیا حل شده (صرفه جویی در وقت و جلوگیری از سردرگمی و انصراف از نوشتن برنامه ها).
- Syntax روان و قابل فهم در عین قدرتمندی (برنامه نویسی با PHP لذت بخش است!، امکان استفاده کاربران با هر سطحی از آشنایی وجود دارد).
- توابع درونی فراوان برای کار با پروتکل های وب، پایگاه داده، تصاویر گرافیکی و... (PHP به صورت اختصاصی برای وب طراحی شده).
- وجود سایت php.net، مرجعی ارزشمند از توضیحات و راهنمایی هایی که کار آموختن و درک PHP را آسان می کند.
- به روزرسانی و رفع معایب مفسر PHP به صورت متناوب و منظم.
- استفاده زیاد بین کاربران (مشتری زیاد برای برنامه نویسان PHP!).
- سرعت اجرای بالای کدها در مقایسه با ASP (هرچند محل اختلاف است، اما در قضاوتی عادلانه PHP کمی سریع تر از زبان های مشابه عمل می کند).
- توابع و امکانات از پیش تعریف شده قوی برای URL Rewrite و Regular Expression که در وب بسیار کاربرد دارند.
- امکان تبدیل هر ایده ی عملی تحت وب به واقعیت با PHP (قدرتمندی).
- پشیبانی از برنامه نویسی معمولی و شی گرا.
- وجود برنامه هایی مانند Adobe Dreamweaver، NetBeans IDE، PhpStorm و... که کار کدنویسی را بسیار آسان می کنند.
و...
در کل PHP و ASP.NET دو دنیای متفاوت هستند که تنها با تجربه هر دو مورد می توانید زبان سازگارتر با سلیقه خودتان را انتخاب کنید.
با تشکر
در مورد زمان مورد نیاز، بستگی به استعداد، تمرین و میزان زمانی دارد که برای یادگیری صرف می کنید، در حد HTML و CSS چیزی بین یک تا دو سال، اما در مورد زبان های برنامه نویسی وب مانند PHP و... کمی بیشتر.
ممنون می شوم
define('STRING', 'your string');
define('DEFINED', true);سپس با توجه به نوع به کاربری (تعریف یک مقدار یا در نظر گرفتن true یا false) می توانیم در ادامه کدها از مقادیر تعریف شده به روش های زیر استفاده کنیم، اگر مقادیر به صورت متنی تعریف شده بود، کافی است مقدار را استفاده کنید، به طور مثال:echo STRING;
//خروجی: your stringاما اگر به صورت true یا false بود، به فرض می توان در عبارات شرطی if و else از آن استفاده کرد:if(DEFINED == true){
//انجام فرآیند مورد نظر
}
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.