مقدمه
تار جهان گستر (Word Wide Web) دنیای عجیبی است که تکنولوژی های مربوط به آن ، اغلب بدون پشتیبانی کافی ، عرضه می شوند و کاربران این تکنولوژی ها ، همه روزه با واژگان جدیدی برخورد می کنند که باعث سر درگمی آنها می شوند.
برای نمونه می توان به رشد برنامه های Open Source اشاره کرد ( برنامه هائی که می توان آنها را گسترش داد و یا تغییراتی در ساختار آنها ایجاد نمود) متداول ترین این برنامه ها ، سیستم عامل یونیکس و به طور خاص لینکوس می باشد . این برنامه ها با وجود پایداری ، دارای یک مشکل بزرگ می باشند و آن دشوار بودن آموختن این برنامه ها می باشد. کمبود راهنمائی هایی که به زبان ساده ، این برنامه ها را به مبتدیان آموزش دهد . باعث شده است که این دسته از نرم افزارها از جایگاه واقعی خود دور نگاه داشته شوند. Php یکی از زبانهای اسکریپتی Open Source ، ابزاری مفید می باشد که تاکنون علی رغم سادگی استفاده از آن هنوز به طور شایسته از آن استقبال نشده است.
Php چیست :
پی اچ پی که در ابتدای سال 1994 توسط Rasmus Lerdorf ایجاد شد ، مخفف واژگان Personal Home Page به حساب می آمد.
با گسترش قابلیتها و موارد استفاده از این زبان Php در معنای Hypertext Preprocessor به کار گرفته
می شود. این بدان معنا است که پی اچ پی ، اطللاعات را قبل از تبدیل به زمان html پردازش می کند. مطابق سایت وب رسمی پی اچ پی که در آدرس www.php.net قرار دارد ، پی اچ پی یک زبان اسکریپتی سمت سرویس دهنده می باشد.
سمت سرویس دهنده بودن به این معنا است که تمام پردازشهای این زبان بر روی سرویس دهنده (سرور) انجام می گیرد. یک سرویس دهنده در حقیقت یک کامپیوتر مخصوص می باشد که صفحات وب در آنجا نگهداری
می شوند .
این زبان بر روی هر سیستم عاملی قابل اجرا است. منظور از این سیستم عاملهایی می باشد که برروی سرویس دهنده نصب می شوند. پی اچ پی نه تنها قابلیت اجرا بر روی هر سیستم عاملی را می باشد، بلکه برای منتقل کردن برنامه های که از آن یک سیستم عامل به سیستم عامل دیگر ، احتیاج به تغییرات اندکی خواهید داشت و حتی در بعضی از موارد ، بدون احتیاج به هیچ تغییری می توانید ، یک برنامه را با زبان پی اچ پی از یک سیستم عامل به سیستم عامل دیگر منتقل کنید.
پی اچ پی برخلاف زبانهای برنامه نویسی (Programming Languages) یک زبان اسکریپتی (Scripting Languages) می باشد . به عبارت دیگر دستورات پی اچ پی بعد از رخداد یک رویداد (event) اجرا می شوند. این رویدادها می توانند شامل ارسال یک فرم ، رفتن به یک url مشخص و یا موارد دیگر باشد. متداولترین زبان اسکریپتی زبان جاوا اسکریپت می باشد که معولا برای پاسخ به رویدادهای کاربر در مرورگر وب ، به کار می رود. تفاوت عمده جاوااسکریپت و پی اچ پی دراین است که جاوا یک تکنولوژی سمت سرویس گیرنده است . زبانهائی مانند جاوا و پی اچ پی تفسیر شونده نامیده می شوند. به عبارت دیگر برای اجرا به یک مفسر مانند مرورگر وب نیاز است. اما زبانهای برنامه نویسی مانند c و یا java بعد از ترجمه به زبان ماشین به خودی خود قابل اجرا می باشند.
به چه دلیل از Php استفاده می کنیم؟
پی اچ پی در مقایسه با تکنولوژی های مشابه ، سریعتر و بهتر و آسانتر است . از جمله تکنولوژی های مشابه برای طراحی یک سایت وب می توان به این موارد اشاره کرد
اسکریپت هایInterface Common Gatway که معمولا به زبان Perl نوشته می شوند ، ASP(Active Server Page ) و JSP (Java Server Page) جاوا اسکریپت یک گزینه جایگزین برای پی اچ پی در نظر گرفته نمی شوند. زیرا بر خلاف پی اچ پی ، یک تکنولوژی سمت سرویس گیرنده است و همانند تکنولوژهایی مانند CGT و PHP، نمی تواند یک صفحه HTML را تولید کند.
مزیتی که چی اچ پی در مقابل html دارد این است که html یک سیستم محدود به حساب می آید و توانائی ایجاد ارتباط متقابل با کاربر را ندارد . کاربران هنگامی که با یک صفحه html مواجه می شوند ، تنها یک صفحه ساده را روبروی خود مشاهده می کنند که توانائی ایجاد واکنش به اعمال کاربر را ندارد. اما با استفاده از پی اچ پی ،
شما می توانید صفحاتی را ایجاد کنید که برای مثال عناصر موجود در صفحه براساس سیستم عامل کاربر و یا تاریخ مشاهده صفحه ، تنظیم شوند. همچنین پی اچ پی می تواند با فایل ها یا پایگاههای داده (Database) ارتباط برقرار کند و بسیاری عملیات دیگر که html قادر به انجام آنها نمی باشد.
طراحان صفحات وب از مدتها پیش به این نتیجه رسیدند که اگر در صفحات خود ، فقط از کدهای html استفاده کنند ، باید به طور مرتب آنرا تغییر دهند و اطلاعات آنرا به روز کنند . به همین علت تکنولوژهائی مانند CGI از همان آغاز ، طرفداران بسیاری پیدا کردند. این تکنولوژی ها به طراحان این امکان را می دهد که برنامه هایی ایجاد کنند که به صورت داینامیک ، صفحات وب را تولید کنند. همچنین در هنگام ارتباط با یک پایگاه داده بدون دخالت هر انسانی ، صفحات به روز آوری شوند.
به عنوان آخرین مطلب در مورد برتریهای پی اچ پی تنها به ذکر این مطلب بسنده که هم اکنون نزدیک به سه میلیون از سایتهای وب از تکنولوژی پی اچ پی استفاده می کنند.
چکیده از پروژه :
سیستم وجود فایلSalman.php را تست خواهد کرد و در صورت وجود آن را باز خواهد کرد و در غیر اینصورت برنامه متوقف میشود اینکار توسط در فایل class.php ،تابع CheckFileConfig انجام میشود.
برنامه به بانک اطلاعاتی وصل خواهد شد ودرصورت وجود خطا برنامه متوقف میشود وبه شما خطا خواهد داد، همین طور برای انتخاب بانک اطلاعاتی این کار توسط تابع connect در فایل class.php انجام می شود.
در اینجا فایل farsi.php باز خواهد شد و زبان را اجرا می کند و در صورتی که در برنامه متنی مانند متن خود پیدا کند آن را جایگزین خواهد کرد.
در صورت بر نخوردن به هیچ خطایی برنامه login.php را اجرا می کند و کاربر با کلیک بر رویه register می تواند ثبت نام کند و در صورت کلیک بر رویه login وارد بخش مورد نظر شود
در صورتی که کاربر بر رویه register کلیک کند می تواند ثبت نام شود ، در صورتی که نام کاربری که وارد که در بانک اطلاعاتی وجود داشته باشد برنامه به کاربر خطا می دهد و اطلاعات کاربر به بانک نخواهد رفت
در صورت ورود Password و یکسان نبودن دو فیلد با هم کاربر خطا میدهد و اطلاعات وارد بانک نمی شود
در صورت درست بودن اطلاعات ، تمامی اطلاعات به بانک اطلاعاتی خواهد رفت و صفحه login.php اجرا می شود و کاربر می تواند وارد سیستم شود اگر سطح دسترسی 1 باشد یک سره به بخش مدیریت خواهد رفت و در صورت سطح دسترسی 0 به قسمت رای گیری خواهد رفت
در صورت بودن اطلاعات غلط برنامه وارد نمی شود و به کاربر خطا می دهد
مدیر می تواند کاندید اضافه کند ، پاک کند ، تعداد رای به هر کاندید را ببیند ، و آن را ویرایش کند
در صورت وارد نکردن فیلد "نام کاندید " به مدیر اخطار داده می شود و اطلاعات ثبت نمی شود
در صورت کلیک بر روی خروج ، از برنامه خارج خواهد شد و دیگر تا با وارد کردن بار دیگر اطلاعات نمی تواند وارد برنامه شود
در صورتی که اطلاعات وارد شده با سطح دسترسی 0 باشد کاربر وارد بخش رای گیری می شود
با انتخاب کاندید مورد نظر و زدن کلیک Submit رای به بانک می رود ، همین طور Ip و یک Cookie ایجاد می شود تا از رای دوباره جلو گیری شود.
در قسمت نمایش آرا کاربر می تواند تعداد رای به هر کاندید را مشاهده کند در صد رأی هر کاندید به صورت عددی و گرافیکی
Login
رأی
User: --------------------------
Passwords: ------------------
تایید مشخصات رای دهنده
Select
جستجوی کاندیدای مورد نظر و اضافه کردن یکی به آراء وی
تأیید یوزر و پسورد
پیغام خطاء
1- نمایش و ویراش و حدف کاندیدا
2- اضافه نمودن کاندیدای جدید
3- مشاهده نتایج آرا تاکنون
نام کاندیدا حذف نمایش آراء ویرایش
نام کاندیدا حذف نمایش آراء ویرایش
نام کاندیدا حذف نمایش آراء ویرایش
کاندیدای جدید
Insert
مشاهده ارائ کلی نامزدها تاکنون
===================================================================================
PHP Code: salman
<?
$config_userDB
$config_passDB
$config_database
?>
config_userDB $= نام کاربری که شما برای دیتابیس خود ایجاد کرده اید.
config_passDB$ = پسورد که شما برای نام کاربری تعیین کرده اید.
config_database $ = نام دیتابیسی که ایجاد کرده اید.
===================================================================================
کلاسها (Classes)
یک کلاس تعریف یا نمای یک نوع خاص داده است و کلاسها به عنوان روشی برای حالت دادن به تمام انواع تفاوت اشیاء و سیستم شما عمل میکنند . هنگامی که میخواهیم یک شیء جدید را تعریف کنیم ، ابتدا از کلمه کلیدی class برای تعریف آن ، پیش از استفاده از آن در اسکریپتهای PHP خود استفاده میکنیم . تفاوت واضح یک کلاس و یک شیء این است که کلاسها اشیایی را تعریف میکنند که در برنامههایمان به کار میبریم . پیش از آن که درباره روش ساخت یک کلاس صحبت کنیم ، میخواهیم شروع به تأمل کنید که یک کلاس نمایشی از یک ایده است . مهم است که هنگامی که کلاسهای خودتان را طراحی میکنید . آنها یک هدف را دنبال کنند و تمامی رفتاری را که از آن ایده انتظار میرفت را فراهم کنند .
یک کلاس در PHP حاوی سه کامپوننت اصلی است : members (اعضاء) که به آنها به عنوان داده یا صفت اشاره میشود) متدها ، و Constructor یک عضو members تکهای از داده است که شیء در بر دارد . اشیاء میتوانند هر تعداد عضو داشته باشند . برای مثال ، اگر قرار باشد اتومبیل را با استفاده از یک کلاس طراحی کنیم ، یک چرخ در حال دوران یا گیربکس باید به عنوان یک عضو از ماشین تعریف شوند . متدها سرویسهایی هستند که شیء برای سرویس گیرندههایش فراهم میکند که از اعضا داخلی آن استفاده میکنند و آنها را دستکاری میکنند . برای مثال ، اگر قرار باشد اتومبیل را با استفاده از یک کلاس طراحی کنیم ، یک چرخ در حال دوران یا گیربکس باید به عنوان یک عضو از ماشین تعریف شوند .
متدها سرویسهایی هستند که شیء برای سرویس گیرندههایش فراهم میکند که از اعضا داخلی آن استفاده میکنند و آنها را دستکاری میکنند . برای مثال ، یک کلاس car میتواند یک متد را برای روشن کردن وسیله نقلیه و استفاده از چرخ در حال دوران در داخل آن فراهم کند .
یک Constructor متد خاصی است که شیء را درون وضعیت آماده آن معرفی می:ند . تنها یک Constructor برای یک شیء در PHP میتواند موجود باشد . در یک کلاس car ، افزودن بدنه ، موتور ، لاستیکها ، گیربکس ، صندلی و غیره بر روی car با هم متفاوتند . هنگامی که سرویس گیرندهها میخواهند از متدهای روی یک شیء استفاده کنند ، Constructor اطمینان میدهد که هر متد عملیات را با موفقیت به انجام خواهد رساند و نتیجه مورد انتظار را برخواهد گرداند . برای مثال ، برای روشن کردن رادیو درون اتومبیل شما ، باید یک رادیو نصب شده باشد . در این نمونه ، Constructor مسئول اطمینان بخشیدن از این موضوع است که رادیو پیش از استفاده نصب شده است. به غیر از مقدار دهی شیء به یک وضعیت آماده معتبر ، تفاوت اساسی دیگر این است که یک Constructor هیچ مقدار برگشتی صریحی ندارد . تمامی Constructor ها یک متغیر جدیداً اختصاص یافته را برای استفاده در برنامه شما بر میگردانند .در نتیجه ، برگرداندن یک مقدار در Constructor کلاس ، غیرقانونی است . اطمینان یافتن از طراحی مناسب اشیاء و Constructor های آنها ، مسئلهای است که توسعه دهندگان زیادی اغلب با آن روبرو میشوند . هنگامی که کلاس برنامهنویسان را وادار میکند که اعضای شیء را پیش از استفاده از متدهای خود تنظیم کنند یا هنگامی که کلاس برنامهنویس را وادار میکند تا از ترتیب خاصی ، هنگام فراخوانی متدهای شیء پیروی کند ، کد گیج کننده و مبهمی را ایجاد میکند . از OPP به این منظور استفاده میکنیم که به طور کلی از بروز چنین مسئلهای جلوگیری کنیم . اگر کلاس مهندسی شده است تا از Constructor های خود برای معرفی بخشهای کلیدی کلاس استفاده نکند ، اشکال از طراحی ضعیف ناشی میگردد . دوباره در همان تله گرفتار نشوید .کلاسی که خوب طراحی شده باشد برنامهنویسی ، اشکالزدایی و نگهداری زیادی را حذف میکند .بیایید نگاهی به دستور زبان کلی برای Class در PHP بیندازیم ، که استفاده از این سه نوع کامپوننت را نشان میدهد : PHP Code:
class ClassName [extends ParentclassName]
{
var $member1;
var $member2;
var $memberN;
// Constructor
function Class Name()
{
}
function method1()
{
}
… function method2()
{
}
function methodN()
{
}
}
همانگونه که میبینید ، یک کلاس چیزی نیست جز یک مجموعه از اعضای تعریف شده (متغیرها) و متدها (توابع) . اعضا میتوانند یا انواع داده اولیه نظیر integer ها و رشتهها یا انواع پیچیدهتری نظیر آرایهها یا اشیاء دیگر باشند . از آنجایی که PHP از شما انتظار ندارد که انواع را تعریف کنید ، فقط میتوانید متغیرهایتان را در بالای کلاس ، به صورتی که در بالا نشان داده شد ، نام ببرید .
با PHP میتوانید متغیرهایی را در تابع خود ایجاد کنید ؛ آنها به همان خوبی که مورد انتظارتان است کا رخواهند کرد . اگرچه ، تمرین خوبی نخواهد بود اگر این کار را انجام دهید . این به آن خاطر است که وقتی برنامهنویسان دیگر به کلاس شما نگاه میکنند ، فوراً تمامی اعضای آن را پیش از نگاه کردن به پیادهسازی توابع بشناسند .
متدها به سادگی تمام سرویسهایی هستند که این کلاس تضمین میکند تا برای سرویس گیرندههایش فراهم کند. سرویس گیرندهها میتوانند برنامههای دیگر ، پروژههای دیگر و غیره باشند.
Class.php :
در این فایل دو کار انجام می شود :
CheckFileConfig() این تابع چک می کند که آیا فایل config.php موجود است یا خیر در غیر این صورت برنامه را غیر فعال خواهد کرد.
Connect () این تابع برنامه را به بانک اطلاعاتی متصل می کند.
Index.php:
این قسمت وظیفه کنترل فایل های سیستم را عهده دار می باشد
session start : این تابع باعث می باشد که جلسات که برای ورود و خروج می باشد در صفحه باقی بماند و در عبور و مرور پاک نشود.
PHP Code:
$option = $_REQUEST[option];
$task = $_REQUEST[task];
این قسمت باعث می شود که اطلاعاتی خواصی که در همه جا مورد نیاز هست از Post و Get دریافت شود
عبور و مرور پاک نشود.
PHP Code:
include("class.php");
include("config.php");
دو فایل Config و Class :
دو فایل config و class را باز خواهیم کرد تا از توابع و اطلاعات آن استفاده کنیم
$Class Vote = new Class Vote()
$Class Vote->Check File Config()
$Class Vote->connect($config_hosting,$config_userDB,$config_passDB,$config_database(
کلاس را اجرا و وجود فایل Config را تست به بانک اطلاعاتی وصل خواهیم شد
if($option == '') $option = login;
@Include ("$option.php");
در این قسمت اگر $option هیچ اطلاعاتی نداشت آن را مساوی login قرار می دهد ، و مقدار $option را اجرا خواهیم کرد البته اگر $option خالی نباشد مقداری که در Get یا Post می باشد را اجرا می کند
قبل از include یک @ مشاهده می کنید که باعث می شود تا هیچ پیغام خطائی به کاربر داده نشود.
Login.php :
این قسمت اطلاعات وارد شده توسط کاربر برای ورود به بخش مدیریت یا رای گیری را تست می کند اگر username برای مدیر باشد به قسمت مدیریت و در صورت که برای کاربری باشد وارد بخش رای گیری می شود
Include ("login.html.php");
فایل login.html.php را باز خواهیم کرد تا بتوانید از کدهاش استفاده کنیم
switch($task){
#______________#
case 'Login':
Login();
break;
#______________#
case 'Register':
UserControl::Register();
break ;
#______________#
case 'Submit_Register':
checkRegister();
break ;
#______________#
default:
UserControl::Login();
break;}
این قسمت برسی می کند که $task با کدام گزینه مساوی می باشد در صورت عدم تساوی به default ختم
می شود.
تابع check Register
گرفتن یک کویی از بانک اطلاعاتی که باعث می شود بفهمیم که آیا این نام کاربری وجود دارد ، یا خیر در صورت پیدا کردن عدد مساوی 1 می باشد.
function checkRegister(){
$Check Username = mysql_query("Select count(username) as num From users WHERE `username`='".$_POST[Username]."'");
$Check Username = mysql_fetch_array($checkUsername);
if($_POST[Password1] != $_POST[Password2] || $_POST[Username] == '' || $_POST[Email] == '' || $_POST[Last Name] == '' || $_POST[Password1] == '' || $_POST[Password2] == '' || $check Username[num] != 0)
{
خوب ما در اینجا فیلد های username , password , password2 , email , last name را چک می کنیم که آیا درست پر شده است یا خیر مثلا گزینه $_POST[Email] == '' می گوید اگر فیلد email خالی بود ('') انجام بده و $_POST[Password1] != $_POST[Password2] تست می کند که اگر password1 با password2 مساوی نبود فعالیتهای پایین را انجام دهد،همچنین || به معنی OR می اشد
if($check Username[num] != 0)
echo "<table align=\"center\"><td><font class=\"error\" >"._old register."</font></td></table>";
if($_POST[Username] == '')
echo "<table align=\"center\"><td><font class=\"error\" >"._please_type_username."</font></td></table>";
if($_POST[Password1] != $_POST[Password2] || $_POST[Password1] == '' || $_POST[Password2] == '')
echo "<table align=\"center\"><td><font class=\"error\" >"._please_type_password."</font></td></table>";
if($_POST[Email] == '')
echo "<table align=\"center\"><td><font class=\"error\" >"._please_type_email."</font></td></table>";
if($_POST[LastName] == '')
echo "<table align=\"center\"><td><font class=\"error\" >"._please_type_name."</font></td></table>";
این گزینه همان کار بالا را انجام می دهد با این تفاوت که هر کدام را جدا کردیم تا یک خطا مختلف به کاربر دهد
UserControl::Register();
در اینجا گفته شده اگر گزینه ها با خطا مواجه شد دوباره صفحه عضویت را بالا بیاور این گزینه چون در قسمت {} ، IF اولی می باشد اجرا خواهد شد و return قبل از } می گوید بقیه برنامه را اجرا نکن
: Submit Register
این تابع تست خواهد کرد که آیا مدیر وجود دارد یا خیر در صورتی که مدیر نباشد کاربر با سطح دسترسی 1 و در صورتی که مدیر باشد کاربر با سطح دسترسی 0 وارد بانک اطلاعاتی می شود
Submit Register ();
این گزینه باعث می شود که عضویت ثبت شود همین طور که می دانید اگر برنامه با خطا مواجه شود گزینه
();User Control: Register فعال شده و با وارد کردن گزینه return از اجرای بقیه برنامه خود داری
می شود و با } تابع ما تمام می شود.
Function check Register (){
$checkUsername = mysql_query("Select count(username) as num From users WHERE `username`='".$_POST[Username]."'");
$checkUsername = mysql_fetch_array($checkUsername);
if($_POST[Password1] != $_POST[Password2] || $_POST[Username] == '' || $_POST[Email] == '' || $_POST[LastName] == '' || $_POST[Password1] == '' || $_POST[Password2] == '' || $checkUsername[num] != 0)
{
if($checkUsername[num] != 0)
echo "<table align=\"center\"><td><font class=\"error\" >"._old_register."</font></td></table>";
if($_POST[Username] == '')
echo "<table align=\"center\"><td><font class=\"error\" >"._please_type_username."</font></td></table>";
if($_POST[Password1] != $_POST[Password2] || $_POST[Password1] == '' || $_POST[Password2] == '')
echo "<table align=\"center\"><td><font class=\"error\" >"._please_type_password."</font></td></table>";
if($_POST[Email] == '')
echo "<table align=\"center\"><td><font class=\"error\" >"._please_type_email."</font></td></table>";
if($_POST[LastName] == '')
echo "<table align=\"center\"><td><font class=\"error\" >"._please_type_name."</font></td></table>";
UserControl::Register();
return;
}
SubmitRegister();
}
خوب با درست بودن کارهای بالا و اتمام هر کدام باید برای ادامه کار تابع Submit Register ساخته شود .
function SubmitRegister(){
$CheckGid = mysql_query("Select count(gid) as num From users WHERE `gid`='1'");
$CheckGid = mysql_fetch_array($CheckGid);
این تابع تست خواهد کرد که آیا مدیر وجود دارد یا خیر در صورتی که مدیر نباشد کاربر با سطح دسترسی 1 و در صورتی که مدیر باشد کاربر با سطح دسترسی 0 وارد بانک اطلاعاتی می شود.در اینجا می گوییم اگر کاربری با سطع دسترسی (gid) که مساوی 1 باشد چند تا می باشد و داده را در $CheckGif ذخیره شده و همان طور که در کوری گرفته شده می بینید count(gid) را ما به num نام دادیم
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 66 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
دانلود مقاله پروژه رای گیری الکترونیکی