أخويه يا الكابتن ......
منتدياتنا على شركة هوست
وهذه الشركة لا تسمح برفق الملفات عن طريق المنتديات
يعني نحن في ورطة مع الأعضاء.
لذلك نحن نفكر في عمل صفحة خاصة بالمنتدى لتحميل الصور مثل التي ذكرتها في الأعلى.
أخويه يا الكابتن ......
منتدياتنا على شركة هوست
وهذه الشركة لا تسمح برفق الملفات عن طريق المنتديات
يعني نحن في ورطة مع الأعضاء.
لذلك نحن نفكر في عمل صفحة خاصة بالمنتدى لتحميل الصور مثل التي ذكرتها في الأعلى.
__________________
إستخدم ملفك الخاص لكتابة توقيعك
للرفــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــع
في الواقع لا أعرف ما هي المشكلة فموقعي موجود على نفس الخادم ويمكنك تحميل الملفات عن طريقه بشكل كامل باستخدام دالة:
move_uploaded_file($tmpname,$destination)
يعني هنا مثلاً :
http://mhdyousif.host.sk/gba/gbaroms.php?action=add
استخدمت هذه الدالة لتحميل صورة (ويمكنك تحميل أي شيئ آخر حسب ما تريد، يعني استقبل الملف المحمل من المتصفح بكود PHP يتأكد من شروط الملف التي تحددها أنت -حجمه،نوعه..- ثم ينسخ الملف من الدليل المؤقت على الخادم إلى المكان الذي تريده.
بالنسبة لحالتي مثلاً، فأنا أريد أن يكون الملف المحمل صورة فقط ، حيث أجعله يرفض أي نوع آخر غير الصور من نوع jpg,gif,png
يعني لو نظرت على كود الـHTML الناتج عن :
http://mhdyousif.host.sk/gba/gbaroms.php?action=add
ستجد به التالي :
<form ENCTYPE="multipart/form-data" method="post" action=gbaroms.php?action=data_add">
لاحظ التشفير المستخدم ، وهذا لجعل المتصفح يرسل الملف بصورة صحيحة
وأيضاً:
<input type="hidden" name="MAX_FILE_SIZE" value="102400">
<input type="file" name="image_file">
حيث image_file سيكون هو الاسم الذي يمكن من خلاله الوصول إلى الملف من كود PHP
وأول خانة تحدد اكبر حجم ممكن للملف(لا تعتمد على هذه كثيراً فيمكن التلاعب بها)
بعد ذلك يمكنك استقبال الملف من خلال كود php
يمكنك الوصول إلى بيانات عن الملف من خلال مصفوفة $_FILES
ملحوظة: إذا كانت إصدارة PHP على الخادم أقل من 4.1.0 استخدم مصفوفة $HTTP_POST_FILES بدلاً منها
السبب في تفضيل $_FILES هي أنها Superglobal يعني يمكنك الوصول إليها من الدوال الفرعية بدون الحاجة إلى عمل global لها
إذا كان image_file هو الاسم الذي اخترته بأعلى :
$_FILES['image_file']['type']
يرجع نوع الملف الذي يرسله المتصفح MIMETYPE مثلاً image/gif
$_FILES['image_file']['size']
يرجع حجم الملف
$_FILES['image_file']['tmp_name']
يرجع الملف الذي تم تحميله على دليل مؤقت على الخادم مثلاً /tmp/mypic.gif ويمكنك نسخه أو نقله إلى المكان الذي تريده
$_FILES['image_file']['name']
يرجع اسم الملف على جهاز الشخص الذي يقوم بعملية التحميل
مثلاً في حالتي :
//يجب أن أتأكد من أن الملف هو صورة من نوع jpg,gif أو png
$image_type=$_FILES['image_file']['type'];
if ($image_type!="image/gif" && $image_type!="image/jpeg" && $image_type!="image/pjpeg" && $image_type!="image/png") {
echo "عذراً، يجب أن تكون الصورة على هيئة JPG أو GIF أو PNG ، من فضلك اضغط زر الرجوع للخلف في المتصفح لإعادة المحاولة";
include("../footer.inc.php");
return;
}
//يجب أن أتأكد من أن حجم الملف لا يزيد عن 102400 بايت (100 كيلوبايت)
if ($_FILES['image_file']['size']>102400) {
echo "عذراً، يجب ألا يزيد حجم الصورة عن 100 كيلوبايت. من فضلك اضغط زر الرجوع للخلف في المتصفح لإعادة المحاولة.";
include("../footer.inc.php");
return;
}
//استبدال المسافة الواحدة بعلامة _
$shot=str_replace(" ","_",$_FILES['image_file']['name']);
//التأكد من عدم احتواء اسم الملف على مسافات
$shot=trim($shot);
//التأكد من عدم احتواء اسم الملف على علامة :
$shot=str_replace(":","-",$shot);
//التأكد من عدم احتواء اسم الملف على علامة slash
$shot=str_replace("/","",$shot);
//جعل اسم الملف بحروف صغيرة
$shot=strtolower($shot);
//الآن يتم نقل الملف من الدليل المؤقت إلى المكان الذي تريده
if (!move_uploaded_file($_FILES['image_file']['tmp_name'],"/mnt/host-users/mhdyousif/images/gba/previews/".$shot)) {
echo "عذراً، حدث خطأ أثناء تحميل الصورة، يرجى إعادة المحاولة.";
include("../footer.inc.php");
return;
}
echo "تمت عملية التحميل بنجاح";
ملاحظة: يمكن استخدام دوال أخرى لنسخ الملف ولكن هذا سيتطلب منك التأكد أولاً من أن الملف حقيقي ثم النسخ ثم مسح الملف المؤقت في حين تختصر دالة move_uploaded_file كل ذلك في خطوة واحدة
ربما لم تعمل خاصية تحميل الملفات بسبب استخدامها لطريقة عتيقة عفى عليها الزمن للوصول إلى بيانات الملف وهي استخدام المتغير $image_file مباشرة بدلاً من استخدام المصفوفة: $_FILES
ولذلك حاول تعديل مثل هذه المتنديات لكي تكون متوافقة مع إصدارات PHP الحديثة
بالنسبة لي فالمرفقات تعمل بشكل كامل في المنتدىالخاص بي هنا:
http://emu4arab.host.sk
ما شاء الله عليك يا محمد_يوسف111
الظاهر المشكلة راح تنحل بوجودك
أخي الحبيب الكلام الذي تفضلت به جميل ولكن أكبر من مستوانا أتمنى أن تسهل علينا شوي لو سمحت وتكرمت.
يعني ما هي التعديلات التي يجب أن أفعلاها في ملفات Vb
__________________
إستخدم ملفك الخاص لكتابة توقيعك
هممم...، الكود المسؤول عن تحميل الملف هو في :
admin/functions.php
تحديداً في دالة acceptupload
الـPHP في host.sk يعمل على Safe Mode وهذا يعني ببساطة أنه لا يمكنك الوصول إلى الملفات التي لم تنشأها بنفسك
عندما ترفق ملف يقوم الـPHP بنسخه تلقائياً إلى دليل مؤقت (/tmp مثلاً أو حسب ما هو محدد في ملف الإعداد php.ini )
بعد ذلك يحاول الـvb فتحه فيمنعه الـPHP لأن هذا الملف غير مملوك لك (لم تنشأه أنت)
ولكن لحسن الحظ أدرك مبرمجو الـvb ذلك وجعلوا هناك فحص للمتغير $safeupload فإذا كان 1 فإنه يقوم بنسخ الملف أولاً إلى دليل مؤقت (وبهذا تكون أنت مالك هذا الملف) ومن ثم يفتحه
الحل إذن أن تبحث في إعدادات vb من لوحة التحكم عن خيار إذا كان الـPHP في Safe Mode (وضعية الامان) وتأكد من اختيارك لـSafe Mode
بالمناسبة لاحظت أن vb ينسخ الملف في قاعدة البيانات بدلاً من وضع رابطة لللملف فقط ونسخ الملف بطريقة عادية
وهذا وإن كان أسرع إلا أنه سيستهلك مساحة قاعدة البيانات لديك بشراهة خاصة إذا كنت ترفق ملفات كثيرة
أخي مشكووووووووور
مثل ما قلت إن المرفقات يأخذ منها نسخة لقاعدة البيانات ... وهذا يكبّر حجم قاعدة البيانات مما يجعل أخذ نسخة إحتياطية صعب جداً.
لذلك سوف أكتفي بصفحة جانبية لإرفاق الملفات.
(ووجدت الهاك المناسب ... ويعمل على نفس الخادم)
ملف مرفاق.
شكراً لك يا أخي محمد_يوسف111 تعبتك معاي
الله يجازيك ألف خير
__________________
إستخدم ملفك الخاص لكتابة توقيعك
ربما - إذا توفر لدي وقت - أحاول تعديل الـvBulletin ليمكنه نسخ الملفات بطريقة عادية بدلاً من وضعها في قاعدة البيانات
بالنسبة للبرنامج phpimag فقد عدلته ليمكنه العمل مع host.sk وهو مرفق
وإن كنت أنصح باستخدام منتدى phpBB بدلاً من vBulletin فهو ينسخ الملفات بطريقة عادية ولا يضعها في قاعدة البيانات
والله نكــــــــــــــون لك شاكرين ونقول لك الله يعطيك ألف ألف ألف ألف ألف × 100000000000000000000000000000000000000000000 × 100000000000000000000000000000000000000000000 × 100000000000000000000000000000000000000000000 × 100000000000000000000000000000000000000000000 × مالا نهاية يعطيك العافية والصحة والخيررد مقتبس من محمد_يوسف111
ربما - إذا توفر لدي وقت - أحاول تعديل الـvBulletin ليمكنه نسخ الملفات بطريقة عادية بدلاً من وضعها في قاعدة البيانات
ونحن في الإنتظار
__________________
إستخدم ملفك الخاص لكتابة توقيعك
حبيبي محمد_يوسف111 ... ها ويش صار معاك
هل باشرة العمل ... حبيت أطمأن يا حبيبي
الله يقويك
__________________
إستخدم ملفك الخاص لكتابة توقيعك
الحمد لله كله تمام
وشكراً على كل هذه التماني
http://www.swalif.net/softs/showthre...093#post183362