ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

آموزش php از مبتدی تا ....

آموزش php از مبتدی تا ....

Открыть в Telegram
902
Подписчики
Нет данных24 часа
Нет данных7 дней
Нет данных30 дней
Архив постов
بازگشت "; $sw=1; } if($_FILES['f']['size']/1024>100) { echo "اندازه فایل بزرگتر از مقدار خواسته شده می باشد"; echo "
بازگشت "; $sw=1; } if($sw==0) { $nm=md5(time()).".jpg"; move_uploaded_file($_FILES['f']['tmp_name'],"uppic/".$nm); echo "" ; echo "
"; echo "url : "."localhost/uppic/$nm"; } } else { echo " در آپلود فایل خطا وجود دارد"; echo "
بازگشت "; } ?>

کد صفحه up2.php

انتخاب فایل


کد صفحه f.php که فایل را به up2.php ارسال می کند

برای اینکار ابتدا یکارایه تعریف می کنیم و پسوند های مورد قبول خود را دران قرارمی دهیم سپس از فایل ارسال شده اخرین پسوند را استخراج می کنیم و بر اساس ان تصمیم گیری میکنیم (دقت شود ممکن است برای فایل چند پسوند قرار گیرد a.gif.jpg ) برای ایجاد این کد به تابع های زیر نیازداریم تابع explode ک علامت و یک رشته را دریافت می کند و سپس، رشته مورد نظر را بر اساس علامتی که تعیین کرده ایم، به چندین رشته تجزیه کرده و به صورت یک آرایه رشته ای بر می گرداند. تابع end که اخرین عنصر یک ارایه یا لیست را باز می گرداند تابع in_array برای چک کردن وجود یک مقدار در یک آرایه می باشد. اگر مقدار موجود باشد، مقدار 1 را برمی گرداند و در غیر این صورت، مقدار 0 را برمی گرداند.

برای حل این مشکل می توانیم به جای بررسی نوع فایل پسوند فایل اپلود شده را بررسی کنیم

خوب این مشکل رو چگونه حل کنیم ؟

یکی از مشکلات اپلود فایل بررسی نوع فایل اپلود شده می باشد متلا برای تصاویر jpg سه حالت وجود دارد image/pjpeg Image/jpg Image/jpeg یا برای یک فایل فشرده با پسوند zip می تواند حال های مختلفی وجود داشته باشد application/zip application/x-zip-compressed multipart/x-zip application/x-compressed

همانطورکه فرمودند برای اینکه فایل جدیدکه اپلود می شود بر روی فایلهای قبلی قرار نگیرد ما نیار به یک اسم کاملا جدید و غیر تکراری داریم که با استفاده تابعmd5 , استفاده از پارامتر time() در داخل ان می توانیم تولید نماییم

تابع md5 یک مقدار رااز ورودی گرفته ویک رشته 32 کارکتری را تولید می کند درواقع این تابع یک تابع کدگذاری یک طرفه می باشد

چرا ازتابع md5 استفاده شده است دراین کد ؟

اگر url را کپی کنیم و در قسمت نوار ادرس قرار دهیم عکس برای ما اورده می شود

0 || $_FILES['f']['size']/1024>100 || $_FILES['f']['type']!='image/jpeg') { echo "آپلود فایل ناموفق بود"."
".$_FILES['f']['error']; echo "بازگشت "; } else { $nm=md5(time()).".jpg"; move_uploaded_file($_FILES['f']['tmp_name'],"uppic/".$nm); echo "" ; echo "
"; echo "url : "."localhost/uppic/$nm"; } ?>

کد صفحه up.php

انتخاب فایل


ابتدا باید چک کنیم که فایل درست ارسال شده است برای این کار از مقدار error ارایه $_FILES استفاده میکنیم سپس باید با استفاده از type نوع و با استفاده از size اندازه فایل را بررسی کنیم و در نهایت اگر همه موارد درست بود فایل را به پوشه uppic انتقال دهیم هنگام انتقال برای جلوگیری احتمالی کپی فایل بر روی فایل ها قبلی که در پوشه وجود دارند باید برای فایل یک نام تصادفی ایجاد کنیم

مثال پوشه ای به نام uppic در www ایجاد شده است صفحه با نام up.php ایجاد کند که چک کند اگر فایل کاربر از نوع jpg بوده و اندازه فایل کمتر از 100kb است اجازه آپلود را بدهد و سپس فایل نمایش دهد