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

و

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

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

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

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

این بخاطر اینه که هم توی Index.php (توی فولدر Login) تگی با id بنام Login داریم هم توی Header.php تگ با id بنام Login داریم، پس واسه رفع این مشکل باید یکی از این تگ ها اسمش با اون یکی تفاوت داشته باشه، من میایم اسم تگی که توی Index.php (در فولدر Login) بنام Login بود رو به Login__page تغییر میدم و توی Login.css هم این تغییر باید انجام بشه .

خروجی :

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

میبینید که مشکل برطرف شد .

یه مشکل دیگه توی Footer سایت هست که در زمان زوم کردن، عرض footer کمتر از عرض header سایته .

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

که اینم با استفاده از کد زیر حل میکنیم ، تکه کد زیر رو به قسمت Footer# (توی فایل footer.css) اضافه میکنیم .

min-width: 1200px;

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

اینم درست شد.

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

تمام فایلهایی که تا الان واسه وب سایت درست کردیم میتونید از این لینک دانلود کنید . خوب الان میایم یه منو کوچیک درست میکنیم تا زمانی که کاربر روی نام کاربری خودش (در بالا) کلیک میکنه این منو نمایش داده بشه .

کد زیر رو به header.php اضافه میکنیم :

                 .
                 .
                 .
<li class="Right" id="Username">
    <div id="MenuDropDown">
        <ul>
            <li class="EditProfile"><a href="#Profile">صفحه شخصی</a></li>
            <li class="Setting"><a href="#Setting">تنظیمات</a></li>
            <li class="line"></li>
            <li class="Exit"><a href="#Exit">خروج</a></li>
        </ul>
    </div>
    <a href="#">نام کاربری</a>
</li>
                 .
                 .
                 .

تگ <div> با id بنام MenuDropDown ایجاد کردیم و توی این تگ چندتا تگ دیگه .

سپس قالبشو مینویسیم (کدهای زیر رو به header.css اضافه میکنیم) :

#Username #MenuDropDown
{
	top: 52px;
	position: absolute;
	width: 105px;
	height: auto;
	background-color: #FFF;
	border: 1px solid #666;
	border-radius: 4px;
}

#Username #MenuDropDown li
{
	line-height: 30px;
	margin: 0;
}

#Username #MenuDropDown ul
{
	margin: 0;
	padding: 0;
}

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

یه تغییر توی کد میدیم تا بتونیم رنگ تگهای <a> (توی منوی ایجاد شده بالا) رو به سیاه تغییر بدم .

<a href="#" class="Username">نام کاربری</a>

یه کلاس اضافه میکنیم .

تغییر تکه کد زیر :

#WhoLogin #Username a.Username
{
	text-decoration: none;
	color: #CCC;
                  .
                  .
                  .

در بالا (خط اول) فقط Username. به بعد از a اضافه میکنیم .

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

الان میایم یه استایل به لینکها میدیم :

#Username #MenuDropDown a
{
	height: 30px;
	padding-right: 15px;
	display: block;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #000;
	text-decoration: none;
}

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

حالا میخوایم یه خورده استایل این منو رو بهتر کنیم :

#Username #MenuDropDown li.line
{
	border-bottom: 1px solid #CCC;
}

#Username #MenuDropDown:after
{
	content: "\25b8";
	color: #FFF;
	font-size: 23px;
	width: 7px;
	right: 12px;
	position: absolute;
	top: -27px;
	transform: rotate(-90deg);
}

یه border میزاریم و سپس با استفاده از 25b8\ یه مثلث ایجاد میکنیم، سپس 90 درجه می چرخونیمش و از بالا و راست تنظیمش میکنیم .

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

یه خورده عرض منو رو بزرگتر میکنیم ، پس width قسمت Username #MenuDropDown# تغییر میدیم :

width: 140px;

میخوایم زمانی که روی لینکهای منو میریم رنگ پس زمینه اش و رنگ لینک عوض بشه، یه سایه هم میزاریم .

#Username #MenuDropDown a:hover
{
	color: #7c70f4;
	font-weight: bold;
	text-shadow: 0.5px 0.5px 5px #7c70f4;
}

#Username #MenuDropDown li.EditProfile a:hover
{
	border-radius: 3px 3px 0 0;
	background-color: #CCC;
}

#Username #MenuDropDown li.Setting a:hover
{
	background-color: #CCC;
}

#Username #MenuDropDown li.Exit a:hover
{
	border-radius: 0 0 3px 3px;
	background-color: #CCC;
}

چون بالای لینک اول و و پایین لینک سوم منو بصورت حلال هست واسه همین مقدار border-radius در بالا تغییر دادم .

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

توی شکل میبینید که با موس روی لینک تنظیمات رفتم و استایلش تغییر کرد .

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

transition: all 500ms ease-in-out;
-webkit-transition: all 500ms ease-in-out;
-moz-transition: all 500ms ease-in-out;
-ms-transition: all 500ms ease-in-out;
-o-transition: all 500ms ease-in-out;

خوب باید کدی بنویسیم تا موقعی که روی نام کاربری کلیک میکنیم این منو نمایش داده بشه پس در ابتدا منو مخفی میکنیم، کد زیر به قسمت Username #MenuDropDown# اضافه میکنیم تا منو نمایش داده نشه .

display: none;

سپس با استفاده از JQuery کار رو تکمیل میکنیم .

کد زیر رو به header.php اضافه میکنیم :

<script type="text/javascript" src="JS/jquery.js"></script>
<script type="text/javascript">
	$(function()
	{
		$("a.Username").click(function()
		{
			if ($("#Username #MenuDropDown").is(":visible") == false)
			{
				$("#Username #MenuDropDown").css("display","inline");
	
				$(document).click(function(e)
				{
					if(!$(e.target).is('a.Username')) 
					{
						$("#Username #MenuDropDown").css("display","none");
					}
				});
			}
			else
			{
				$("#Username #MenuDropDown").css("display","none");
			}
		});	
	});
</script>

کد بالا به ما میگه اگه کاربری روی لینکی با class ی بنام Username کلیک کرد، اگه تگی با id بنام MenuDropDown فعال نبود (یعنی محتوای این تگ در حال نمایش نبود) نمایشش بده وگرنه مخفیش کن (منظور اینه که اگه کاربر روی نام کاربری کلیک کرد منو رو نمایش بده وگرنه مخفیش کنه)

if ($("#Username #MenuDropDown").is(":visible") == false)

این شرط چک میکنه که الان منو مخفی هست یا داره نمایش داده میشه .

$(document).click(function(e)
{
       if(!$(e.target).is('a.Username')) 
             {
                     $("#Username #MenuDropDown").css("display","none");
              }
});

این تکه واسه بستن منوی باز شده است که چک میکنه اگه کاربر هر جای دیگه ای به غیر از نام کاربری کلیک کرد منو مخفی بشه .خوب الان میخوایم موقعی که کاربر لاگین میکنه به سایت، یه Session براش درست کنیم و دیگه دکمه لاگین ، ثبت نام ، فرم ثبت نام نمایش داده نشه و بجاش نام کاربری اون شخص در بالای صفحه نمایش داده بشه.پس میایم یه فایل بنام Session.php توی فولدر libs میسازیم و کدهای زیر توش مینویسیم.

<?php
class Session
{
	public static function init()
	{
		@session_start();
	}
	
	public static function IsLogin()
	{	
		Session::init();
		if(isset($_SESSION["Login"]))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
	public static function LoginDo($key, $value)
	{
           Session::init();		
		$_SESSION[$key] = $value;
	}
	
	public static function Logout()
	{
		session_destroy();
	}
}

یه تابع بنام ()init ایجاد میکنیم و میخوایم زمانی که Session ی تولید میکنیم، در ابتدا این تابع رو فراخوانی کنیم، زمانی که میخوایم Session ی ایجاد کنیم باید اول تابع ()session_start فراخوانی بشه (یعنی Session استارت میکنیم) .این Static که گذاشتم واسه اینه که میخوایم توابع داخل کلاس بدون ایجاد شی از اون کلاس، به راحتی قابل دسترسی باشن، مثلاً به صورت زیر :

Session::init();

ولی اگه Static نزاریم با خطا روبرو میشیم و واسه اینکه به خطا برنخوریم باید هرجایی که بخوایم از توابع هر کلاسی استفاده کنیم باید یه شی ارش بسازیم ، مثلاً اگه بخوایم تابع ()init فراخوانی کنیم باید بصورت زیر بنویسیم :

$obj = new Session(); 
$obj->init();

تابع ()IsLogin چک میکنه اگه Login ی وجود داشت که true برمیگردونه وگرنه false برمیگردونه .

تابع ()LoginDo واسه ایجاد کردن Session هست .تابع ()Logout تمام session هارو حذف میکنه با استفاده از تابع ()session_destroy .کد زیر رو به ابتدای کدهای داخل تگ <body> توی index.php (توی فولدر Index) اضافه میکنیم :

	<?php if(Session::IsLogin()) { ?>
    
    	<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
        
    <? } else { ?>

یه چند تا تگ <br> گذاشتم واسه ایجاد یه فاصله بین header و Footer (این تگها موقعتی هستن تا زمانی که سایتمونو تکمیلتر کنیم)کد زیر رو به انتهای کدهای داخل تگ <body> توی index.php (توی فولدر Index) اضافه میکنیم :

<?php } ?>

یه تغییر هم باید توی header.php بدیم :

                             .
                             .
                             .
	<ul>
		<?php if(!Session::IsLogin()) {?>
            <li class="Right" id="Login">
                <a href="Login">ورود</a>
            </li>
        <?php } else { ?>
            <li class="Right" id="Username">
                <div id="MenuDropDown">
                    <ul>
                        <li class="EditProfile"><a href="#Profile">صفحه شخصی</a></li>
                        <li class="Setting"><a href="#Setting">تنظیمات</a></li>
                        <li class="line"></li>
                        <li class="Exit"><a href="#Exit">خروج</a></li>
                    </ul>
                </div>
                <a href="#" class="Username">نام کاربری</a>
            </li>
            <li class="Right" id="Letter">
                <div id="Num_Letter"><label class="Number">2</label></div>
                <img src="Pic/Letter.png" />
            </li>
            <li class="Right" id="Message">
                <div id="Num_Message"><label class="Number">1</label></div>
                <img src="Pic/warning.png" />
            </li>
            <li class="Right" id="Post">
                <a href="#">ارسال مطالب</a>
            </li>
        <?php } ?>
            <li class="Left">
                <input type="text" id="txt_search" name="txt_search" value="جستجو ..." />
            </li>
        </ul>
    </div>
</div>
<div id="Header">
    
    <div id="SingUp">
        <ul>
            <li id="title">
                ITPro.ir
            </li>
            <?php if(!Session::IsLogin()) {?>
                <li>
                    <input type="button" id="Btn_SingUp" value="ثبت نام" name="Btn_SingUp" />
                </li>
            <?php } ?>
            <li id="title2">
                                .
                                .
                                .

فقط چند خط کد php اضافه کردم بقیه کدها تکراری هستن .

شرط زیر رو توی فایل Login__Model.php پیدا کنید و بصورت زیر تغییرش بدید .

                     .
                     .
                     .
if($count > 0)
{
	//echo "<br>welcome";
	Session::LoginDo("Login", "success");
	header("location: ../index");
}
else
{
	//echo "<br>Invalid Username Or Password";
	header("location: ../login");				
}
                    .
                    .
                    .

باید فایل session.php رو هم توی سایت لود کنیم، کد زیر به فایل Index.php (توی فولدر اصلی سایت) اضافه میکنیم :

require("libs/Session.php");

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

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

الان وارد سایت میشیم و روی نام کاربری کلیک میکنیم .

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

حالا میخوایم زمان ورود به سایت به جای نمایش "نام کاربری" نام کاربری کسی که وارد سایت شده نمایش داده بشه .

تابع LoginDo بصورت زیر تغییر میدیم :

public static function LoginDo($key, $value, $username)
{
	Session::init();
	$_SESSION[$key] = $value;
	
	$_SESSION["Uname"] = $username;
}

و تابع زیر اضافه میکنیم :

public static function GetUserLogin()
{
	return $_SESSION["Uname"];
}

تکه کد مربوط به نام کاربری توی فایل header.php رو بصورت زیر تغییر بدید :

<a href="#" class="Username"><?php echo Session::GetUserLogin(); ?></a>

شرط زیر رو توی فایل Login__Model.php پیدا کنید و بصورت زیر تغییرش بدید .

if($count > 0)
{
	Session::LoginDo("Login", "success", $user);
	header("location: ../index");
	//echo "<br>welcome";
}

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

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

امیدوارم از این آموزش هم استفاده لازم ببرید، ITPro باشید .

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

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

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

#شی_گرایی_در_php #کلاس_ها_در_php #آموزش_mvc_و_oop_در_php #آموزش_گام_به_گام_php #آموزش_jquery #آموزش_css #آموزش_java_script #mvc_در_php #آموزش_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 نظر
ghochi

سلام

من همه این مراحلو رفتم حتی کد شما هم اجرا کردم ولی وقتی دکمه ورود میزنم اصلا اون مدلی نیست و فقط صفحه ورود معمولی باز میشه و نام کاربری رو هم نشون نمیده در بالای صفحه.نمیدونم مشکلش چیه؟

وب سایت توسینسو

مهدی رزمجویی

با سلام

من کدی که آپلود کرده بودم نگا کردم گفتم شاید مشکل از کدهای آپلودی باشه ولی مشکلی نداشت .

زمان اجرا خطایی بهتون نمیده ؟

سایتتون به همین صورتی که توی عکس معلومه اجرا میشه؟ (یعنی دکمه ورود و کادر متن جستجو (در بالای سایت) براتون نمی یاد؟)

کد زیر رو توی فایل session.php پیدا کنید و موقتی پاکش کنید دوباره امتحان کنید ببینید جواب میگیرید :

Session::init();

در آخر اگه جواب نگرفتید برنامه wampserver پاک کنید و دوباره نصبش کنید و بعدش دیتابیس و دوتا جدولو ایجاد کنید .

fatemah1sh

سلام آقا دستتون درد نکنه خداخیرتون بده آموزشتون خیلی خیلی بدردم خورد کاش زودتر بقیه قسمتهاشم میزاشتید واقعا منتظرشونم. خیلی دنبال آموزش جامع و خوب در مورد mvc بودم ولی بدردم نخوردند . ممنونم ازتون .ببخشید من به این روش سایتی رو طراحی کردم و اطلاعات رو از بانک میخونم به کنترلر میفرستم ولی نتونستم توی view آنها رو نمایش بدم تو رو خدا سریعا کمکم کنید که چکار کنم :( خیلی دنبالش گشتم چون شی گراییم زیاد خوب نیست موفق نشدم اجراش کنم خیلی گیر کردم ممنونم سریعا بهم جواب بدین

مهدی رزمجویی

با سلام

مشکلاتی برام پیش اومد نشد آموزشهارو جلو ببرم ولی تا یکی دو روز آینده میخوام چند قسمت آموزش بزارم جبران این عقب افتادن آموزشها بشه.

من متوجه مشکلتون نشد دقیقاً مشکل کجاست؟ کدتونو بزارید و مشکل واضح تر بگید تا بتونم کمک کنم .

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

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