در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

سلام به همگی دوستداران ITPro یه تغییر کوچولو توی روند آموزش ها دادم، از این به بعد در نظر دارم تو همین حین که آموزش های PHP جلو میره یه آموزش کوچیک هم درباره css و jquery به کارمون اضافه کنم چون php کارا به غیر از اینکه باید به php مسلط باشن باید یه آشنایی خوبی هم با css و jquery داشته باشن . خوب تو این قسمت میخوایم یه دیتابیس با یه جدول واسه سایتمون ایجاد کنیم و با صفحه لاگین سایت وارد وب سایتمون بشیم و بعدش سایت رو از نظر امنیتی تست میکنیم ببینیم قابل نفوذ هست یا نه؟! در ابتدا میایم یه فولدر بنام CSS توی پوشه اصلی وب سایتمون میسازیم و یه فایل بنام Login.css توش ایجاد میکنیم .کد Login.php (توی فولدر Login) بصورت زیر تغییر میدیم :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<link rel="stylesheet" type="text/css" href="CSS/Login.css"/>

<title>Login</title>
</head>

<body>

	<div id="SingUp">
    	<ul>
        	<li id="title">
            	PHP-MVC
            </li>
            <li>
            	<input type="button" id="Btn_SingUp" value="ثبت نام" name="Btn_SingUp" />
            </li>
        </ul>
    </div>
    <br  /><br  />
    
	<div id="Login">
    	<div id="textbox">
            <ul>
                <li>
                    <input type="text" id="txt_User" name="txt_User" />
                </li>
                <li>
                    <input type="text" id="txt_Pass" name="txt_Pass" />
                </li>
                <li>
                	<input type="submit" id="btn_Login" name="btn_Login" value="ورود" />
            	</li>
            </ul>
    	</div>
        
        <div id="label">
            <ul>
                <li>
                    <label>نام کاربری : </label>&nbsp;
                </li>
                <li>
                    <label>رمز عبور : </label>&nbsp;
                </li>
            </ul>
        </div>
        
        <ul>
        	<li id="title">
                <div>
                    PHP-MVC  Login
                </div>
            </li>
        </ul>        
    </div>

</body>

</html>

با استفاده از کد زیر (که در بالا اومده)

<link rel="stylesheet" type="text/css" href="CSS/Login.css"/>

از کدهای Login.css توی Login.php استفاده میکنیم .

در ابتدا یه خروجی میگیریم (فعلاً هیچ قالبی ننوشتیم) :

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

کد Login.css :

#SingUp, #Login
{
	border: 1px solid;
	margin: 0 auto;
}

#SingUp
{
	height: 90px;
}

#Login
{
	width: 550px;
}

#SingUp ul, #Login ul
{
	list-style: none;
}

#SingUp li
{
	float: left;
}

توی خط اول کد گفتم که یه کادر واسه دو تگ <div> بنامهای SingUp, #Login# بزاره و خط دوم هم margin برابر مقدار auto 0 قرار دادم چون میخوایم این دو تگ وسط صفحه قرار بگیرن .

زمانی که از تگ <ul> استفاده میکنیم، کنار مقادیر توی این تگ، یه مربع یا دایره قرار میگیره و چون نمیخوایم این مربع یا دایره نمایش داده بشن باید خاصیت list-style برابر none قرار بدیم .

اگه خواستیم مقادیر تگ <ul> بصورت افقی نمایش داده بشن باید خاصیت float تنظیم کنیم . ( که من این خاصیت برابر left تنظیم کردیم یعنی مقادیر از سمت چپ به راست بصورت افقی نمایش داده بشن )

و حالا یه خروجی دیگه میگیریم :

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

خوب حالا قسمت هایی رو باید تغییر بدیم :

#SingUp
{
	height: 90px;
	background-color: #6260b6;
}

#Login
{
	width: 550px;
	height: 200px;
	border: 1px solid;
	border-radius: 5px;
	border-color: #999;
}

با استفاده از خاصیت border-radius میتونیم گوشه های کادر رو هلال کنیم .

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

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

که من مقدار 6260b6 (که توی شکل معلومه) واسه خاصیت background-color قرار دادم .

سپس کدهای زیر رو اضافه میکنیم :

#SingUp #title
{
	font-size: 30px;
	font-weight: bold;
	color: #FFF;
	margin-right: 40px; 
	margin-left: 100px;
}
#Login #textbox
{
	position: absolute;
	margin: 45px 0 0 170px;	
}

#Login #label
{
	position: absolute;
	margin: 50px 0 0 80px;
}

با استفاذه از خاصیت margin یه فاصله میزارم سمت راست و چپ متن PHP-MVC (مقدار PHP-MVC توی تگ <div> با id بنام title قرار داده، توی کدایی که نوشتین معلومه).

یه خروجی میگیریم :

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

و حالا دوباره یه تغییر کوچیک میدیم :

#SingUp, #Login
{
	/*border: 1px solid;*/
	margin: 0 auto;
}

خوب حالا این کدهارو هم اضافه میکنیم :

#SingUp #Btn_SingUp
{
	background-color: #168500;
	border: 1px solid #999;
	width: 70px;
	height: 30px;
	color: #FFF;
	font-weight: bold;
	cursor: pointer;
}

خط آخر کد واسه این هست که هر وقت کاربر اشاره گر موس روی دکمه ثبت نام بگیره شکل اشاره گر (از شکل پیشفرض خودش یعنی فلش) تغییر کنه به شکل دست .

کد زیر به قسمت SingUp #title# اضافه میکینم :

text-shadow: 0.5px 0.5px 5px #000;

کد زیر به قسمت SingUp #Btn_SingUp# اضافه میکینم :

text-shadow: 0px 0px 10px #FFF;

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

این تکه کد به کدهامون اضافه میکنیم :

#Login ul
{
	padding: 0;
}

کد بالا تمام فاصله های درون تگ <ul> (فاصله از بالا ، پایین ، چپ و راست) صفر میکنه .

یه خروجی میگیریم ببینیم چطور شد :

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

خوب این تکه کد باید تغییر بدیم :

#SingUp li
{
	float: left;
	margin-top: 20px;
}

حالا کدهای زیرو هم به کدامون اضافه میکنیم :

#Login #title
{
	border-bottom: 1px solid #999;
	margin: 0 20px 30px 20px;
}

#Login #title div
{
	color: #4d279c;
	font-weight: bold;
	padding-bottom: 5px;
}

با استفاده از خط اول، یه خط زیر میزازیم واسه پایین متن PHP-MVC Login . توی خط دوم میایم یه فاصله 20px میزاریم از چپ و راست و از بالا فاصله صفر میزاریم و از پایین هم فاصله 30px میزاریم .

بعدش با استفاده از خاصیت padding-bottom یه فاصله 5px میزاریم بین متن PHP-MVC Login و خط زیر متن .

حالا یه خروجی دیگه میگیریم .

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

خوب حالا این کدهارو هم اضافه میکنیم به کدهایی که تا الان نوشتیم :

#Login label
{
	color: #615f64;
}

#Login #label li
{
	margin-bottom: 5px;
}

#Login #textbox #txt_Pass
{
	margin-top: 5px;
}

#Login #textbox #btn_Login
{
	margin-top: 12px;
	background-color: #005caa;
	border: 1px solid #000;
	color: #FFF;
	width: 50px;
	height: 27px;
	font-weight: bold;
	margin-left: 3px;
}

حالا یه خروجی میگیریم ببینیم چطوری شد:

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

تمام کد هایی که تا الان توی فایل Login.css نوشتیم :

#SingUp, #Login
{
	/*border: 1px solid;*/
	margin: 0 auto;
}

#SingUp
{
	height: 90px;
	background-color: #6260b6;
}

#SingUp #Btn_SingUp
{
	background-color: #168500;
	border: 1px solid #999;
	width: 70px;
	height: 30px;
	color: #FFF;
	font-weight: bold;
	cursor: pointer;
	
	text-shadow: 0px 0px 10px #FFF;
}

#SingUp #title
{
	font-size: 30px;
	font-weight: bold;
	color: #FFF;
	margin-right: 40px; 
	margin-left: 100px;
	
	text-shadow: 0.5px 0.5px 5px #000;
}

#SingUp ul, #Login ul
{
	list-style: none;
}

#SingUp li
{
	float: left;
	margin-top: 20px;
}

#Login
{
	width: 550px;
	height: 200px;
	border: 1px solid;
	border-radius: 5px;
	border-color: #999;
}

#Login #textbox
{
	position: absolute;
	margin: 45px 0 0 170px;	
}

#Login #label
{
	position: absolute;
	margin: 50px 0 0 80px;
}

#Login ul
{
	padding: 0;
}

#Login #title
{
	border-bottom: 1px solid #999;
	margin: 0 20px 30px 20px;
}

#Login #title div
{
	color: #4d279c;
	font-weight: bold;
	padding-bottom: 5px;
}

#Login label
{
	color: #615f64;
}

#Login #label li
{
	margin-bottom: 5px;
}

#Login #textbox #txt_Pass
{
	margin-top: 5px;
}

#Login #textbox #btn_Login
{
	margin-top: 12px;
	background-color: #005caa;
	border: 1px solid #000;
	color: #FFF;
	width: 50px;
	height: 27px;
	font-weight: bold;
	margin-left: 3px;
}

خوب تا اینجا یه قالب در حد معمولی واسه صفحه Login.php درست کردیم، حالا میایم کدهایی مینویسیم واسه وصل شدن به دیتابیس و استفاده از داده های جداول دیتابیس.

روی Wamp (کنار ساعت سیستم) کلیک میکنیم (البته اگه از برنامه Wamp استفاده میکنید) و PhpMyAdmin انتخاب میکنیم یا لینک زیر توی url وارد میکنیم و enter میزنیم .

http:////localhost//phpmyadmin

یه دیتابیس به نام ITPro میسازیم و فعلاً یه جدول هم بنام tlb_UserPass هم واسه جدول نام کاربری و پسورد میسازیم بصورت زیر .

بعد از اینکه صفحه phpmyadmin باز کردیم به تب database میریم :

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

بصورت بالا یه دیتابیس به نام ITPro ایجاد میکنیم، سپس روی نام ITPro در سمت چپ کلیک میکنیم :

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

جدولی به نام tlb_UserPass با سه ستون ایجاد میکنیم .

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

سه ستون بنامهای id , username , password ایجاد میکینم که چون میخوایم پسوردهایی که توی دیتابیس ذخیره میشه MD5 بشن بخاطر همین طولشو 32 گذاشتم و نام کاربری هم حداکثر باید 10 کاراکتر باشه (که این اختیاری هست) و مقدار collation هم گذاشتم utf8_persian، تا مقادیر فارسی هم بتونیم توی جدول وارد کنیم .

خوب دیتابیس و جدولمونو ساختیم میریم سر وقت کدنویسی.

در ابتدا یه فایل بنام LoginModel.php توی فولدر Models ایجاد میکنیم و کلاس LoginModel توش تعریف میکنیم :

کد Login_Model.php :

<?php

class Login_Model 
{
	function __construct()
	{
	}
	
	function run()
	{
		$link = mysql_connect('localhost', 'root', 'mr_prog');
		if (!$link) {
			die('Could not connect: ' . mysql_error());
		}
		$db_selected = mysql_select_db('ITPro', $link);
		if (!$db_selected) {
			die ('Can\'t use user_pass : ' . mysql_error());
		}
		
		$user = $_POST["txt_User"];
		$pass = md5($_POST["txt_Pass"]);
		$sql = "select * from tlb_UserPass where username='{$user}' and password='{$pass}'";
		$result = mysql_query($sql);
		if (!$result) {
			die ('Invalid query : ' . mysql_error());
		}
		
		if($row = mysql_fetch_row($result))
		{
			echo "<br>welcome";
		}
		else
		{
			echo "<br>Invalid Username Or Password";
		}
		die();
	}
}

یه تابع بنام run ایجاد میکنیم که توی خط اولش با استفاده از تابع mysqlconnect به phpmyadmin وصل میشیم (در اینجا root و mr_prog به ترتیب یوزر و پسورد اکانت من هست که باهاش وارد phpmyadmin میشم)

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

یورز و پسوردی که از کاربر میگیریم رو توی متغیر میریزیم و پسورد رو هم MD5 میکنیم . خط بعدی هم Query نوشتیم که گفتیم توی جدول بگرده و نسبت به ورودی ها (یعنی همون یوزر و پسورد) به ما نتیجه رو برگردونه که باز توی خط بعدی هم گفتیم اگه مشکلی توی Query بود و نتونست Query اجرا کنه بهمون خطا بده، سپس توی خط بعدی با استفاده از تابع mysqlfetchrow نتیجه Query رو توی یه متغیر بنام row$ میریزیم (خروجی آرایه هست) حالا اگه Query چیزی برامون برگردوند که تابع mysqlfetchrow تمام رکوردها رو توی متغیر row$ میریزه وگرنه چیزی توی متغیر ریخته نمیشه پس اگه یوزر و پسورد درست باشه به ما پیغام Welcome و اگه اشتباه باشه به ما پیغام Invalid Username Or Password میده حالا میایم یه تست میکینم البته قبلش باید یه تغییر توی کلاس Login بدیم :

کد Login.php (توی فولدر Controllers) :

<?php

class Login extends Controller
{
	function __construct()
	{
		parent::__construct();
		
		$this->view->Render("Login/index");
	}
	
	function run()
	{
		require("models/Login_Model.php");
		
		$L_M = new Login_Model();
		$L_M->run();
	}
}

که من یه تابع بنام run نوشتم و توش یه شی از کلاس LoginModel ایجاد کردم و تابع run توی کلاس LoginModel فراخوانی کردم .

حالا باید یه تغییراتی هم توی کد Index.php (که توی فولدر Login هست) بدیم، یه تگ <form> باز میکنیم و تگ <div> با id بنام Login رو توش قرار میدیم بصورت زیر :

<form id="form_login" name="form_login" method="post" action="Login/run" >
	<div id="Login">
    		.
            .
            .
	</div>
</form>

خوب حالا کدهای کلاس Login_Model رو بصورت زیر تغییر میدیم :

دقت کنید زمانی که کاربر یوزر و پسورد خودشو وارد میکنه و روی دکمه ورود کلیک میکنه، تابع run از کلاس Login فراخوانی میشه یعنی اطلاعات (یوزر و پسورد) به این تابع فرستاده میشه .

در ضمن قبل از اجرای کدها، phpmyadmin رو باز کنید و توی جدول tlb_userpass یک یا چندتا یوزر و پسورد ذخیره کنید و پسوردی هم که ذخیره میکنید باید قبلش تبدیلش کنید به MD5 بعد ذخیرش کنید، خوب حالا میایم یه تست میکنیم ببینیم جواب میده یا نه ؟!!

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

یوزر و پسورد وارد میکنیم و حالا میبینید که بهمون welcome داد پس یعنی همه چی درسته حالا پسورد اشتباه میدم ببینم چطور میشه :

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

میبینید که بهمون پیغام Invalid Username Or Password داد پس داره درست کار میکنه ولی اینجا یه سوالی پیش میاد که آیا این کدی که من الان نوشتم به درد بخور هست یا نه؟

یعنی یه هکر میتونه سایت منو هک کنه یا نمیتونه؟!!!!

یوزر رو admin' or '0'='1 و پسورد رو هرچی خواستید وارد کنید (مثلاً alaki)

امتحان میکنیم....

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

چی شد؟؟ هکر راحت تونست بدون اینکه پسورد منو بدونه تنها با در دست داشتن یوزر من وارد سایت بشه!! حتی هکر یه جور دیگه هم میتونه اطلاعات رو وارد کنه یعنی بدون اینکه یوزر منو داشته باشه وارد سایت بشه بصورت زیر :

یوزر رو #'alaki' or '1'='1 و پسورد رو هرچی خواستید وارد کنید (مثلاً alaki)

کاراکتر # یعنی هرچی بعد از این کاراکتر میاد به عنوان Comment یا توضیحات در نظر بگیر .

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم

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

نویسنده : مهدی رزمجویی

منبع : جزیره طراحی و توسعه وب وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#شی_گرایی_در_php #آموزش_mysql #کلاس_ها_در_php #آموزش_mvc_توی_php #آموزش_گام_به_گام_php #آموزش_jquery #آموزش_css #آموزش_php #آموزش_پی_اچ_پی #آموزش_mvc_در_php
عنوان
1 دوره آموزشی برنامه نویسی MVC در PHP قسمت اول رایگان
2 دوره آموزشی برنامه نویسی MVC در PHP قسمت دوم رایگان
3 دوره آموزشی برنامه نویسی MVC در PHP قسمت سوم رایگان
4 دوره آموزشی برنامه نویسی MVC در PHP قسمت چهارم رایگان
5 دوره آموزشی برنامه نویسی MVC در PHP قسمت پنجم رایگان
6 دوره آموزشی برنامه نویسی MVC در PHP قسمت ششم رایگان
7 دوره آموزشی برنامه نویسی MVC در PHP قسمت هفتم رایگان
8 دوره آموزشی برنامه نویسی MVC در PHP قسمت هشتم رایگان
9 دوره آموزشی برنامه نویسی MVC در PHP قسمت نهم رایگان
10 دوره آموزشی برنامه نویسی MVC در PHP قسمت دهم رایگان
11 دوره آموزشی برنامه نویسی MVC در PHP قسمت یازدهم رایگان
12 دوره آموزشی برنامه نویسی MVC در PHP قسمت دوازدهم رایگان
13 دوره آموزشی برنامه نویسی MVC در PHP قسمت سیزدهم رایگان
14 دوره آموزشی برنامه نویسی MVC در PHP قسمت چهاردهم رایگان
زمان و قیمت کل 0″ 0
4 نظر
abbasmolla

سلام. ممنون از آموزش خوبتون.

جایی که نوشتید: "خوب حالا کدهای کلاس Login_Model رو بصورت زیر تغییر میدیم : "

بعدش هیچ کدی نشون داده نمیشه!!!؟ هیچ عکسی هم نیست.

توی همین مرحله گیر کردم

reza12

سلام - ممنونم از سایت اموزنده ی مفید تون سوالی که دارم مورد فایل login.php داخل پوشه viewlogin این به غیراز index است یا نه همون index .phpداخل پوشه ی viewlogin؟بعدم اگر فایل login.phpیک فایل دیگه است برای نمایشش چیکار کنیم توی loginپوشه کنترلرها index رو فراخونی کردیم حرفی از loginنیست وcss ی که قرار داده شده هم مربوط به

viewloginlogin.phpاست.اما زمانی که فراخوانی رو میزنم indexپوشه ی login بالا میاد و اصلاloginرو نمیاره ممنون میشم راهنمایی کنید که باید چیکار کنم ودر ضمن به دیتابیس هم نمیتونم متصل شوم.

البته تمام مراحل کار را یکی یکی طبق اموزش جلو امدم و جواب گرفتم به غیر از این مرحله.

reza12

سلام قسمت7رو هم انجام دادم و از طریقpdo هم رفتم جلو اما بازم خطا میده ممنون میشم راهنمایی کنید.

error

حالا من از اروری که داده شده عکس گرفتم وگذاشتم.

خیلی ممنون از سایتتون برای من که یه تازه کارم خییییییییییلی مفیدبوده امیدوارم موفق وپیروز باشید در همه حال

مهدی رزمجویی

با سلام

این آموزش ماله سالها قبل بوده، توضیحات کاملا واضح هست و کد نوشته شده رو من آپلود کردم، تا اگه جاییش گیر کردید (که به احتمال زیاد خطای syntax ی هست) از روی کد نگا کنید من چیکار کردم .

آموزشهارو دوباره از اول برید جلو، توی اوایل آموزشها کد آپلود نشده ولی اگه مابقی آموزشهارو برید جلو کدآپلود شده رو میبینید، اکثر خطاها از بی دقتی هست که syntax error میگیرید. یا متغیری و یا تابعی رو درست تایپ نمیکنید .

در خصوص سوال اولتون، من فایل آپلود شده رو نگا کردم ولی، اصلا login.php توی فولدر login در view نداریم، و یه فایل بنام index,php داریم که این فایل رو بعدا استفاده میکنیم واسه کدهای Front-end سایت(یعنی همون css و جاوااسکریپت و html)

اگه کدی که توی فایل login.php نوشتین رو میزاشتین توی سوالتون، بهتر میشد راهنماییتون کرد، چون نمیدونم کد چی نوشتین واسه همین از رو خطای کدتون میشه فهمید که توی خط شماره 13 ایراد دارید و داره به $Model گیر میده .

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

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