سؤال

أواجه مشكلات في الحصول على نموذج PHP للكتابة إلى ملف مستضاف مع مجلد Apache HTTPSDocs. يعمل النموذج بشكل جيد فقط إذا كانت جميع أجزاء تكنولوجيا المعلومات تستخدم بروتوكول HTTP، ولكن عندما أقوم بتأمين النموذج وتقديم النموذج والملف مكتوب النتائج إليه.

هل أستطيع مساعدتك؟

هذا هو رمز PHP:

$myFile = "files/data.txt";
$fh = fopen($myFile, 'a') or die ("Could not read file");
$stringData = "Data in pipe format\n";
fwrite($fh, $stringData);
fclose($fh);
header( 'Location: http://www.example.com/thankyou');

المواقع المختلفة هي:

  • /var/www/vhosts/example.com/httpdocs/files.
  • /var/www/vhosts/example.com/httpsdocs/files.

بالإضافة إلى ذلك، صفحة النموذج الخاصة بي هي https://example.com/form.php., ، ويعيد توجيه حقل النموذج إلى الإجراء = "processform.php"، فلماذا يبحث عن processform.php في httpdocs بدلا من httpsdocs؟ بالتأكيد يجب أن يبقى في نفس البروتوكول / الدليل كما تم استدعاؤه من!

شكرا على اي مساعدة :)

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

المحلول

أنت مربكة الأشياء. عناوين URL ليست عناوين URL، فهي دلائل. فكرتي الأولى هي التحقق من حقوق الدليل الآمن (# /var/www/vhosts/mysite.co.uk/httpsdocs/files) لمعرفة ما إذا كان مستخدم خادم الويب الخاص بك يمكن أن يكتب هناك.

نصائح أخرى

أنا ثاني مارتن، وهذا هو بالتأكيد إعداد إذن على الملف. هل لديك chmod'd الملف؟ يجب أن تكون هذه المسألة الوحيدة الخاصة بك، ولكن هذا النوع من التقديم غير آمن للغاية حتى لو كنت تفعل ذلك عبر https. أود أن أجعل الملف يسمى شيئا مثل "البيانات" ثم يمكنك استخدام إعدادات أذن Apache الخاصة ب Apache "لإغلاق" الملف من الوصول الخارجي / القراءة.

<files "*.secured">
order allow,deny
deny from all
</files>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top