سؤال

وبلدي PHP التطبيق يستخدم 404 وثائق لإنشاء ملفات HTML بحيث استعلامات متعددة لنفس الملف HTML تتسبب فقط في جيل إلى تشغيل مرة واحدة.

وأود أن اعتراض الطلبات إلى ملفات HTML بحيث يحتاج المستخدم أن يكون هناك دورة PHP أنشئت من أجل سحب الملفات.

في أفضل الأحوال، الدورة ID ستستخدم في URL وإجبارها يمكن أن تستخدم المزيد من مصادقة. على سبيل المثال، فإن تسجيل الدخول نصدر لك جلسة الهوية وجعل فقط بعض الملفات HTML متاحة لك.

وأنا على علم بأنه من خلال تغيير الكوكيز أتمكن من محاكاة ساخرة طلب، ولكن هذا شيء طيب.

وكيف أذهب عن القيام بذلك؟

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

المحلول

وشيء من هذا القبيل يمكن أن تعمل (I لم نجرب ذلك):

RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html

ويفترض أن قمت بإلحاق "-$session_id.html" إلى أسماء ($session_id غير معرف جلسة PHP ل).

ويجب أن تكون آمنة، وصالح هو أن يتم تقديم الملفات عن طريق خادم الويب مباشرة دون الاستناد PHP على الإطلاق.

نصائح أخرى

SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
  Order Deny,Allow
  Deny from all
  Allow from env=let_me_in
</Directory>  

ومن المستخدم بالطبع يمكن إنشاء مثل هذه الكعكة يدويا في متصفح له (هناك ملحقات الذي فعل ذلك لفايرفوكس، ويمكنك تحرير دائما تخزين ملفات تعريف الارتباط في المتصفح).

هل يمكن استخدام أباتشي وحدة mod_rewrite و لإعادة توجيه طلبات عناوين .html لسيناريو PHP:

RewriteEngine on
RewriteRule \.html$ script.php [L]

والمسار URI طلب والاستعلام ثم متاح في متغير $_SERVER['REQUEST_URI'].

وكنت وضعت مؤقتا الملفات من جذر الويب الخاص بك، ولكن لا يزال في مكان PHP يمكن الوصول إليها.

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