تماس با ما

فید خبر خوان

نقشه سایت

تمامی فایل ها با تخفیف ویژه در سایت قرار میگیرد. در ضمن برخی محصولات سایت در جمعه با تخفیف 80 درصدی ارائه میشود ...


دسته بندی سایت

پیوند ها

نظرسنجی سایت

بنظر شما دوستان گرامی چه مطالبی در سایت قرار داده شود ؟

اشتراک در خبرنامه

جهت عضویت در خبرنامه لطفا ایمیل خود را ثبت نمائید

Captcha

آمار بازدید

  • بازدید امروز : 47
  • بازدید دیروز : 303
  • بازدید کل : 428258

پروژه رای گیری الکترونیکی 67 ص


پروژه رای گیری الکترونیکی 67 ص

مقدمه

تار جهان گستر (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 از همان آغاز ، طرفداران بسیاری پیدا کردند. این تکنولوژی ها به طراحان این امکان را می دهد که برنامه هایی ایجاد کنند که به صورت داینامیک ، صفحات وب را تولید کنند. همچنین در هنگام ارتباط با یک پایگاه داده بدون دخالت هر انسانی ، صفحات به روز آوری شوند.

به عنوان آخرین مطلب در مورد برتریهای پی اچ پی تنها به ذکر این مطلب بسنده که هم اکنون نزدیک به سه میلیون از سایتهای وب از تکنولوژی پی اچ پی استفاده می کنند.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

چکیده از پروژه :

v سیستم وجود فایلSalman.php را تست خواهد کرد ودرصورت وجود آن را باز خواهدکرد ودرغیراینصورت برنامه متوقف میشود اینکار توسط در فایل class.php ،تابع CheckFileConfig انجام میشود.

v برنامه به بانک اطلاعاتی وصل خواهد شد ودرصورت وجود خطا برنامه متوقف میشود وبه شما خطا خواهد داد، همین طور برای انتخاب بانک اطلاعاتی این کار توسط تابع connect در فایل class.php انجام می شود.

v در اینجا فایل farsi.php باز خواهد شد و زبان را اجرا می کند و در صورتی که در برنامه متنی مانند متن خود پیدا کند آن را جایگزین خواهد کرد.

v در صورت بر نخوردن به هیچ خطایی برنامه login.php را اجرا می کند و کاربر با کلیک بر رویه register می تواند ثبت نام کند و در صورت کلیک بر رویه login وارد بخش مورد نظر شود

v در صورتی که کاربر بر رویه register کلیک کند می تواند ثبت نام شود ، در صورتی که نام کاربری که وارد که در بانک اطلاعاتی وجود داشته باشد برنامه به کاربر خطا می دهد و اطلاعات کاربر به بانک نخواهد رفت

v در صورت ورود Password و یکسان نبودن دو فیلد با هم کاربر خطا میدهد و اطلاعات وارد بانک نمی شود

v در صورت درست بودن اطلاعات ، تمامی اطلاعات به بانک اطلاعاتی خواهد رفت و صفحه login.php اجرا می شود و کاربر می تواند وارد سیستم شود اگر سطح دسترسی 1 باشد یک سره به بخش مدیریت خواهد رفت و در صورت سطح دسترسی 0 به قسمت رای گیری خواهد رفت

v در صورت بودن اطلاعات غلط برنامه وارد نمی شود و به کاربر خطا می دهد

v مدیر می تواند کاندید اضافه کند ، پاک کند ، تعداد رای به هر کاندید را ببیند ، و آن را ویرایش کند

v در صورت وارد نکردن فیلد "نام کاندید " به مدیر اخطار داده می شود و اطلاعات ثبت نمی شود

v در صورت کلیک بر روی خروج ، از برنامه خارج خواهد شد و دیگر تا با وارد کردن بار دیگر اطلاعات نمی تواند وارد برنامه شود

 

 

v در صورتی که اطلاعات وارد شده با سطح دسترسی 0 باشد کاربر وارد بخش رای گیری می شود

v با انتخاب کاندید مورد نظر و زدن کلیک Submit رای به بانک می رود ، همین طور Ip و یک Cookie ایجاد می شود تا از رای دوباره جلو گیری شود.

v در قسمت نمایش آرا کاربر می تواند تعداد رای به هر کاندید را مشاهده کند در صد رأی هر کاندید به صورت عددی و گرافیکی

Main.php

Login

رأی

 

 

 

Vote .php

Login .php

 

 

 

 


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 نام دادیم

 

 

 

 

 

 

 

 

if($CheckGid[num] == 0){

mysql_query("INSERT INTO `users` (`id`, `username`, `password`, `email`, `lastname`, `gid`) VALUES (, ".$_POST[Username].", ".md5($_POST[Password1]).", ".$_POST[Email].", ".$_POST[LastName].", 1)");

}else{

mysql_query("INSERT INTO `users` (`id`, `username`, `password`, `email`, `lastname`, `gid`) VALUES (, ".$_POST[Username].", ".md5($_POST[Password1]).", ".$_POST[Email].", ".$_POST[LastName].", 0)");

}

 

خوب این قسمت از $ChechGid بالا استفاده کرده می گوییم اگر مساوی 0 بود اولین وضعیت را انجام دهد و در غیر این صورت دومی تنها فرق در 0 و 1 آخر می باشد که 0 به معنی کاربر و 1 به معنی مدیر !

 

UserControl::Login();

 

با این قسمت ما تابع ساخته شده در فایل login.html.php را فرا خوانی کردیم برای فرا خوانی آن ابتدا نام کلاس آن UserControl و :: و بعد نام تابع login() و در آخر } تابع ما تمام شد !!

 

تابع function login(){ برای این می باشد که تست کند آیا کاربر است یا مدیر

$CheckGid = mysql_query("Select count(gid) as num From users WHERE `gid`=1 AND `username`=".$_POST[Username]."");

$CheckGid = mysql_fetch_array($CheckGid);

 

 

 

در اینجا نام کاربری را در بانک جستجو می کنیم تا ببینیم که آیا سطح دسترسی آن 1 هست یا خیر در غیر این صورت جواب ما 0 و در صورت 1 بودن سطح دسترسی کار اول را انجام می دهیم

if($CheckGid[num] == 1){

SelectGid(1,admin);

}else{

SelectGid(0,vote);

}

 

همین طور که در تابع بالا می بینید اگر جواب مساوی 1 بود مقدار اول تابع 1 و دوم می گوید به ادمین برو و در دوم می گویم مقدار اول 0 و به vote برو این مقدار ها را در تابع SELECTGID تنظیم کرده ایم که در پایین خواهید دید.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

--- قسمت مدیریت ---

ü Browse

این تابع تمامی اطلاعات کاندید را لیست می کند

ü CheckAdmin

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

 

ü Delete

این تابع کاندید مورد نظر را پاک می کند

 

ü Edit

این تابع صفحه ویرایش کاندید مورد نظر را خواهد آورد

 

ü Update

این تابع ویرایش ای که مدیر بر رویه آن کاندید کرده را در بانک اطلاعاتی بروز می کند .

همین طور اگر فیلد خالی باشد به مدیر اخطار می دهد و بانک را بروز نمی کند !

 

ü Newkandid

این تابع صفحه برای ایجاد کاندید جدید بالا خواهد آورد

 

ü NewSave

این تابع اطلاعات کاندید جدید را در بانک اطلاعاتی قرار خواهد داد

 

ü ShowVote

این تابع آمار کاندید ها را نمایش می دهد به صورت
تعداد رای به هر کاندید را مشاهده کند
در صد رای هر کاندید به صورت عددی و گرافیکی

 

 

تصویر مربوط به نمایش و حذف وکاندیدا

 

 

 

 

 

 

 

 

 

 

 

تصویر مربوط به اضافه نمودن کاندید جدید

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

تصویر مربوط به نتایج کلی آرا

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 


 

 

 

-- قسمت رای گیری --

 

ü Check User

این تابع با هر دفعه Refresh چک می کند که آیا این نام کاربری و پسورد و سطح دسترسی 0 در بانک است یا خیر ! در صورت وجود برنامه ادامه خواهد داد ولی در غیر این صورت کاربر را اخراج خواهد کرد

 

ü List Vote

در تابع لیست کاندید ها را برای کاربر خواهد آورد و کاربر باید یکی را انتخاب کند و بر رویه Submit کلیک کند !

ü Save Vote

این تابع کاندید مورد نظر کاربر را در بانک اطلاعاتی ذخیره خواهد کرد !

 

 

ü Check Vote

این تابع چک خواهد کرد که آیا این کاربر با این کامپیوتر و این آی پی تا به حال رای داده یا خیر !

در صورتی که رای داده باشد در هر زمانی که login کند آرا را برای او نمایش خواهد داد و نمی تواند رای دهد

ü Show Vote

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-- تصاویر --

 

 

 

 

 

 

 

 

 

 

 

 

..

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

خوب حالا به تابع SelectGid که در بالا فراخوانی کردیم سری می زنیم

Function SelectGid($gid,$GO){

$Check Valid User = mysql_query("Select count(*) as num From users WHERE `gid`=$gid AND `username`=".$_POST[Username]." AND `password`=".md5($_POST[PassWord])."");

$Check Valid User = mysql_fetch_array($CheckValidUser);

If (! ($Check Valid User [num] == 1)){

Session unset ();

Echo "<table align="center"><tr><td><font class="error">"._retype."</font></td></tr></table>";

User Control: Login ();

Return;}

$Data user = mysql_query("Select * From users WHERE `gid`=$gid AND `username`=".$_POST[Username]." AND `password`=".md5($_POST[Password])."");

$Data user = mysql_fetch_array($data user);

$_SESSION [username] = $data user [username];

$_SESSION [password] = $data user [password];

session_write_close();

Echo’

<Script language="JavaScript">

Function reload ()

{

Document. Frm Refresh. Submit ();

}

var speed = 1

Function Start Redirect Timer ()

{

Set Timeout ("reload ()", speed);}

//-->

Start Redirect Timer ();

</script>

<Form id="frm Refresh" name="frm Refresh” action="index.php?option=.$GO." Method="Post">

</Form>;

}

 

Function Select Gid($gid,$GO){

این قسمت اول تابع است که با { شروع کردیم $gid مقدار اولی است که در بالا اگر یادتان باشد با 0 و 1 تغییر می دادیم و $GO همان است که ما باadmin و vote پر کردیم حالا به کار این دو می پردازیم !

 

$Check Valid User = mysql_query("Select count(*) as num From users WHERE `gid`=$gid AND `username`=".$_POST[Username]." AND `password`=".md5($_POST[Password])."");

$Check Valid User = mysql_fetch_array($Check Valid User);

خوب بالا را نگاه کنید دوباره از بانک اطلاعاتی سوال کردیم که آیا این نام کاربری و پسورد وجود دارد یا خیر !

در صورت وجود مقدار 1 و در غیر این صورت 0 می باشد که باعث خطا خواهد شد !

در ساخت تابع یادتان هست که از $gid استفاده کردیم به کویری گرفته شده نگاه کنید `gid`=$gid اگر مقدار را 0 وارد کرده باشیم با سطح دسترسی 0 می گردد و اگر 1 وارد می کردیم دنبال این نام کاربری با سطح دسترسی 1 می گردد به پایین نگاه کنید

SelectGid(0,vote);

 

خوب در اینجا $gid اولین آرماگون بود و ما آن را 0 قرار دادیم

If (! ($Check Valid User [num] == 1)){

Session unset ();

Echo "<table align="center"><tr><td><font class="error">". _Retype."</font></td></tr></table>";

User Control: Login();

Return;

}

در بالا می گوییم اگر $Check Valid User مساوی 1 بود کار هایی که در {} است را انجام دهد ولی شما در پشت !($Check Valid User[num] == 1) را می بینید کلمه کلیدی ! باعث می شود تا مخالف چیزی که می خواهید عمل کند یعنی می گوید اگر مساوی 1 نبود کار زیر را انجام دهد و کاری که انجام می دهد به ترتیب خط به این صورت است ، اول اطلاعات جلسات یا Session ها را از بین ببر دوم یک خطا به کاربر بده که نام کاربری شما اشتباه است و در آخر صفحه Login را دوباره load خواهیم کرد همچنین با آوردن کلمه return شما از ادامه برنامه جلوگیری می کنید !

 

$Data user = mysql_query("Select * From users WHERE `gid`=$gid AND `username`=".$_POST[Username]." AND `password`=".md5($_POST[Password])."");

$Data user = mysql_fetch_array($data user);

 

اگر کاربر اطلاعات را درست وارد کرده باشد ، اطلاعات آن بیرون کشیده خواهد شد تا ذخیره شود

 

$_SESSION [username] = $data user [username];

$_SESSION [password] = $data user [password];

 

اینجا اطلاعات را از $data user که username و password است را در جلسات ذخیره می کنیم برای فهمیدن این بخش قسمت آموزش های http://forum.persiantools.com/f23.html را بخوانید !

 

session_write_close();

 

در اینجا ذخیره داده ها قطع می کنیم

 

redirect("index.php?option=".$GO);

 

در اینجا تابع ای که برای رفتن به صفحات دیگه است را فراخوانی می کنیم و $GO همان گزینه ای است که شما با admin یا vote پر کردید و اتمام تابع } و فایل لوگین نیز پایان یافت !

 

 

 

 

 

 

Admin.php :

فایل admin.php را باز و به کدهای آن نگاهی میکنیم اولین تابع ای که فراخوانی می شود
Check Admin می باشد ، با این تابع تست می کنیم که آیا یک چنین کاربری وجود دارد یا خیر ! و بعد به قسمت switch می رویم در اینجا این تابع $task را با تمامی مقادیر ی که بعد از case وارد کردیم تست
می کنم و با همانی که مطابقت داشت اجرا می کنم.

switch($task){

case New:

Newkandid();

break ;

case NewSave:

if($_POST[name]){

NewSave();

}else{

$error = 1;

Newkandid();

}

break;

case Browse:

Browse();

break;

case Edit:

Edit();

break;

case delete:

delete();

break;

case update:

if($_POST[name]){

update();

}else{

$error = 1;

Browse();

}

break;

case State:

ShowVote();

break;

case loginout:

session_unset();

include("login.php");

break;

default:

html_admin::home();

break; }

 

حالا به تابع زیر نگاه کنیم

Function Browse (){

html_admin::home();

Echo "<p></p>";

 

$ListKandid = mysql_query("Select * From kandid");

html_admin::Browse($ListKandid);

}

این تابع ابتدا تابع home را از html_admin که در فایل admin.html.php است اجرا می کند در خط دوم echo "<p></p>" یک کد اچ تی ام ال را اجرا می کند که باعث می شود در نمایش صفحه قسمت home یک فاصله ای از browse داشته باشد. در خط چهارم ما از بانک اطلاعاتی تمامی اطلاعاتی که در جدول kandid است را تقاضا می کنیم و در خط پنجم آن را به تابع browse می دهیم تا برای ما نمایش دهد !

Function Check Admin (){

$Check Valid Admin = mysql_query("SELECT COUNT(*) as num FROM users WHERE `gid`=1 AND `username`=".$_SESSION[username]." AND `password`=".$_SESSION[password]."");

$Check Valid Admin = mysql_fetch_array($CheckValidAdmin);

if(!($Check Valid Admin[num] == 1)){

Echo _error_expire;

Include ("login.php");

die;}}

 

این تابع امنیت کار ما را تضمین می کند در خط اول این تابع می گوییم برای ما بگو که آیا این نام کاربری و پسورد در بانک اطلاعاتی موجود است ؟ به شرطی که سطح دسترسی آن نیز 1 باشد .

شاید توجه کرده باشید که این باید $_SESSION بجای پست آمده !

اگر به خاطر داشته باشید در آخرین تابع Login.php یک قسمت بود که برای ما اطلاعات را در جلسات ذخیره می کرد ، در اینجا آن را فراخوانی کردیم !

در خط دوم می گوییم که برای ما اطلاعات را پردازش کن و آن را به مقداری قابل استفاده در آور !

در سومین خط شما دستور if را می بینید که می گوید اگر Check Valid Admin[num] مساوی 1 بود کار زیر را انجام بده * ولی * توجه کنید که پشت این دستور یک ! می باشد که باعث می شود خلافش را عمل کند یعنی اگر مساوی 1 نبود کار زیر را انجام دهد !

حالا فرض بر این است که غیر از 1 باشد می گوید echo _error_expire یعنی برای کاربر error_expire را نمایش دهد !


مبلغ واقعی 16,000 تومان    50% تخفیف    مبلغ قابل پرداخت 8,000 تومان

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

Captcha
پشتیبانی خرید

برای مشاهده ضمانت خرید روی آن کلیک نمایید

  انتشار : ۲۴ فروردین ۱۳۹۷               تعداد بازدید : 350

مطالب تصادفی

  • پروژه مرگبار
  • دانلود سوالات استخدامی آموزش و پرورش (به همراه پاسخ نامه کامل
  • مزایا و معایب استفاده از روش قالب لغزنده عمودی
  • مروری بر ریشه‌های مسئله‌ی فلسطین 30 ص
  • سمينار كارشناسي ارشد (عمران) 197 ص

خراسان جنوبی شهرستان قاینات

تمامی محصولات ما با قیمت بسیار مناسب در سایت قرار میگیرد.