البرمجة

مشاكل رفع النص وإدراجه في قاعدة البيانات

مشكلات في رفع النص،

لدي سكريبت بسيط يمكنه رفع الملفات على خادمي وإدراج التفاصيل في قاعدة البيانات. ومع الكود أدناه، أواجه خطأين..

  1. “تنويه: متغير غير معرف: sExt في” ..
    حاولت حل المشكلة ببيان if فارغ، ولكن دون نجاح..

  2. السكريبت يقوم بإدخال أرقام (1،2،3…) في Mysql إذا كان حقل الرفع فارغًا….
    حاولت حل المشكلة بالكود أدناه، ولكن أيضًا بدون نجاح..

“إذا ($_FILES [‘files’] [‘name’]! = “”)”…

هل لديك أي نصيحة؟

شكراً لك..

كودي:

$tmp_name) {
$errors = array();
$file_name = md5(uniqid(“”) . time());
$file_size = $_FILES[‘files’][‘size’][$key];
$file_tmp = $_FILES[‘files’][‘tmp_name’][$key];
$file_type = $_FILES[‘files’][‘type’][$key];

if($file_type == “image/gif”){
$sExt = “.gif”;
} elseif($file_type == “image/jpeg” || $file_type == “image/pjpeg”){
$sExt = “.jpg”;
} elseif($file_type == “image/png” || $file_type == “image/x-png”){
$sExt = “.png”;
}
if (!in_array($sExt, array(‘.gif’,’.jpg’,’.png’))) {
$errors[] = “أنواع الصور المسموح بها هي (.gif، .jpg، .png) فقط!”;
}

if ($file_size > 2097152000) {
$errors[] = ‘يجب أن يكون حجم الملف أقل من 2 ميغابايت’;
}

$query = “INSERT into user_pics (`person_id`,`pic_name`,`pic_type`) VALUES(‘1′,’$file_name’,’$sExt’)”;
$result = mysqli_query($link,$query);

$desired_dir = “user_data/”;
if (empty($errors)) {
if (is_dir($desired_dir) == false) {
mkdir(“$desired_dir”, 0700);
}
if (move_uploaded_file($file_tmp, “$desired_dir/” . $file_name . $sExt)) {
$uploadedFiles[$key] = array($file_name . $sExt, 1);
} else {
echo “تم رفع الملفات!” . $_FILES[‘files’][‘name’][$key];
$uploadedFiles[$key] = array($_FILES[‘files’][‘name’][$key], 0);
}
} else {
print_r($errors);
}
}

foreach ($uploadedFiles as $key => $row) {
if (!empty($row[1])) {
$codestr = ‘$file’ . ($key+1) . ‘ = $row[0];’;
eval ($codestr);
} else {
$codestr = ‘$file’ . ($key+1) . ‘ = NULL;’;
eval ($codestr);
}
}

}



المزيد من المعلومات

بالطبع، إليك استكمالٌ للمقال:

بدلاً من التركيز فقط على التعديلات المطلوبة في الكود، دعنا نفحص كلاً من الأخطاء بعمق ونعرض الحلول المناسبة:

1. “تنبيه: متغير غير معرف: sExt في” ..

هذا الخطأ يحدث لأن المتغير $sExt قد لا يتم تعريفه في بعض الحالات. على سبيل المثال، إذا كان نوع الملف غير صورة (مثل ملف نصي أو ملف PDF)، فإن $sExt لن يتم تعيينه إلى أي قيمة. لحل هذا الخطأ، يمكنك تعريف $sExt بقيمة افتراضية في بداية الكود.

php
$sExt = ""; // تعريف $sExt بقيمة افتراضية

2. السكريبت يقوم بإدخال أرقام (1،2،3…) في Mysql إذا كان حقل الرفع فارغًا….

هذه المشكلة تنشأ من استخدام شرط if ($_FILES['files']['name']!="") للتحقق مما إذا كانت هناك ملفات تم رفعها أم لا. ومع ذلك، لا يتم التحقق من كل ملف بشكل منفصل. بدلاً من ذلك، يجب عليك التحقق من احتواء كل ملف على اسم قبل إدراج التفاصيل في قاعدة البيانات.

php
foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) { if ($_FILES['files']['name'][$key] != "") { // قم بإدراج التفاصيل في قاعدة البيانات هنا } }

بعد تطبيق هذه الإصلاحات، ينبغي أن يعمل السكريبت بشكل صحيح دون وجود الأخطاء المذكورة. يمكنك أيضًا إضافة مزيد من التحققات والإجراءات الأمنية حسب الحاجة، مثل فحص نوع الملف وحجمه بشكل أكبر.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر