غير قادر على الحصول فب لحفظ اسم الملف مع الاسم الصحيح

StackOverflow https://stackoverflow.com/questions/1055295

  •  20-08-2019
  •  | 
  •  

سؤال

لسبب ما، عند استخدام هذا الرمز الملف هو إخراج يسمى مجرد ".JPG".

<?
$title = $GET['title'];
$url = $GET['url'];

$ourFileName = $title.jpg;
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fclose($ourFileHandle);

$ch = curl_init ("http://www.address.com/url=$url");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec ($ch);
curl_close ($ch);

$fp = fopen("images/$ourFileName",'w');
fwrite($fp, $rawdata);
fclose($fp); 

echo ("<img src=images/$ourFileName>");
?>

ومتأكد من أنه لا علاقة له معلنا $ ourFileName، سيكون موضع تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

ويبدو أن هذا الخط

$ourFileName = $title.jpg;

وينبغي أن يكون

$ourFileName = $title . ".jpg";

وهذا ينبغي أن نفعل ذلك طالما كنت متأكدا من وجود قيمة في $ _GET [ 'عنوان']؛

نصائح أخرى

هل أنت متأكد من $GET['title'] هو الصحيح؟ المتغير superglobal للوصول إلى قيم المعلمات GET هو $_GET، وليس $GET.

وجرب هذا     $ ourFileName = $ اللقب. ".JPG"؛

ويبدو أنه يجب أن تكون على النحو التالي:

$ourFileName = $title.'.jpg';

وبالتأكيد يجب أن يكون

$title = $_GET['title'];
$url = $_GET['url'];
$ourFileName = $title.'.jpg';

ويبدو وكأنه عالم من المشاكل الأمنية على الرغم من هناك! وهناك سيناريو أن الكتابة فوق أي ملف له أذونات لمع ملف من المهاجمين اختيار!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top