تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كيف افعل دالة shell_exec
#9
PHP كود :
<?php
session_start
();
require(
'login.php');

if (!isset(
$_SESSION['username'])) {
    die("يجب تسجيل الدخول");
}
?>
<!DOCTYPE html>
<html>
<head>
<title>تحميل ملف</title>
<style>
input[type=text] {
    width: 100%;
    padding: 12px;
    margin: 8px 0;
    border: 1px solid #ccc;
    border-radius: 4px;
    text-align: center;
}
input[type=submit] {
    width: 100%;
    background-color: #4CAF50;
    color: white;
    padding: 14px;
    border: none;
    border-radius: 4px;
}
body {
    background-image: url("http://akveo.com/blur-admin/assets/img/blur-bg-blurred.jpg");
}
</style>
</head>
<body>

<div style="width:50%;margin:auto;">
<center>

<a href="logout.php">تسجيل خروج</a>
<hr>

<h2>تحميل ملفين جديدين</h2>

<form method="post">
<b>الملف الأول:</b><br>
<input required type="text" name="link1" placeholder="الرابط المباشر الأول"><br>

<b>الملف الثاني:</b><br>
<input required type="text" name="link2" placeholder="الرابط المباشر الثاني"><br>

<input required type="text" name="dir" placeholder="اسم المجلد (مثال: uploads)"><br>
<input type="submit" name="download" value="ابدأ التحميل">
</form>

<hr>

<?php

function downloadFile($link$fullDir) {
    if (!filter_var($linkFILTER_VALIDATE_URL)) {
        return ["success" => false"msg" => "❌ رابط غير صالح: $link"];
    }

    $ch curl_init($link);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HEADER         => true,
        CURLOPT_TIMEOUT        => 300,
    ]);

    $response curl_exec($ch);

    if (curl_errno($ch)) {
        $err curl_error($ch);
        curl_close($ch);
        return ["success" => false"msg" => "❌ خطأ cURL: $err"];
    }

    $header_size curl_getinfo($chCURLINFO_HEADER_SIZE);
    $headers     substr($response0$header_size);
    $body        substr($response$header_size);
    curl_close($ch);

    // استخراج اسم الملف
    $filename "";
    if (preg_match('/Content-Disposition:.*filename=["\']?([^"\';\r\n]+)/i'$headers$matches)) {
        $filename trim($matches[1]);
    }
    if (!$filename) {
        $filename basename(parse_url($linkPHP_URL_PATH));
    }
    if (!$filename || strlen($filename) < 3) {
        $filename "file_" time() . rand(100999);
    }

    $filename preg_replace('/[^a-zA-Z0-9\.\-_]/''_'$filename);
    $filepath $fullDir "/" $filename;

    if (file_put_contents($filepath$body)) {
        return ["success" => true"filepath" => $filepath"filename" => $filename];
    } else {
        return ["success" => false"msg" => "❌ فشل حفظ الملف: $filename"];
    }
}

if (isset(
$_POST['download'])) {

    $link1 trim($_POST['link1']);
    $link2  trim($_POST['link2']);
    $dir   trim($_POST['dir']);

    if (strpos($dir"..") !== false) {
        die("❌ مسار غير مسموح");
    }

    $basePath __DIR__;
    $fullDir  $basePath "/" $dir;

    if (!is_dir($fullDir)) {
        mkdir($fullDir0755true);
    }

    $links = [$link1$link2];

    foreach ($links as $i => $link) {
        $num $i 1;
        echo "<b>الملف $num:</b><br>";

        $result downloadFile($link$fullDir);

        if ($result['success']) {
            $fileUrl $dir "/" $result['filename'];
            echo "✅ تم التحميل بنجاح<br>";
            echo "? تم الحفظ في: " $result['filepath'] . "<br>";
            echo "<a href='$fileUrl' target='_blank'>? فتح الملف</a>";
        } else {
            echo $result['msg'];
        }

        echo "<br><br>";
    }
}

?>

</center>
</div>

</body>
</html> 

استخرجت منطق التحميل في دالة مستقلة downloadFile() حتى لا يتكرر الكود
تم اضافة حقلين للرابط (link1 و link2) بدل حقل واحد
[*]الحلقة foreach تمشي على الرابطين وتقوم بتحميل كل رابط وتعرض نتيجته على حده
[*]كل ملف يظهر نتيجته سواء نجح أو فشل
لو تبغى تزيد أكثر من ملفين لاحقاً... 
ما عليك إلا تضيف link3 وتضيفه للمصفوفة $links

بالتوفيق
[صورة مرفقة: 177461173141861.gif]
الرد }}}
تم الشكر بواسطة: nnnjk


الردود في هذا الموضوع
كيف افعل دالة shell_exec - بواسطة nnnjk - 03-04-26, 11:07 PM
RE: كيف افعل دالة shell_exec - بواسطة Amir_Alzubidy - 04-04-26, 01:40 AM
RE: كيف افعل دالة shell_exec - بواسطة nnnjk - 04-04-26, 03:01 AM
RE: كيف افعل دالة shell_exec - بواسطة Amir_Alzubidy - 04-04-26, 03:18 AM
RE: كيف افعل دالة shell_exec - بواسطة nnnjk - 04-04-26, 04:12 AM
RE: كيف افعل دالة shell_exec - بواسطة Amir_Alzubidy - 04-04-26, 04:07 PM
RE: كيف افعل دالة shell_exec - بواسطة nnnjk - 04-04-26, 04:45 PM
RE: كيف افعل دالة shell_exec - بواسطة nnnjk - 20-04-26, 10:38 PM
RE: كيف افعل دالة shell_exec - بواسطة Amir_Alzubidy - , 04:22 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] ماهي دالة مسوؤلة عن استخراج ملفات iso في php اوjavascript alizid 1 601 28-03-23, 10:14 AM
آخر رد: sanyor77
  [كود] بشرى . لقد عرفت فك ترميز النصوص العربية (توجد دالة جاهزة) سعود 7 5,421 26-10-14, 12:18 PM
آخر رد: سعود

التنقل السريع :


يقوم بقرائة الموضوع: