قسمت آخر - چگونه امنیت پنل مدیریت سایت را افزایش دهیم؟

php-admin-security

سلام، به قسمت آخر آموزش طراحی سایت فروشگاهی با استفاده از زبان قدرتمند php خوش آمدید، در این قسمت همانطور که در جلسه قبل عرض کردم قصد داریم تا فایل های موجود در پنل مدیریت سایت را قفل کنیم و کلید این قفل قرار است متغییر سراسری $_SESSION['admin_email'] باشد. حالا چگونه عملیات قفل کردن انجام می شود و چگونه قرار است متغییر سراسری $_SESSION['admin_email']، نقش، کلید این قفل را بازی کند، در ادامه به طور مفصل خدمت شما عزیزان توضیح داده می شود.

توجه: شما می توانید فایل کامل این اسکریپت را که در طی ۶۰ جلسه آموزش داده ایم از طریق لینک زیر دریافت کنید:

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

در قسمت قبل، مشاهده نمودید که، وقتی ایمیل و پسورد به درستی وارد شود، برنامه به سمت پنل مدیریت سایت هدایت می شود؛ البته پارامتر MessageToAdmin نیز به این لینک تزریق می شود تا در ادامه از آن استفاده شود. برای درک بهتر به آدرس C:\wamp\www\ecommerce\admin_area مراجعه نمایید و فایل login.php را با استفاده از Notepad++ باز و کد زیر را در آن پیدا کنید.

<script>window.open('index.php?MessageToAdmin=سلام مدیر محترم ، مقدمتان گلباران. موفق باشید.','_self')</script>

همانطور که مشاهده می کنید، مقداری که برای پارامتر MessageToAdmin در نظر گرفته ایم برابر است با "سلام مدیر محترم ، مقدمتان گلباران. موفق باشید".

خب بعد از درک مفاهیم بالا، اکنون به آدرس C:\wamp\www\ecommerce\admin_area بروید و فایل index.php را باز کنید و کدهای زیر را در آن پیدا کنید.

	<!-- start of ocntent left -->
	<div id="templatemo_content_left">
		
		<?php

آنها را حذف کنید و به جای آنها کدهای زیر را قرار دهید.

	<!-- start of ocntent left -->
	<div id="templatemo_content_left">
		
		<?php
			
			if(isset($_GET['MessageToAdmin']))
			{
				$message=$_GET['MessageToAdmin'];
				echo"<h1 style='width:500px;margin:150px auto;'>$message</h1>";
			}

توضیح کدهای بالا، با توجه به قسمت های قبل فوق العاده ساده می باشد. ما در اینجا با استفاده از متغییر سراسری $_GET[' MessageToAdmin '] پیام موجود در لینک را استخراج کرده ایم و در معرض دید مدیر سایت قرار داده ایم.

فعال کردن گزینه ی "خروج " مدیر سایت

بعد از انجام اقدام بالا، حالا زمان آن فرا رسیده که گزینه ی "خروج"  که یکی از گزینه های سایدبار سمت راست پنل مدیریت است را با همدیگر فعال کنیم. به تصویر زیر نگاه کنید.

گزینه خروج در پنل مدیریت سایت

حالا برای دیدن پشت پرده گزینه "خروج" باید به آدرس C:\wamp\www\ecommerce\admin_area\include بروید و فایل Right_Sidebar.php را را باز کنید و کدی که در تصویر زیر قرار دارد را در آن پیدا کنید.

لینک خروج

مطمئنم که شما، با اینگونه تصاویر، به طور کامل در طی این چند قسمت آشنا شده اید، بنابراین از توضیح اضافی در مورد آن خودداری می کنم. حالا با توجه به لینک بالا، باید به آدرس C:\wamp\www\ecommerce\admin_area برویم و فایل index.php را بار دیگر باز کنیم و کدهای زیر را در آن پیدا کنیم.

			if(isset($_GET['view_payments']))
			{
				include('view_payments.php');
			}

آنها را حذف کنید و به جای آنها کدهای زیر را قرار دهید.

			if(isset($_GET['view_payments']))
			{
				include('view_payments.php');
			}	
			
			if(isset($_GET['logout_admin']))
			{
				include('logout_admin.php');
			}

همانطور که مشاهده می کنید، یک دستور شرطی قرار داده ایم به این معنی که " اگر در لینک متغییر سراسری $_GET['logout_admin']) وجود داشت، آنگاه فایل logout_admin.php را include کن"

البته با توجه به اینکه ما فایل logout_admin.php را تا اکنون نساخته ایم، باید آن را ایجاد کنیم.

لذا، ابتدا باید به آدرس C:\wamp\www\ecommerce\admin_area بروید و در آنجا فایلی تحت عنوان logout_admin.php بسازید. به تصویر زیر نگاه کنید.

ایجاد فایل logout_admin

حالا که فایل logout_admin.php را ایجاد کردید، آن را با استفاده از Notepad++ باز کنید و کدهای زیر را در آن قرار دهید.

<?php
	session_destroy();
	echo"<script>window.open('login.php','_self')</script>";
?>

در واقع در این فایل ما متغییر $_ SESSION که هنگام لاگین ساخته بودیم (منظور من متغییر سراسری $_SESSION['admin_email'] است که در قسمت قبل آن را ایجاد کردیم.) از بین می بریم و بعد از آن با استفاده از دستورات javascript  مدیر سایت را به صفحه login.php می فرستیم.

خب وقت آن رسیده است که ببینیم در عمل آیا کدهای نوشته شده، کار خواهند کرد یا خیر؟

تست عملی کدهای نوشته شده

ابتدا wamp را روشن کنید و در مرورگر خودتان آدرس http://localhost/ecommerce/admin_area/login.php را وارد نمایید تا تصویر زیر برای شما نمایان شود.

نمایش استاتیک login

حالا باید ایمیل و پسوردی را که برای مدیر درست کردید، در تگ های ورودی قرار دهید. به عنوان مثال ایمیل مدیر سایت برای من jahangirpachkam@gmail.com و پسورد نیز @jahangirpachkam می باشد که آنها را در تگ ورودی قرار داده ام. به تصویر زیر نگاه کنید.

وارد کردن اطلاعات در تگ های ورودی

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

پنل مدیریت سایت

حالا، همانند تصویر زیر، بر روی گزینه "خروج" از سایدبار سمت راست کلیک می کنیم. به تصویر زیر دقت کنید.

گزینه خروج در پنل مدیریت سایت

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

افزایش امنیت بخش مدیریت و پوشه admin

دقت کنید، همانطور که در تصویر زیر مشاهده می کنید، فولدر admi ، از یک سری فایل و فولدر تشکیل شده است که بعضی از این فایل ها دارای تگ های ورودی هستند، که می توانند برای یک هکر، بهترین راه برای ضربه زدن به سایت باشند. به تصویر زیر نگاه کنید.

فایل admin

در تصویر بالا، من فایل هایی که دارای تگ های ورودی هستند را با استفاده از کادر قرمز رنگ برجسته کرده ام. مثلا فرض کنید شما به عنوان یک هکر به جای اینکه به صفحه لاگین بروید و ایمیل و پسورد مدیر را وارد کنید، کافی است آدرس http://localhost/ecommerce/admin_area/index.php را در مرورگر بنویسید، تا به راحتی به پنل مدیریت سایت دسترسی داشته باشید. به تصویر زیر نگاه کنید.

پنل مدیریت سایت بدون استفاده از رمز عبور

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

راه حل برطرف کردن این عیب بزرگ، این است که به ابتدای هر کدام از فایل هایی که خدمت شما عرض کردم ( edit_brand.php ،edit_cat.php  edit_product.php  ،index.php  ،insert_brand.php  ،insert_cat.php ،insert_product.php)، کدهای زیر را اضافه نمایید.

<?php 
	//start (condition enter admin)
	if(isset($_SESSION['admin_email'])){
?>

و به انتهای هر کدام از همان فایل ها نیز ، کد زیر را اضافه کنید.

	<?php 
		//end( condition enter admin )
		
		}else{
		echo "
		<html lang='fa'  dir='rtl'>
		<head>
		<meta http-equiv='Content-Type' content='text/html'; charset='utf-8' />
		</head>";
		
		echo "<script>window.open('login.php?not_admin=شما از مدیران سایت نیستید','_self')</script>";
	}
?>

به همین راحتی یک خطر بزرگ را برطرف کردیم، در واقع فایل های حساس خود را که به صورت مستقیم با پایگاه داده در ارتباط بودند را قفل کردیم. نقش اساسی در فرآیند قفل سازی را متغییر سراسری $_SESSION['admin_email'] بازی می کند.

البته یک تغییر کوچک نیز باید در فایل login.php انجام بدهیم، بنابراین به آدرس C:\wamp\www\ecommerce\admin_area بازگردید و فایل login.php را با استفاده از Notepad++ باز کنید و کدهای زیر را در آن پیدا کنید.

<div class="login">

آن را حذف کنید و به جای آن کدهای زیر را قرار دهید.

		<div class="login">
			<h2>
				<?php 
					if(isset($_GET['not_admin']))
					{echo $_GET['not_admin'];}
				?>
			</h2>

حالا، بیایید بار دیگر مانند یک هکر، تلاش کنیم که به صفحه index.php  (پنل مدیریت سایت ) برویم، بنابراین آدرس http://localhost/ecommerce/admin_area/index.php را در مرورگر بنویسید و اینتر بزنید، تصویر زیر را مشاهده کنید و ببینید چه اتفاقی روی داد.

ارجاع دادن به صفحه لاگین

مشاهده می  کنید که دیگر نمی شود به این راحتی وارد پنل مدیریت سایت (index.php) شد. هرکاری هم که بکنیم ما را به صفحه login هدایت می کند تا ایمیل و پسورد را وارد کنیم. این موضوع در مورد سایر صفحاتی که آنها را قفل کردیم نیز صادق می باشد. بنابراین دیگر از این به بعد هکرها نمی توانند از این طریق به سایت حمله کنند.

خب عزیزان به تمامی شما تبریک می گویم، آموزش ساخت فروشگاه اینترنتی با استفاده از php به پایان رسید، من در این آموزش، سعی کردم، یک مسیر برای رسیدن به مقصد را به شما نشان بدهم، شما با کمی انگیزه و تلاش بیشتر، می توانید، هزاران مسیر دیگر را خودتان کشف کنید؛ پس هرگز تنها به این آموزش اتکا نکنید و تلاش و کوشش کنید تا بهترین فروشگاه اینترنتی را بسازید.

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

فایلهای نهایی این قسمت

فایل index.php که در آدرس C:\wamp\www\ecommerce\admin_area قرار دارد. دقت کنید من در این فایل به عنوان نمونه، فرایند قفل سازی را انجام داده ام، شما فرایند قفل سازی را باید خودتان در فایل های edit_brand.php   ، edit_cat.php  ، edit_product.php  insert_brand.php  ،  insert_cat.php ،  insert_product.php انجام دهید.

<?php 
	//start (condition enter admin)
	if(isset($_SESSION['admin_email'])){
		?>
	
	<!-- start of Header -->
	<?php	include('include/Header.php');	?>
	<!-- end of Header -->				
	
	<div id="templatemo_content">
		
		
		<!-- start of ocntent left -->
		<div id="templatemo_content_left">
			
			<?php
				
				if(isset($_GET['MessageToAdmin']))
				{
					$message=$_GET['MessageToAdmin'];
					echo"<h1 style='width:500px;margin:150px auto;'>$message</h1>";
				}
				
				if(isset($_GET['insert_pro']))
				{
					include('insert_product.php');
				}			
				
				if(isset($_GET['view_pro']))
				{
					include('view_product.php');
				}
				
				if(isset($_GET['edit_pro']))
				{
					include('edit_product.php');
				}			
				
				if(isset($_GET['insert_cat']))
				{
					include('insert_cat.php');
				}
				
				if(isset($_GET['view_cats']))
				{
					include('view_cats.php');
				}
				
				if(isset($_GET['edit_cat']))
				{
					include('edit_cat.php');
				}
				
				if(isset($_GET['insert_brand']))
				{
					include('insert_brand.php');
				}
				
				if(isset($_GET['view_brands']))
				{
					include('view_brands.php');
				}
				
				if(isset($_GET['edit_brand']))
				{
					include('edit_brand.php');
				}			
				
				if(isset($_GET['view_customers']))
				{
					include('view_customers.php');
				}			
				
				if(isset($_GET['view_orders']))
				{
					include('view_orders.php');
				}
				
				if(isset($_GET['order_customer']))
				{
					include('order_customer.php');
				}
				
				if(isset($_GET['view_payments']))
				{
					include('view_payments.php');
				}	
				
				if(isset($_GET['logout_admin']))
				{
					include('logout_admin.php');
				}
			?>
			
			<div class="cleaner_with_height">&nbsp;</div>
		</div> 
		<!-- end of ocntent left -->
		
		<!-- start of right content -->
		<?php	include('include/Right_Sidebar.php');	?>
		<!-- end of right content -->
		
		<div class="cleaner">&nbsp;</div>
	</div>
	
	<!-- start of footer -->
	<?php include('include/Footer.php');	?>
	<!-- end of footer -->	
	
	<?php 
		//end( condition enter admin )
		
		}else{
		echo "
		<html lang='fa'  dir='rtl'>
		<head>
		<meta http-equiv='Content-Type' content='text/html'; charset='utf-8' />
		</head>";
		
		echo "<script>window.open('login.php?not_admin=شما از مدیران سایت نیستید','_self')</script>";
	}
?>

فایل logout_admin.php که در آدرس C:\wamp\www\ecommerce\admin_area قرار دارد.

<?php
	session_destroy();
	echo"<script>window.open('login.php','_self')</script>";
?>

فایل login.php که در آدرس C:\wamp\www\ecommerce\admin_area قرار دارد.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fa"  dir="rtl">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>صفحه ی ورود مدیریت</title>
		<link rel="stylesheet" href="styles/login.css">
	</head>
    
    <body>
		
		<div class="login">
			<h2>
				<?php 
					if(isset($_GET['not_admin']))
					{echo $_GET['not_admin'];}
				?>
			</h2>
			
			<h1>ورود به مدیریت سایت</h1>
			<form method="post">
				<input type="text" name="loginEmail" placeholder="لطفا ایمیل خود را وارد نمایید" required="required" />
				<input type="password" name="loginPass" placeholder="لطفا پسورد خود را وارد نمایید" required="required" />
				<button type="submit" name="login" class="btn btn-primary btn-block btn-large">ادامه</button>
			</form>
		</div>
	</body>
</html>

<?php	
	session_start();
	require('include/db.php');
	if(isset($_POST['login'])){
		$email= @mysql_real_escape_string($_POST['loginEmail']);
		$pass= @mysql_real_escape_string($_POST['loginPass']);
		$sel_admin	=	"select * from admin where admin_email='$email' AND admin_pass='$pass'";
		$run_admin	=	mysqli_query($con,$sel_admin);
		$check_admin	=	mysqli_num_rows($run_admin);
		if($check_admin==0){
			echo "<script>alert('نام کاربری و رمز عبور خود را اشتباه وارد کرده اید ، لطفا دوباره امتحان کنید.')</script>";
			}else{
			$_SESSION['admin_email'] = $email;
			echo "<script>window.open('index.php?MessageToAdmin=سلام مدیر محترم ، مقدمتان گلباران. موفق باشید.','_self')</script>";
		}
	}
?>
تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری فروشگاه اینترنتی با PHP توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما (19 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

yasaman
27 اسفند 1399
ابتدای صفحه index.php کدتون ناقصه یه خط کم داره. session_start();

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

ah
03 اسفند 1399
سلام وقتتون بخیر من یک یک بخورد کردم در قسمت لاگین ورودی پنل ادمین که هرچی اطلاعات ورودی رو وارد میکنم وارد پنل نمیشه میشه کمک کنید در اصل با زمپ در سیستم واردی پنل ادمین میشه اما وقتی رو سایت اینترنت قرار میدم وارد پنل نمیسه مشکل از چی

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

سحر
27 دی 1399
سلام وقتتون بخیر، از تمام زحماتی که برای طراحی این آموزش کشیدید متشکرم، یه سوال داشتم که ممنون میشم زودتر جوابم رو بدید چون زودتر به پاسخش نیاز دارم من در انتهای آموزش متوجه نشدم که جداول total و cart چه تفاوتی باهم دارن و چه کاری دارن انجام میدن جدول order سفارش های کاربر رو نگهداری میکنه ولی متوجه کاربرد دو جدول cart و total و این که چرا به دو جدول نیاز داشتیم نمیشم

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

نصیبه
30 مرداد 1399
سلام خسته نباشید من تمام مراحل رو به درستی انجام دادم اما در ساخت لاگین ادمین با این ارور مواجه شدم اما نمیدونم باید چیکار کنم.ممنون میشم راهنماییم کنید. Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\wamp64\www\shopping\admin_area\login.php on line 36

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

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

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

کاوه
01 اسفند 1398
مقاله فوق العاده ای بود ولی کاش به روش pdo آموزش میدادید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
09 اسفند 1398
سلام به شما دوست گلم شما لطف دارید، مقالات مربوط به آموزش pdo در آدرس زیر وجود داره https://www.roxo.ir/series/pdo-tutorials/ با تشکر از شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

star
24 آذر 1398
ممنون از وقتی که گذاشتین برای پاسخگویی و همچنین خیلی تشکر می کنم از راهنماییتون

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
25 آذر 1398
خواهش می کنم. سلامت باشید، انشاالله در پناه خداوند همیشه موفق و سلامت باشید.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

star
23 آذر 1398
سلام من هم می خواستم بابت زحماتی که برای ساختن فروشگاه اینترنتی کشیدین تشکر کنم و دو سوال هم داشتم اول اینکه من کامل تمام کارهایی که برای ساخت این پروژه لازم هست رو مطالعه کردم می خواستم ببینم اگه من اول کدها رو بنویسم بعد برم سراغ ساخت جدول بهتره و اینکه اینجوری خطا نمیده و یه سوال دیگه هم اینکه ساخت فروشگاه شیئ گرا رو اموزش داداین ممنون میشم راهنماییم کنید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
24 آذر 1398
سلام به شما دوست گرامی شما لطف دارید، ممنون در مورد سوال اول شما باید بگم که در پروسه ساخت یک نرم افزار باید اول طراحی نرم افزار انجام بشه و بعد به سراغ پیاده سازی نرم افزار برید. در مرحله طراحی باید جداول و فیلدهای هر کدام شناسایی بشه و با دقت و به طور شفاف باید بدونید چه حجدولی و با چه فیلدهایی می خواهید بسازید در ضمن باید اگر بین جداول رابطه معنا داری هست بهتر هست از اول این رابطه معنا دار رو شناسایی کنید و با کلیدهای خارجی (foreign key) مناسب جداول رو شناسایی کنید. بنابراین بهتر هست همان ابتدا جداول شناسایی بشن. در مورد سوال دوم شما، قرار بر این بود که این کار انجام بشه ولی چون گروه تصمیم بر این گرفتن ابتدا آموزش شی گرایی رو قرار بدن که در لینک زیر هست https://www.roxo.ir/series/object-oriented-programming-tutorials-in-php/ و بعد انشاالله بریم سراغ فروشگاه شی گرایی.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

arash
19 آذر 1398
حاجی دمت گرم این آموزش هایی که گذاشتی خیلی کامل و جذاب بود ممنون :)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
20 آذر 1398
سلام به شما دوست گلم شما لطف دارید، انشالله تونسته باشم قدری به دانش شما اضافه کنم و این آموزش مقدمه ایی برای انجام کارهای بسیار بزرگ تر توسط خود شما باشه. با تشکر فرآوان، جهانگیر پچکم

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

shahin
22 آبان 1398
سلام ممنون از آموزش خوب و کاملتون . من تمامی مراحل رو انجام دادم و تست کردم و اوکی بود . فقط این مرحله ی آخر بعد از قرار دادن[if$_SESSION['admin_user' در فایل های گفته شده دیگه بعد از وارد کردن درست یوزر و پسوورد همیشه برمیگرده به صفحه لاگین . انگار sission رو index ‌نمیشناسه . ممنون میشم راهنمایی کنید .

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

محمد
27 مهر 1398
با سلام و عرض ادب خدمت مهندس پچکم، دوست عزیز جدا به خاطر زحماتی که برای تهیه این اموزش مفید گذاشتید سپاسگزارم و چون کسی که بدونه این اموزش ها چطور تهیه و قرار داده میشن خودش به این زحمات انجام داده شده پی میبره و بازم ممنونم، بنده از فایل 1 شروع کردم به کدنویسی و تا الان که در فایل 42 هستم آموزش هاتون عالی بودن و حتی بعضی هاشون رو چندین بار کدنویسی کردم تا خوب متوجه بشم و در آخر باز هم تشکر میکنم چون میدونم واقعا وقت گذاشتید و این آموزش ها رو تهیه و انتشار دادید ... در سایه الطاف خداوند سرافراز و پاینده باشید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
29 مهر 1398
سلام محمد جان خیلی خیلی ممنونم از شما که آموزش ها رو دنبال کردید. شما درست می فرمایید، من برای ساخت این آموزش، بسیار زحمت کشیدم، همه این زحمت ها امروز از تنم در رفت. بابت تشکرتون بسیار سپاس گذارم. انشاالله این آموزش مقدمه ایی باشه برای انجام پروژه های بسیار بزرگ تر توسط خود شما. شما هم در سایه الطاف خداوند سرافراز و پاینده باشید، با تشکر جهانگیر پچکم

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

saleh
24 شهریور 1398
با سلام و تشکر از شما خواهشمندم قسمت های 16 و 56 را در سایت قرار دهید چون مثلا قسمت 56 یه قسمت دیکس

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

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

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

محمد
21 تیر 1398
با سلام واقعا از زحماتی که میکشید ممنونم بسیار خوب و مفید بود . ولی پرا فایل نهایی رو اینقدر گرون گذاشتید. امیدوارم ارزون تر بشته تا بخرمش ممنونم اقا جهانگیر عزیز

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
30 تیر 1398
سلام محمد جان من تمام سعی خودم رو انجام دادم تا فایل نهایی رو با حداقل قیمت برای شما عزیزان قرار بدم. در حال حاضر هم قیمت حداقلی ( 20 هزار تومان) با توجه به امکاناتی که داره در اختیار شما هست. لطفا به آدرس زیر مراجعه کنید تا بهتر متوجه امکانات این قالب و همچنین پیش نمایشی از اون رو ببینید. https://www.roxo.ir/home/programming/php-online-shop-script انشاالله موفق باشید.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

mohammad
14 خرداد 1398
سلام . واقعا ممنونم از اموزشتون مفید و کامل بود.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

داود
10 دی 1397
سلام اقای جهانگیر مطالب بسیار مفید و اموزشی بودن ممنون بابت به اشتراک گذاشتن این محتوا. اگر امکانش هست فایل نهایی پروژه به همراه دیتابیس و کامل شده روی سایت قرار بدید. با تشکر از شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

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

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

نادر
09 دی 1397
سلام وقتتون بخیر ببخشید فرموردین کدها رو یکبار مجددا بررسی و عیب یابی میفرمائید بعد میزارید برای دانلود .. خواستم بپرسم انشالله کی میزارید برای دانلود، تا همزمان با خود پروژه ها با فایل های اصلی آموزش رو پیش ببریم. با تشکر

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مهدی نورانی
07 دی 1397
سلام جناب جهانگیر پچکم عزیز، آموزش ظاهرا جالب باید باشه. ای کاش شما عکسی از قالب نهای شده این فروشگاه اینترنتی رو هم می گذاشتین تا ببینیم چی در پایان در میاد. درضمن، لطفا کنین کل فایل ها و دیتا بیس رو تو سایت بذارین و یا برامون ایمیل کنین و اینکه نحوه نصب و فعال کردنش تو هاست رو بفرمایین تا بتونیم سایت رو آنلاین کنیم. درضمن، 1- این فروشگاه رو تکمیل تر می کنین و ادامه داره یا تموم شده؟ 2- نحوه اتصال درگاه پرداخت بانک ملت و ملی رو میشد آموزش بدین تا به این فروشگاه متصل کنیم، خوب میشد

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
10 دی 1397
سلام مهدی نورانی عزیز درصدد هستیم که کدها رو مقداری مرتب کنیم و انشاالله در آیند نزدیک ، فکر کنم تا آخر این هفته کدها و تصاویر رو قرار بدیم. با توضیحات کامل. در مورد سوالاتی که فرمودین: سوال اولی شما، این آموزش در این قسمت، پایان پیدا میکنه ، چون سطح این دوره مقدماتی هست و سطح پیشرفته نیز در حال تدوین هست. در مورد سوال دوم شما، درگاه های این بانک ها قابلیت آزمایش در حالت لوکال هاست رو تهیه نکردن بنابراین نمیشه به این راحتی اونا رو آموزش داد. ولی من به گونه ایی در قسمت "آموزش ساخت درگاه پرداخت در PHP با زرین پال – قسمت اول تا چهارم" آموزش دادم، که به شما یک دید کلی در مورد روش کار همه درگاهها رو نشون بده، با مطالعه این قسمت ها مطمئنا به راحتی میتونید درگاه مورد نظرتون رو پیاده سازی کنید. ممنون بابت اعلام نظر و پیشنهادی که فرمودین

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

نادر
03 دی 1397
با سلام ممنون بابت پاسخگویی و وقتی که گذاشتید پیشنهاد دیگر هم برای محصولات و برخی از صفحات مانند کلیه محصولات و یا وقتی موضوعی رو انتخاب میکنیم صفحه بندی هم آموزش بدین. مثلا تعیین کنیم در هر صفحه مثلا 12 محصول باشد و وقتی رسید به 13 و 14 در جایی اتوماتیک صفحه بندی قرار بگیرد و کاربر به صفحات بعدی بره

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
04 دی 1397
سلام نادر جان انشاالله در سری جدید آموزش (ایجاد فروشگاه اینترنتی با استفاده از قابلیت شی گرایی php ) به این موضوع هم اشاره خواهم کرد. البته مبحث زیاد پیچیده ایی نیست. ممنونم بابت توجه شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

نادر
03 دی 1397
با سلام ببخشید امکانش هست کل پروژه تمام شده + sql نهایی را برام میل بفرمائید در نظر دیگری هم چنتا پیشنهاد ارائه دادم 1- کل پروژه را در همین پست آخرش بزارید برای کاربرا 2- آموزش template engine هم بزارید تا برای طراحی صفحات کار راحت تر باشه همانند سیستم دیتالایف 3- نصب کننده هم باشه کار خیلی راحتر میشه که مثلا دیتابیس و اینا و مدیریت همگی باهم اوک میشه توسط کاربر ( مانند سیستم وردپرس و اینا )

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

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

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

محمد
15 تیر 1398
با سلام من هنرجوی رشته کامپیوتر هستم و به طراحی وب علاقه دارم.ممنون میشم اگه فایل کاملش رو بهم بدید تا بهتر بتونم مسلط بشم.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

نادر
02 دی 1397
با سلام واقعا بابت زحمات و آموزش ها کمال تشکر را دارم من تازه قسمت دوم و سوم هستم که دارم تکرار میکنم برای یادگیری. چنتا پیشنهاد داشتم : خیلی بهتر بود در این آموزش که قسمت آخر است فایل نهایی کار که شامل کلیه فایلها و دیتابیس نهایی میشد را بزارید برای دانلود. به عنوان یک پیشنهاد دیگر اگر حالت قالب مانند ( همان template engine ) که مثلا با فراخوانی کدهایی بتوان طراحی قالب را ساده تر کرد و البته گرافیکی تر همانند خیلی بهتر می شد و البته آموزش جامع تر و کامل تری می شد. همانند سیستم مثلا دیتالایف اینا. پیشنهاد دیگر یه صفحه نصب کننده هم آموزش بدید که دیتابیس و مدیریت اینا همانجا که وارد میکنید اوکی بشن. بازم تشکر بابت تمام زحمات و وقتی که گذاشتین.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جهانگیر پچکم
03 دی 1397
سلام آقا نادر عزیز ممنونم به خاطر پشتیبانی که می کنید 1- در مورد قرار دادن فایل نهایی، دارم کدها رو تمیز می کنم ، انشاالله در آینده نزدیک یک فایل مرتب برای شما و دیگر دوستان قرار میدم. 2- این آموزش سطح مقدماتی کار را برای افراد مبتدی پوشش میدهد و فقط جهت آشنایی دوستان عزیز با نحوی ایجاد فروشگاه اینترنتی است. اگر دقت کرده باشید تمامی کدنویسی ما به صورت تابعی برنامه نویسی کردیم. انشاالله سری جدید فروشگاه اینترنتی با استفاده از قابلیت شی گرایی php را در حال تدوین داریم که احتمالا همه نیازها شما در این آموزش جواب خواهد داده شد. خیلی ممنونم ، من رو دنبال کنید تا سری آموزش جدید فروشگاه اینترنتی با استفاده از قابلیت شی گرایی هم خدمت شما عرضه کنم. ممنون

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.