جلسه دهم آموزش عملی ساخت پروژه پنل وب سایت شخصی با PHP

تا اینجای کار اینو ساختیم و نیمه دیگش رو الان توضیح میدیم .

جلسه دهم آموزش عملی ساخت پروژه پنل وب سایت شخصی با PHP

به کد های زیر توجه کنید :
در ادامه فایل این کد ها رو وارد کنید .

 

جلسه دهم آموزش عملی ساخت پروژه پنل وب سایت شخصی با PHP
توضیح :
این کد مهمترین کد آپلوده که خیلی خوب به خاطر بسپاریدش و تمرین زیاد و مانور زیادی روش بدین .
در اینجا حالت بعدی پیش می آید که بررسی می کنیم تا ببینیم که فایل ارسال شده است یا خیر برای این منظور با بررسی متغیر $_FILES این مورد رو مشخص می کنیم کاراکتر @ قبل این دستور هم قبلا بررسی کردیم .
مقدار [file][name] این متغیر اگر خالی نبود یعنی فایل ما ارسال شده است در اولین قدم آدرس فایل رو تغییر میدیم این کار برای این منظوره که مدیریت فایل ها راحت تر باشه و باز هم از بروز خطاهایی جلوگیری کنیم .
این که میگم تمرین کنید به این دلیله که مثلا همین قسمت رو فایل ها رو با نام های متفاوت ذخیره کنید و انواع تغییرات رو بدین و به خطاهایی در حین تمرین برمیخورید که لازمه برای رفع این خطا ها کد ها رو بررسی کنید که این به قویتر شدن شما و درک بیشتر از کد ها کمک می کنه
میریم سراغ بحث اصلی ، ما نام فایل رو تغییر میدیم برای این کار از تابع rand یا همان random استفاده می کنیم وقتی این تابع رو بدون آرگومان های ورودی استفاده می کنیم یک عدد رندم از نوع Int یا اعداد صحیح به ما میده و اگر دو مقدار بهش بدیم به این صورت تعریف میشه rand(min,max)
که به جای min و max هر عددی که بذارید عدد تصادفی که تولید میشه بین این دو مقدار قرار میگیره ، پس برای تولید نام فایل و حداقل شدن امکان یکسان درآمدن عدد تصادفی از سه تابع rand استفاده می کنیم که با کاراکتر (.) همانطور که قبلا بهتون توضیح دادم به هم متصل می کنیم .

در ابتدای آدرس تصویر از متغیر $add که قبلا تعریف کرده بودیم استفاده می کنیم که استفاده از اون آدرس رو نسبی می کنه و همیشه به خاطر داشته باشید بهتره با آدرس های نسبی کار کنید چون باعث میشه توسعه نرم افزار سرعت بگیره و به تبع اون زمان انجام کار و تغییرات بالاتر بره .
متغیر $rr رو برابر مقدار پایه بعلاوه نام جدید فایل ساختیم لازمه که در انتهای نام آن پسوند رو هم قرار بدیم
قرار دادن پسوند فایل :
از همان پسوند قبلی فایل استفاده می کنیم پس با استفاده از نام فایل و تابعی که میبینید پسوند را استخراج کرده و در انتهای نام قرار می دهیم .
pathinfo($_FILES["file"]["name"] , PATHINFO_EXTENSION); در این دستور آرگومان اول نام است ، نام فایل رو به تابع میدیم و در آرگومان دوم مشخص می کنیم که جزء پسوند فایل رو لازم داریم بنابر این pathinfo با گرفتن آدرس و جزئی که قصد دریافت از آن آدرس را داریم پسوند را در اختیارمان قرار می دهد .

جلوگیری از تکرار نام :
در دستور بعد همانطور که میبینید در یک while تا زمانی که آن فایل آپلود شده باز هم موجود باشد آدرس فایل رو تعویض می کند .

نکته مهم : این مسئله (تعویض نام تا زمان یکسان بودن نام) از این نظر اهمیت دارد که فرض کنید تعداد بسیار بالا تصویر یا اطلاعات در زمان بالا به سایت شما ارسال می شود یا شما دریافت می کنید در این صورت احتمال اشتباه خیلی زیاد می شود پس به جای بررسی دیتابیس برای تک تک مقادیر میتونیم از این دستور سبک تر استفاده کنیم .

داخل while همانطور که می بینید از دستور file_exist استفاده می کنیم که آدرس یک فایل رو دریافت می کند و موجود بودن یا نبودن آن را با مقدار false یا true برمیگرداند .
انتقال فایل ها از temp آپلود به مسیر دلخواه :
تصاویر بعد از آپلود شدن در temp قرار می گیرند و اگر برای مدتی اون تصاویر منتقل نشوند به طور اتومات توسط هاست پاک می شوند پس نگرانی از این بابت که اگر فایل رو نخواستید ذخیره کنید ولی در temp بمونه و فضای هاست رو اشغال کنه ندارید .
بنابر این باز هم با استفاده از متغیر FILE مکان temp این فایل رو پیدا می کنیم .
با استفاده از دستورات
move_uploaded_file($_FILES["file"]["tmp_name"] , $rr) or
die( "ERROR IN COPY.");
فایل رو منتقل می کنیم ، دقت کنید که اگر تابع move_uploaded_file مقدارش false باشد با دستور or قابل تشخیص می باشد و دستور بعد از or مثل else if عمل کرده و پیغام خطا در انتقال فایل را نشان می دهد.
پس با دادن آدرس مبدا در آرگومان اول و آدرس مقصد در آرگومان مقصد تابع move فایل ما منتقل می شود .
توجه :
دقت کنید که به این تابع همراه با مکان ذخیره سازی نام فایل هم باید ارسال شود چون کار این تابع به صورتیه که کامل فایل رو با نام و پسوند جدید به دایرکتوری جدید منتقل می کند و اینکه حواستون باشه که پوشه ای که قصد انتقال به آن را دارید موجود باشد در اینجا من $add رو برابر ./file/ قرار دادم و پوشه file رو ایجاد کردم که اگر نمیکردم خطای کلی عدم وجود دایرکتوری میداد .

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

 

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

نکته : سشن در اینجا هم به کار ما میاد ، شما میتوانید برای این که کاربر از محل آپلود مطلع نشه به جای اینکه آدرس فایل رو به صورت GET بفرستید اونو داخل SESSION ذخیره کنید و در ادامه با بررسی مقدار سشن متوجه آدرس خواهید شد پس این قسمت رو داشته باشید و خودتون سعی کنید session رو استفاده کنید ، این کار توی تسلط موضوع خیلی کمک می کند.

خب در ادامه با تابع explode سروکار داریم
کار این تابع این است که بر اساس رشته ای که به آن میدهیم و رشته اصلی ، رشته اصلی ما را بر اساس رشته اول تکه تکه کرده و حاصل را به صورت یک آرایه return می کند و این آرایه رو به صورت متغیر ذخیره و ازش استفاده می کنیم .
تابع implode هم داریم که دقیقا برعکس عمل می کند و با گرفتن رشته ای در آرگومان اول و آرایه ای در آرگومان دوم ، یک رشته پیوسته با استفاده از رشته کمکی را به خروجی برمی گرداند .
با تابع explode آدرس تصویر رو برای استفاده از ./ جدا می کنیم .
و مقدار 0 خروجی رو که همان “./” رو کار نداریم و مقدار 1 اون که آدرس تصویر هست رو برمیداریم تا استفاده کنیم .

در آخر کد برای تایید یا رد پست دو تا echo قرار میدیم :
جهت حذف آپلود انجام شده که قبلا بررسی کردیم باید آدرس نسبی رو ارسال کنیم
'./'.$rr
و برای ذخیره آدرس خام آن را ارسال می کنیم : $rr
نکته :
همیشه سعی کنید داده ها را به خام ترین شکل ممکن و بدون تغییر توی دیتابیس ذخیره کنید چرا که با این کار تغییرات آینده و سرعت کد نویسی خود را چند برابر می کنید و از طرفی استفاده از داده های خام راحت تر از استفاده از داده های کامل است .
پس اینجا ما تنها نام فولدر آپلود و نام فایل رو ذخیره می کنیم و هر زمان که نیاز داشتیم آدرس کامل فایل آپلود شده رو بر اساس اون تنظیم می کنیم .
دقت کنید که $add و $base رو با توجه به توضیحات و با توجه به لوکال هاست خودتون تغییر بدین .

موفق باشید.

 

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)
افزودن نظر
  • هیچ نظری یافت نشد.
قدرت گرفته از کومنتو فارسی جوملا نال

مطالب مشابه

تماس با ما

همکاری با ما

تور کیش با پرواز ماهان

تور دبی با پرواز ماهان

تور آنتالیا با پرواز ماهان

تور دبی ویژه شهریور 94 با پرواز ماهان