, 04:22 PM
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($link, FILTER_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($ch, CURLINFO_HEADER_SIZE);
$headers = substr($response, 0, $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($link, PHP_URL_PATH));
}
if (!$filename || strlen($filename) < 3) {
$filename = "file_" . time() . rand(100, 999);
}
$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($fullDir, 0755, true);
}
$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]](https://up6.cc/2026/03/177461173141861.gif)