مشكلة سحب الملفات من موقع ويكيبيديا

  • بادئ الموضوع بادئ الموضوع الساعه
  • تاريخ البدء تاريخ البدء
آخر ظهور لمؤلف الموضوع قبل (23 ساعة)
الحالة
مغلق و غير مفتوح للمزيد من الردود.
السلام عليكم
الاخ مهدي صباح الخير
هذا كود مختصر لرفع الملفات حاولت فيه ماظبط لا يسحب الملفات من موقع ويكيبيديا
هذه الاكواد التي ادرجت لم يعمل
PHP:
$context = stream_context_create
(["http" => array(
   "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" ),
  'ssl' => [
  'verify_peer' => false,
  'verify_peer_name' => false]]);
/*
function downloadImage($remote_links) {
 $ch = curl_init($remote_links);
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, $remote_links);
 $data = curl_exec($ch);
    if(curl_errno($ch)){
        curl_close($ch);
        return false;
    }
    curl_close($ch);
    return $data;
}*/
  $remote_links = array_filter([$_POST['url'], $_POST['urls']]);
 $content = @file_get_contents($current_link,false, $context);
علما بان الكود قمت انت ببرمجته ويعمل بدون مشاكل لاكن معي لايسحب الملف الا مرة واحدة فقط
هنا يسحب من ويكيبيديا
وهنا لا يسحب

ومشكور ابو حميد مقدما
 
السلام عليكم
الاخ مهدي صباح الخير
هذا كود مختصر لرفع الملفات حاولت فيه ماظبط لا يسحب الملفات من موقع ويكيبيديا
هذه الاكواد التي ادرجت لم يعمل
PHP:
$context = stream_context_create
(["http" => array(
   "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" ),
  'ssl' => [
  'verify_peer' => false,
  'verify_peer_name' => false]]);
/*
function downloadImage($remote_links) {
 $ch = curl_init($remote_links);
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, $remote_links);
 $data = curl_exec($ch);
    if(curl_errno($ch)){
        curl_close($ch);
        return false;
    }
    curl_close($ch);
    return $data;
}*/
  $remote_links = array_filter([$_POST['url'], $_POST['urls']]);
 $content = @file_get_contents($current_link,false, $context);
علما بان الكود قمت انت ببرمجته ويعمل بدون مشاكل لاكن معي لايسحب الملف الا مرة واحدة فقط
هنا يسحب من ويكيبيديا
وهنا لا يسحب

ومشكور ابو حميد مقدما
هل المشكلة تقتصر فقط على موقع ويكيبيديا ام على كُل المواقع ؟

نعم انا اذكر اضفت واصلحت لك الكود ، لكن كان يعمل بدون مشاكل .

تحياتي لك
اخوك مهدي حميد
 
السلام عليكم
مشكور ابو حميد
لم تظيفه إلى هذا الملف مع تحياتي لك
وهذا الملف كامل الذي لم يعمل به
PHP:
<?php
@header('Content-type: text/html;charset=windows-1256');
@date_default_timezone_set("Asia/riyadh");
// Code Net , Mahdi Hamid :)
$opts = array( 
 'http'=>array( 
  'method'=>"GET", 
   'timeout'=>10,
   'ignore_errors'=> true
   ) 
); 
$context = stream_context_create
(["http" => array(
   "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" ),
  'ssl' => [
  'verify_peer' => false,
  'verify_peer_name' => false]]);
/*
function downloadImage($remote_links) {
 $ch = curl_init($remote_links);
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, $remote_links);
 $data = curl_exec($ch);
    if(curl_errno($ch)){
        curl_close($ch);
        return false;
    }
    curl_close($ch);
    return $data;
}*/
function watermark($name, $ext, $logo){
  $src_img = null;
    if (preg_match("/jpg|jpeg/i",$ext)){$src_img=@imagecreatefromjpeg($name);}
    elseif (preg_match("/webp/i",$ext)){$src_img=@imagecreatefromwebp($name);}
    elseif (preg_match("/png/i",$ext)){$src_img=@imagecreatefrompng($name);}
    elseif (preg_match("/avif/i",$ext)){$src_img=@imagecreatefrompng($name);}
  if (!$src_img) return false;
    $src_logo = @imagecreatefrompng($logo);
    if (!$src_logo) return false;
   $bwidth = imageSX($src_img);
    $bheight = imageSY($src_img);
    $lwidth = imageSX($src_logo);
    $lheight = imageSY($src_logo);
    if ($bwidth > 160 && $bheight > 130) {
        $src_x = $bwidth - ($lwidth + 5);
        $src_y = $bheight - ($lheight + 5);
        ImageAlphaBlending($src_img, true);
        ImageCopy($src_img,$src_logo,$src_x,$src_y,0,0,$lwidth,$lheight);     
        if (preg_match("/jpg|jpeg/i",$ext)){imagejpeg($src_img, $name, 90);}
        elseif (preg_match("/png/i",$ext)){imagepng($src_img, $name);}
        elseif (preg_match("/webp/i",$ext)){imagewebp($src_img, $name);}
        elseif (preg_match("/avif/i",$ext)){imagepng($src_img, $name);}
        imagedestroy($src_img);
        imagedestroy($src_logo);
    }
}
function convertToReadableSize($size){
    if($size <= 0) return "0 KB";
    $base = log($size) / log(1024);
    $suffix = array("", "KB", "MB", "GB", "TB");
    $f_base = floor($base);
    return round(pow(1024, $base - floor($base)), 1) . $suffix[$f_base];
}

if($_POST){
    $fileplace = "uploads";
    if(!file_exists($fileplace)) mkdir($fileplace, 0777, true);   
   //include_once("files/ip.php");
   require_once("files/ip.php");
    $ip = $user_ip;
    $description = strip_tags($_POST['desc']);
    $site_url = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['REQUEST_URI']), '\\/') . '/';
    if (!empty($_FILES['image']['name'][0])) {
        echo "<h3>نتائج الرفع من الجهاز:</h3>";
        foreach ($_FILES['image']['name'] as $key => $val) {
            if ($_FILES['image']['error'][$key] == 0) {
$ext = pathinfo($_FILES['image']['name'][$key], PATHINFO_EXTENSION);
   $new_name = "up_" . time() . "_" . rand(100, 999) . "." . $ext;
                $target = $fileplace . "/" . $new_name;
$ss=date('Y-m-d-h:i:s');
                if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target)) {
                    @watermark($target, $ext, 'logo/logo.png');
                                     // تسجيل في ملف mfh
                    $log_data = "$description,$new_name,,$ip,$ss\n";
                    $fh = fopen("./files/datte.txt", "a+");
                    fwrite($fh, $log_data);
                    fclose($fh);
                    echo "تم رفع: <a href='".$site_url.$target."' target='_blank'>$new_name</a><br>";
                }
            }
        }
    }
 $remote_links = array_filter([$_POST['url'], $_POST['urls']]);
//$remote_links = downloadImage($remote_links);
    if (!empty($remote_links)) {
     echo "<h3>نتائج السحب من الروابط:</h3>";
      foreach ($remote_links as $current_link) {
            $path_info = pathinfo(parse_url($current_link, PHP_URL_PATH));
            $ext = isset($path_info['extension']) ? $path_info['extension'] : 'jpg';
   $password = trim($ext);
// <--- this is not a good idea!
if((strlen($password) > 4) or $ext=="" or $ext=="php")
{
    $ppp= $_POST['ppp'];
  $ext="$ppp";
// $uploadOk =0;
}
$my_site = "alshafeen\.site";


if (preg_match("/$my_site/i", $current_link)) {
    echo "Error: You cannot fetch files from your own domain ($current_link)<br>";
    continue;
}
   $new_name = "fetch_" . time() . "_" . rand(100, 999) . "." . $ext;
 $target = $fileplace . "/" . $new_name;
 $content = @file_get_contents($current_link,false, $context);
 if ($content) {
 if (file_put_contents($target, $content)) {
  @watermark($target, $ext, 'logo/logo.png');
                               // تسجيل في ملف mfh
 $log_data = "$description,$new_name,$ss,$ip\n";
                    $fh = fopen("./files/datte.txt", "a+");
                    fwrite($fh, $log_data);
                    fclose($fh);
                    echo "تم سحب: <a href='".$site_url.$target."' target='_blank'>$new_name</a> (الحجم: ".convertToReadableSize(strlen($content)).")<br>";
            }
            } else {
                echo "فشل سحب الرابط: $current_link <br>";
            }
        }
    }
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>upload file example</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data"  >
 Your URL: <input type="text" placeholder="رابط1"  name="url" />
 <input type="text" placeholder="رابط2"  name="urls" />
<input type="text" placeholder="وصف"  name="desc" />
<input type="text" placeholder="مثلا zip"  name="ppp" size="5" />
<input type="file" name="image[]" multiple  />
<input type="file" name="image[]" multiple  />
<input type="submit" value="upload image" name="upload"/>
</form>
</body>
</html>
 
السلام عليكم
مشكور ابو حميد
لم تظيفه إلى هذا الملف مع تحياتي لك
وهذا الملف كامل الذي لم يعمل به
PHP:
<?php
@header('Content-type: text/html;charset=windows-1256');
@date_default_timezone_set("Asia/riyadh");
// Code Net , Mahdi Hamid :)
$opts = array(
 'http'=>array(
  'method'=>"GET",
   'timeout'=>10,
   'ignore_errors'=> true
   )
);
$context = stream_context_create
(["http" => array(
   "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" ),
  'ssl' => [
  'verify_peer' => false,
  'verify_peer_name' => false]]);
/*
function downloadImage($remote_links) {
 $ch = curl_init($remote_links);
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, $remote_links);
 $data = curl_exec($ch);
    if(curl_errno($ch)){
        curl_close($ch);
        return false;
    }
    curl_close($ch);
    return $data;
}*/
function watermark($name, $ext, $logo){
  $src_img = null;
    if (preg_match("/jpg|jpeg/i",$ext)){$src_img=@imagecreatefromjpeg($name);}
    elseif (preg_match("/webp/i",$ext)){$src_img=@imagecreatefromwebp($name);}
    elseif (preg_match("/png/i",$ext)){$src_img=@imagecreatefrompng($name);}
    elseif (preg_match("/avif/i",$ext)){$src_img=@imagecreatefrompng($name);}
  if (!$src_img) return false;
    $src_logo = @imagecreatefrompng($logo);
    if (!$src_logo) return false;
   $bwidth = imageSX($src_img);
    $bheight = imageSY($src_img);
    $lwidth = imageSX($src_logo);
    $lheight = imageSY($src_logo);
    if ($bwidth > 160 && $bheight > 130) {
        $src_x = $bwidth - ($lwidth + 5);
        $src_y = $bheight - ($lheight + 5);
        ImageAlphaBlending($src_img, true);
        ImageCopy($src_img,$src_logo,$src_x,$src_y,0,0,$lwidth,$lheight);   
        if (preg_match("/jpg|jpeg/i",$ext)){imagejpeg($src_img, $name, 90);}
        elseif (preg_match("/png/i",$ext)){imagepng($src_img, $name);}
        elseif (preg_match("/webp/i",$ext)){imagewebp($src_img, $name);}
        elseif (preg_match("/avif/i",$ext)){imagepng($src_img, $name);}
        imagedestroy($src_img);
        imagedestroy($src_logo);
    }
}
function convertToReadableSize($size){
    if($size <= 0) return "0 KB";
    $base = log($size) / log(1024);
    $suffix = array("", "KB", "MB", "GB", "TB");
    $f_base = floor($base);
    return round(pow(1024, $base - floor($base)), 1) . $suffix[$f_base];
}

if($_POST){
    $fileplace = "uploads";
    if(!file_exists($fileplace)) mkdir($fileplace, 0777, true); 
   //include_once("files/ip.php");
   require_once("files/ip.php");
    $ip = $user_ip;
    $description = strip_tags($_POST['desc']);
    $site_url = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['REQUEST_URI']), '\\/') . '/';
    if (!empty($_FILES['image']['name'][0])) {
        echo "<h3>نتائج الرفع من الجهاز:</h3>";
        foreach ($_FILES['image']['name'] as $key => $val) {
            if ($_FILES['image']['error'][$key] == 0) {
$ext = pathinfo($_FILES['image']['name'][$key], PATHINFO_EXTENSION);
   $new_name = "up_" . time() . "_" . rand(100, 999) . "." . $ext;
                $target = $fileplace . "/" . $new_name;
$ss=date('Y-m-d-h:i:s');
                if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target)) {
                    @watermark($target, $ext, 'logo/logo.png');
                                     // تسجيل في ملف mfh
                    $log_data = "$description,$new_name,,$ip,$ss\n";
                    $fh = fopen("./files/datte.txt", "a+");
                    fwrite($fh, $log_data);
                    fclose($fh);
                    echo "تم رفع: <a href='".$site_url.$target."' target='_blank'>$new_name</a><br>";
                }
            }
        }
    }
 $remote_links = array_filter([$_POST['url'], $_POST['urls']]);
//$remote_links = downloadImage($remote_links);
    if (!empty($remote_links)) {
     echo "<h3>نتائج السحب من الروابط:</h3>";
      foreach ($remote_links as $current_link) {
            $path_info = pathinfo(parse_url($current_link, PHP_URL_PATH));
            $ext = isset($path_info['extension']) ? $path_info['extension'] : 'jpg';
   $password = trim($ext);
// <--- this is not a good idea!
if((strlen($password) > 4) or $ext=="" or $ext=="php")
{
    $ppp= $_POST['ppp'];
  $ext="$ppp";
// $uploadOk =0;
}
$my_site = "alshafeen\.site";


if (preg_match("/$my_site/i", $current_link)) {
    echo "Error: You cannot fetch files from your own domain ($current_link)<br>";
    continue;
}
   $new_name = "fetch_" . time() . "_" . rand(100, 999) . "." . $ext;
 $target = $fileplace . "/" . $new_name;
 $content = @file_get_contents($current_link,false, $context);
 if ($content) {
 if (file_put_contents($target, $content)) {
  @watermark($target, $ext, 'logo/logo.png');
                               // تسجيل في ملف mfh
 $log_data = "$description,$new_name,$ss,$ip\n";
                    $fh = fopen("./files/datte.txt", "a+");
                    fwrite($fh, $log_data);
                    fclose($fh);
                    echo "تم سحب: <a href='".$site_url.$target."' target='_blank'>$new_name</a> (الحجم: ".convertToReadableSize(strlen($content)).")<br>";
            }
            } else {
                echo "فشل سحب الرابط: $current_link <br>";
            }
        }
    }
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>upload file example</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data"  >
 Your URL: <input type="text" placeholder="رابط1"  name="url" />
 <input type="text" placeholder="رابط2"  name="urls" />
<input type="text" placeholder="وصف"  name="desc" />
<input type="text" placeholder="مثلا zip"  name="ppp" size="5" />
<input type="file" name="image[]" multiple  />
<input type="file" name="image[]" multiple  />
<input type="submit" value="upload image" name="upload"/>
</form>
</body>
</html>
صديقي العزيز ..
فقط عند السحب من موقع ويكيبيديا لايسحب او على كُل المواقع ، رجاءً شخص الخطأ بصورة صحيحة حتى اعرف مايمكنني ان اصلح وان اكتب ..
كيف لي ان اصلح كود على المجهول ؟

@الساعه
 
السلام عليكم
ابو حميد
اعتقد من جميع المواقع التي تستخدم برنامج حماية مثل ويكيبيديا
هذا ملف انت برمجته بارك الله فيك يسحبمن ويكيبيديا
PHP:
<?php

// تحميل الصورة باستخدام cURL
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);

    // حفظ كـ JPG
    imagejpeg($img, $filePath, 90);

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

    return true;
}


// عند الإرسال
if($_POST){

    $url = trim($_POST['url']);

    if(!$url){
        die("❌ أدخل رابط الصورة");
    }

    // تحميل الصورة
    $imageData = downloadImage($url);

    if(!$imageData){
        die("❌ فشل تحميل الصورة (الرابط محمي أو غير صحيح)");
    }

    // استخراج الامتداد
    $ext = strtolower(pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION));

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

    // اسم جديد
    $name = time() . ".jpg";
    $filePath = "uploads/" . $name;

    // حفظ الصورة
    file_put_contents($filePath, $imageData);

    // ختم الصورة
    watermark($filePath, $ext, "logo/logo.png");

    echo "✅ تم بنجاح: <a href='$filePath' target='_blank'>عرض الصورة</a>";
}
?>

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

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

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

</body>
</html>
 
في الكود الخاص بك، هناك خطأ منطقي بسيط في ترتيب المتغيرات داخل جملة السحب (مثل المتغير ⁠$ss⁠ الذي يتم استخدامه قبل تعريفه في قسم الروابط). إليك النسخة المصححة والمحسنة لضمان السحب من ويكيبيديا بنجاح:

PHP:
<?php
@header('Content-type: text/html;charset=utf-8'); // يفضل utf-8 للغات الحديثة
@date_default_timezone_set("Asia/Riyadh");

$fileplace = "uploads";
if(!file_exists($fileplace)) mkdir($fileplace, 0777, true);


$context = stream_context_create([
    "http" => [
        "method" => "GET",
        "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\r\n",
        "timeout" => 20,
        "ignore_errors" => true
    ],
    "ssl" => [
        "verify_peer" => false,
        "verify_peer_name" => false
    ]
]);


function convertToReadableSize($size){
    if($size <= 0) return "0 KB";
    $base = log($size) / log(1024);
    $suffix = array("", "KB", "MB", "GB", "TB");
    return round(pow(1024, $base - floor($base)), 1) . " " . $suffix[floor($base)];
}

if($_POST){
    require_once("files/ip.php");
    $ip = isset($user_ip) ? $user_ip : $_SERVER['REMOTE_ADDR'];
    $description = strip_tags($_POST['desc']);
    $ss = date('Y-m-d H:i:s');
    $site_url = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['REQUEST_URI']), '\\/') . '/';

 
    $remote_links = array_filter([$_POST['url'], $_POST['urls']]);
    
    if (!empty($remote_links)) {
        echo "<h3>نتائج السحب:</h3>";
        foreach ($remote_links as $current_link) {
            
            
            $path_info = pathinfo(parse_url($current_link, PHP_URL_PATH));
            $ext = isset($path_info['extension']) ? strtolower($path_info['extension']) : 'jpg';
            
            
            if(in_array($ext, ['php', 'php5', 'phtml', 'cgi'])) {
                $ext = !empty($_POST['ppp']) ? $_POST['ppp'] : 'txt';
            }

            $new_name = "wiki_" . time() . "_" . rand(100, 999) . "." . $ext;
            $target = $fileplace . "/" . $new_name;

            // تنفيذ السحب
            $content = @file_get_contents($current_link, false, $context);

            if ($content) {
                if (file_put_contents($target, $content)) {
                    
                    $log_data = "$description,$new_name,$ss,$ip\n";
                    @file_put_contents("./files/datte.txt", $log_data, FILE_APPEND);
                    
                    echo "✅ تم سحب الملف من ويكيبيديا: <a href='".$site_url.$target."' target='_blank'>$new_name</a> (الحجم: ".convertToReadableSize(strlen($content)).")<br>";
                }
            } else {
                echo "❌ فشل سحب الرابط (تحقق من رابط الصورة المباشر): $current_link <br>";
            }
        }
    }
}
?>

اتمنى ان يفيدك هذا الكود ..

تحياتي لك .
@الساعه
 
كود:
<?php


@header('Content-type: text/html;charset=utf-8');
@date_default_timezone_set("Asia/Riyadh");


$fileplace = "uploads";
$log_folder = "files";
if(!file_exists($fileplace)) mkdir($fileplace, 0777, true);
if(!file_exists($log_folder)) mkdir($log_folder, 0777, true);


$context = stream_context_create([
    "http" => [
        "method" => "GET",
        "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\r\n",
        "timeout" => 20,
        "ignore_errors" => true
    ],
    "ssl" => [
        "verify_peer" => false,
        "verify_peer_name" => false
    ]
]);


function watermark($name, $ext, $logo){
    if (!file_exists($logo)) return false;
    $src_img = null;
    $ext = strtolower($ext);
    if (preg_match("/jpg|jpeg/i",$ext)) $src_img = @imagecreatefromjpeg($name);
    elseif (preg_match("/webp/i",$ext)) $src_img = @imagecreatefromwebp($name);
    elseif (preg_match("/png/i",$ext)) $src_img = @imagecreatefrompng($name);
   
    if (!$src_img) return false;
    $src_logo = @imagecreatefrompng($logo);
    if (!$src_logo) return false;

    $bwidth = imagesx($src_img);
    $bheight = imagesy($src_img);
    $lwidth = imagesx($src_logo);
    $lheight = imagesy($src_logo);

    if ($bwidth > 160 && $bheight > 130) {
        $src_x = $bwidth - ($lwidth + 5);
        $src_y = $bheight - ($lheight + 5);
        imagealphablending($src_img, true);
        imagecopy($src_img, $src_logo, $src_x, $src_y, 0, 0, $lwidth, $lheight);    
       
        if (preg_match("/jpg|jpeg/i",$ext)) imagejpeg($src_img, $name, 90);
        elseif (preg_match("/png/i",$ext)) imagepng($src_img, $name);
        elseif (preg_match("/webp/i",$ext)) imagewebp($src_img, $name);
       
        imagedestroy($src_img);
        imagedestroy($src_logo);
    }
}

function convertToReadableSize($size){
    if($size <= 0) return "0 KB";
    $base = log($size) / log(1024);
    $suffix = array("", "KB", "MB", "GB", "TB");
    return round(pow(1024, $base - floor($base)), 1) . " " . $suffix[floor($base)];
}


if($_POST){
   
    if(file_exists("files/ip.php")) {
        include("files/ip.php");
        $ip = isset($user_ip) ? $user_ip : $_SERVER['REMOTE_ADDR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    $description = strip_tags($_POST['desc']);
    $ss = date('Y-m-d H:i:s');
    $site_url = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['REQUEST_URI']), '\\/') . '/';

   
    if (!empty($_FILES['image']['name'][0])) {
        echo "<h3>نتائج الرفع من الجهاز:</h3>";
        foreach ($_FILES['image']['name'] as $key => $val) {
            if ($_FILES['image']['error'][$key] == 0) {
                $ext = pathinfo($_FILES['image']['name'][$key], PATHINFO_EXTENSION);
                $new_name = "up_" . time() . "_" . rand(100, 999) . "." . $ext;
                $target = $fileplace . "/" . $new_name;

                if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target)) {
                    @watermark($target, $ext, 'logo/logo.png');
                    $log_data = "$description,$new_name,,$ip,$ss\n";
                    file_put_contents("./files/datte.txt", $log_data, FILE_APPEND);
                    echo "✅ تم رفع: <a href='".$site_url.$target."' target='_blank'>$new_name</a><br>";
                }
            }
        }
    }

   
    $remote_links = array_filter([$_POST['url'], $_POST['urls']]);
    if (!empty($remote_links)) {
        echo "<h3>نتائج السحب من الروابط:</h3>";
        foreach ($remote_links as $current_link) {
            $path_info = pathinfo(parse_url($current_link, PHP_URL_PATH));
            $ext = isset($path_info['extension']) ? strtolower($path_info['extension']) : 'jpg';
           
           
            if(in_array($ext, ['php', 'php5', 'phtml', 'cgi', 'asp'])) {
                $ext = !empty($_POST['ppp']) ? $_POST['ppp'] : 'txt';
            }

           
            $my_domain = $_SERVER['HTTP_HOST'];
            if (stripos($current_link, $my_domain) !== false) {
                echo "❌ خطأ: لا يمكن السحب من نطاقك الحالي.<br>";
                continue;
            }

            $new_name = "fetch_" . time() . "_" . rand(100, 999) . "." . $ext;
            $target = $fileplace . "/" . $new_name;

           
            $content = @file_get_contents($current_link, false, $context);

            if ($content) {
                if (file_put_contents($target, $content)) {
                    @watermark($target, $ext, 'logo/logo.png');
                    $log_data = "$description,$new_name,$ss,$ip\n";
                    file_put_contents("./files/datte.txt", $log_data, FILE_APPEND);
                    echo "✅ تم سحب: <a href='".$site_url.$target."' target='_blank'>$new_name</a> (الحجم: ".convertToReadableSize(strlen($content)).")<br>";
                }
            } else {
                echo "❌ فشل سحب الرابط: $current_link (تأكد من أنه رابط مباشر للملف)<br>";
            }
        }
    }
}
?>

<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
    <meta charset="utf-8">
    <title>مركز رفع وسحب الملفات</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 50px; line-height: 1.6; background: #f4f4f4; }
        .container { background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
        input[type="text"], input[type="file"] { margin-bottom: 10px; padding: 8px; width: 90%; }
        input[type="submit"] { padding: 10px 20px; background: #28a745; color: #fff; border: none; cursor: pointer; }
        input[type="submit"]:hover { background: #218838; }
    </style>
</head>
<body>

<div class="container">
    <h2>رفع وسحب ملفات</h2>
    <form action="" method="post" enctype="multipart/form-data">
        <label>روابط السحب المباشرة:</label><br>
        <input type="text" placeholder="رابط مباشر من ويكيبيديا 1" name="url" />
        <input type="text" placeholder="رابط مباشر من ويكيبيديا 2" name="urls" />
       
        <label>بيانات إضافية:</label><br>
        <input type="text" placeholder="وصف الملف" name="desc" />
        <input type="text" placeholder="الامتداد البديل (مثال: zip)" name="ppp" size="5" />
       
        <hr>
        <label>رفع من الجهاز:</label><br>
        <input type="file" name="image[]" multiple />
        <br>
        <input type="submit" value="بدء المعالجة" name="upload"/>
    </form>
</div>

</body>
</html>

هذا الكود الكامل ، قمت بتعديل عليه ، اخبرني بالنتيجة عند تنفيذ ؟

تحياتي لك
 
السلام عليكم
ابو حميد
ركبته يسحب مرة واحدة فقط والمرة الثانية يفشل في سحب الصورة صالحة الكود هذا لو ركبته يظبط

PHP:
// تحميل الصورة باستخدام cURL
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;
}
 
السلام عليكم
ابو حميد جرب
هذه الصورة

اسحبها على السكربت هذا
يسحبها تمام
وجرب اسحبها على السكربت هذا
يفشل في سحبها
وكل السكربتين موجودين في هذا الموضوع
ارسل لي الملف الذي يوجد في الخطأ رجاءًا لافحصه ؟
علمًا ان الدوال الذي تستخدمها كلها قديمة انتَ من اي عصر ؟ نحن الان في سنة 2026 حاول ان تتماشى مع العصر والاكواد الحديثة لن الاكواد قديمة جدًا ؟

@الساعه
 
السلام عليكم
شكرا ابو حميد
هذا محتوى الملف كامل الذي فيه المشكلة(لايسحب الملف من ويكيبيديا)
وهذا محتوى الملف الذي يسحب الملف من ويكيبيديا بدون مشكلة
 
حتى بعد التصليح لم يسحب من ويكيبيديا ؟
ام يسحب مرا واحدة وعند المحاولة مرا اخرى لايسحب ؟
 
السلام عليكم
لايسحب الا مرة واحدة فقط وفي المرة الثانية لايسحب
ابوحميد كودي فاشل
والكود هذا فعال لاكن لا نستطيع استخدامه في ملفنا
PHP:
<?php

// تحميل الصورة باستخدام cURL
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;
}
 
السلام عليكم
لايسحب الا مرة واحدة فقط وفي المرة الثانية لايسحب
ابوحميد كودي فاشل
والكود هذا فعال لاكن لا نستطيع استخدامه في ملفنا
PHP:
<?php

// تحميل الصورة باستخدام cURL
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;
}
صديقي فقط ارسل لي الملف كامل الذي توجد فيه المشكلة وساحاول مرا اخرى ان احلها ..

تحية طيبة لك صديقي
 
السلام عليكم
ابو حميد هذا الملف كامل الذي استخدمه حاليا
 
السلام عليكم
ابو حميد انقر على اليوست يفتح لك الملف كامل
 
السلام عليكم
ابو حميد انقر على اليوست يفتح لك الملف كامل
اعرف لكن انا دائمًا ، افضل ارسال الكود من جديد ، قد يكون اجريت عليه انتَ بعض التغيرات ، ولاتريد ان تفقدها فتعديل الاكواد القديمة قد يسبب لك مشاكل ان كنت اضفت اضافات او ماشابه فدائمًا افضل ، ارسالة بعد كُل تغيرات تريد التعديل عليها ، حتى لايحدث اشتباه او التماس ..
 
1 استخدام cURL بدل ⁠file_get_contents⁠: المواقع الكبيرة (مثل فيسبوك، انستجرام، أو بعض مواقع الرفع) تمنع السحب العادي وتتطلب "محاكاة كاملة للمتصفح" تشمل الـ ⁠Referer⁠ والـ ⁠User-Agent⁠ الحقيقي، وهو ما يوفره cURL بكفاءة أعلى.
2 تجاوز الكاش (Cache): أضفت متغيرات عشوائية في الطلب لضمان أن السيرفر لا يرسل نسخة قديمة أو معطلة من الملف.
3 إصلاح منطق السحب المتكرر: الكود الآن يعالج مصفوفة الروابط بشكل مستقل تماماً في كل مرة تضغط فيها على الزر.

إليك الكود المحدث والكامل:
كود:
<?php
/*codeNET By: Mahdi Hamid
 */

@header('Content-type: text/html;charset=utf-8');
@date_default_timezone_set("Asia/Riyadh");

$fileplace = "uploads";
$log_folder = "files";
if(!file_exists($fileplace)) mkdir($fileplace, 0777, true);
if(!file_exists($log_folder)) mkdir($log_folder, 0777, true);

/**
 * دالة السحب الاحترافية باستخدام cURL
 * تعمل مع المواقع التي تمنع السحب العادي
 */
function fetchRemoteFile($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // تتبع الروابط المختصرة والمحولة
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // تخطي حماية SSL
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    // محاكاة متصفح حقيقي بالكامل
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");
    curl_setopt($ch, CURLOPT_REFERER, "https://www.google.com/");
    
    $data = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);

    // التأكد أن الرد كان ناجحاً (HTTP 200)
    if ($info['http_code'] == 200) {
        return $data;
    }
    return false;
}

function watermark($name, $ext, $logo){
    if (!file_exists($logo)) return false;
    $src_img = null;
    $ext = strtolower($ext);
    if (preg_match("/jpg|jpeg/i",$ext)) $src_img = @imagecreatefromjpeg($name);
    elseif (preg_match("/webp/i",$ext)) $src_img = @imagecreatefromwebp($name);
    elseif (preg_match("/png/i",$ext)) $src_img = @imagecreatefrompng($name);
  
    if (!$src_img) return false;
    $src_logo = @imagecreatefrompng($logo);
    if (!$src_logo) return false;

    $bwidth = imagesx($src_img);
    $bheight = imagesy($src_img);
    $lwidth = imagesx($src_logo);
    $lheight = imagesy($src_logo);

    if ($bwidth > 160 && $bheight > 130) {
        $src_x = $bwidth - ($lwidth + 5);
        $src_y = $bheight - ($lheight + 5);
        imagealphablending($src_img, true);
        imagecopy($src_img, $src_logo, $src_x, $src_y, 0, 0, $lwidth, $lheight);   
        if (preg_match("/jpg|jpeg/i",$ext)) imagejpeg($src_img, $name, 90);
        elseif (preg_match("/png/i",$ext)) imagepng($src_img, $name);
        elseif (preg_match("/webp/i",$ext)) imagewebp($src_img, $name);
        imagedestroy($src_img);
        imagedestroy($src_logo);
    }
}

function convertToReadableSize($size){
    if($size <= 0) return "0 KB";
    $base = log($size) / log(1024);
    $suffix = array("", "KB", "MB", "GB", "TB");
    return round(pow(1024, $base - floor($base)), 1) . " " . $suffix[floor($base)];
}

if($_POST){
    $ip = $_SERVER['REMOTE_ADDR'];
    if(file_exists("files/ip.php")) { include("files/ip.php"); $ip = isset($user_ip) ? $user_ip : $ip; }

    $description = strip_tags($_POST['desc']);
    $ss = date('Y-m-d H:i:s');
    $site_url = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['REQUEST_URI']), '\\/') . '/';

    // 1. معالجة الرفع من الجهاز
    if (!empty($_FILES['image']['name'][0])) {
        echo "<h3>نتائج الرفع من الجهاز:</h3>";
        foreach ($_FILES['image']['name'] as $key => $val) {
            if ($_FILES['image']['error'][$key] == 0) {
                $ext = pathinfo($_FILES['image']['name'][$key], PATHINFO_EXTENSION);
                $new_name = "up_" . time() . "_" . rand(1000, 9999) . "." . $ext;
                $target = $fileplace . "/" . $new_name;
                if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $target)) {
                    @watermark($target, $ext, 'logo/logo.png');
                    file_put_contents("./files/datte.txt", "$description,$new_name,,$ip,$ss\n", FILE_APPEND);
                    echo "✅ تم رفع: <a href='".$site_url.$target."' target='_blank'>$new_name</a><br>";
                }
            }
        }
    }

    // 2. معالجة السحب من الروابط (كافة المواقع)
    $remote_links = array_filter([$_POST['url'], $_POST['urls']]);
    if (!empty($remote_links)) {
        echo "<h3>نتائج السحب من الروابط:</h3>";
        foreach ($remote_links as $current_link) {
            $current_link = trim($current_link);
            
            // استخراج الامتداد
            $path_info = pathinfo(parse_url($current_link, PHP_URL_PATH));
            $ext = isset($path_info['extension']) ? strtolower($path_info['extension']) : 'jpg';
            
            // منع سحب ملفات PHP
            if(in_array($ext, ['php', 'php5', 'phtml', 'cgi', 'asp'])) {
                $ext = !empty($_POST['ppp']) ? $_POST['ppp'] : 'txt';
            }

            // منع السحب من النطاق الحالي
            if (stripos($current_link, $_SERVER['HTTP_HOST']) !== false) {
                echo "❌ خطأ: الرابط من نفس موقعك.<br>";
                continue;
            }

            $new_name = "fetch_" . time() . "_" . rand(1000, 9999) . "." . $ext;
            $target = $fileplace . "/" . $new_name;

            // تنفيذ السحب باستخدام cURL
            $content = fetchRemoteFile($current_link);

            if ($content) {
                if (file_put_contents($target, $content)) {
                    @watermark($target, $ext, 'logo/logo.png');
                    file_put_contents("./files/datte.txt", "$description,$new_name,$ss,$ip\n", FILE_APPEND);
                    echo "✅ تم سحب: <a href='".$site_url.$target."' target='_blank'>$new_name</a> (الحجم: ".convertToReadableSize(strlen($content)).")<br>";
                }
            } else {
                echo "❌ فشل سحب: $current_link (الموقع قد يكون محمياً أو الرابط غير مباشر)<br>";
            }
        }
    }
}
?>

<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
    <meta charset="utf-8">
    <title>مركز سحب ورفع شامل</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 30px; background: #f0f2f5; text-align: center; }
        .container { background: #fff; padding: 30px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); display: inline-block; width: 100%; max-width: 500px; }
        input { width: 90%; padding: 12px; margin: 10px 0; border: 1px solid #ddd; border-radius: 6px; }
        input[type="submit"] { background: #007bff; color: white; border: none; cursor: pointer; font-weight: bold; }
        input[type="submit"]:hover { background: #0056b3; }
        label { font-weight: bold; color: #333; float: right; margin-right: 5%; }
    </style>
</head>
<body>

<div class="container">
    <h2>🚀 سحب ورفع الملفات من أي موقع</h2>
    <form action="" method="post" enctype="multipart/form-data">
        <label>روابط السحب (ويكيبيديا، صور، إلخ):</label>
        <input type="text" placeholder="ضع الرابط هنا" name="url" />
        <input type="text" placeholder="رابط إضافي" name="urls" />
      
        <label>الإعدادات:</label>
        <input type="text" placeholder="وصف الملف" name="desc" />
        <input type="text" placeholder="تغيير الامتداد (مثلاً zip)" name="ppp" />
      
        <hr>
        <label>رفع من جهازك:</label>
        <input type="file" name="image[]" multiple />
        
        <input type="submit" value="ابدأ العملية الآن" />
    </form>
</div>

</body>
</html>

لماذا هذا الكود أفضل؟
1 دالة ⁠fetchRemoteFile⁠: تستخدم مكتبة cURL، وهي الطريقة القياسية عالمياً للسحب من المواقع التي تفرض قيوداً.
2 Referer و User-Agent: يخدع المواقع ويجعلها تعتقد أن الطلب قادم من بحث جوجل عبر متصفح كروم حقيقي، مما يمنع حظر السحب.
3 الثبات: يحل مشكلة "المرة الواحدة" لأن cURL يفتح ويغلق الاتصال بشكل نظيف في كل مرة.

تنبيه: تأكد أن خيار ⁠cURL⁠ مفعل في استضافتك (وهو مفعل في 99% من الاستضافات بشكل افتراضي).


طبعًا استغرق كتابة الكود وتعديلة مايقارب ساعة كاملة ,

تحياتي لك
اخوك مهدي حميد :)
 
جرب الملف الجديد واعطني التجربة رجاءًا ؟
حتى اغلق الموضوع ..
اتمنى ان يعمل بكـل سلاسة وبدون مشاكل

ان احتجت اي شيء اخر
لاتردد في فتح موضوع في قسم "مشاكل"

@الساعه
 
السلام عليكم
ابو حميد مشكور على الجهد والتصميم الرائع
بعد تركيب الكودالاخير ورفع ملفين خرج لي الاخطاء التاليه العجيب انه يتم رفع ملف ويكيبيديا على الموقع الثاني الموجود في هذا الموضوع

نتائج السحب من الروابط:​

فشل سحب: https://upload.wikimedia.org/wikipedia/ar/a/a9/عبد_العزيز_الفهد.jpg (الموقع قد يكون محمياً أو الرابط غير مباشر)
فشل سحب: https://vb4arb.com/vb/attachment.php?aid=30181 (الموقع قد يكون محمياً أو الرابط غير مباشر)
 
بعد التجربة يعمل طبيعي ، يسحب ملفات اعتقد هذا التعقيد بسبب الحماية على محتوى من بعض المواقع .
 
غدًا ان شاء الله ساحاول ان اجبره على فك المواقع المحظورة وسحبهن ..

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

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