اذهب إلى المحتوى

السؤال

نشر

السلام عليكم جميعا

اريد من الاخوه المبرمجين تعديل الكود هذا ليسحب ملفين بدل من ملف واحد

ولكم الشكر

الملف بسيط وهو مرفق

upload2.zip

Recommended Posts

  • 0
نشر

ستحتاج إلى تعديل النموذج بإضافة حقل إدخال ثاني للرابط الثاني name="url1" و name="url2"، وتعديل منطق PHP واستخدام مصفوفة للمرور على الرابطين، وتطبيق عملية التحميل والختم لكل رابط.

ثم تعديل اسم الملف حيث أنك تستخدم time() والتي تسبب مشكلة تعارض إن تم رفع الملفين في نفس الثانية، لذا استبدلها بـ uniqid() لضمان اسم فريد لكل ملف.

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

<?php

function downloadImage($url){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0");
    curl_setopt($ch, CURLOPT_REFERER, $url);

    $data = curl_exec($ch);

    if(curl_errno($ch)){
        curl_close($ch);
        return false;
    }

    curl_close($ch);
    return $data;
}

function watermark($filePath, $ext, $logo){

    if ($ext == 'jpg' || $ext == 'jpeg') {
        $img = @imagecreatefromjpeg($filePath);
    } elseif ($ext == 'png') {
        $img = @imagecreatefrompng($filePath);
    } elseif ($ext == 'gif') {
        $img = @imagecreatefromgif($filePath);
    } elseif ($ext == 'webp') {
        $img = @imagecreatefromwebp($filePath);
    } else {
        return false;
    }

    if (!$img) return false;

    $logoImg = imagecreatefrompng($logo);

    $imgW = imagesx($img);
    $imgH = imagesy($img);
    $logoW = imagesx($logoImg);
    $logoH = imagesy($logoImg);

    $x = $imgW - ($logoW + 10);
    $y = $imgH - ($logoH + 10);

    imagealphablending($img, true);
    imagesavealpha($img, true);

    imagecopy($img, $logoImg, $x, $y, 0, 0, $logoW, $logoH);

    imagejpeg($img, $filePath, 90);

    imagedestroy($img);
    imagedestroy($logoImg);

    return true;
}

if($_POST){

    $urls = [
        trim($_POST['url1'] ?? ''), 
        trim($_POST['url2'] ?? '')
    ];

    if(empty($urls[0]) && empty($urls[1])){
        die(" أدخل رابط صورة واحد على الأقل");
    }

    $results = []; 

    foreach($urls as $index => $url){
        
        if(!$url){
            continue;
        }

        $imageData = downloadImage($url);

        if(!$imageData){
            $results[] = " فشل تحميل الصورة رقم " . ($index + 1) . " (الرابط محمي أو غير صحيح)";
            continue; 
        }

        $ext = strtolower(pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION));

        if(!$ext){
            $ext = "jpg";
        }

        $name = uniqid() . ".jpg";
        $filePath = "uploads/" . $name;

        file_put_contents($filePath, $imageData);

        watermark($filePath, $ext, "logo/logo.png");

        $results[] = "تم بنجاح للصورة " . ($index + 1) . ": <a href='$filePath' target='_blank'>عرض الصورة</a>";
    }

    foreach($results as $result){
        echo "<p>$result</p>";
    }
}
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>رفع وختم الصور</title>
</head>
<body>

<h3>تحميل وختم صورتين من رابط</h3>

<form method="post">
    <p>
        <label>رابط الصورة الأولى:</label><br>
        <input type="text" name="url1" style="width:400px" placeholder="ضع رابط الصورة الأولى هنا">
    </p>
    <p>
        <label>رابط الصورة الثانية:</label><br>
        <input type="text" name="url2" style="width:400px" placeholder="ضع رابط الصورة الثانية هنا">
    </p>
    <input type="submit" value="تحميل وختم">
</form>

</body>
</html>

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...