PHP:الحصول على البيانات تلقائيا أن أعلنت بأنها المتغيرات

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

  •  01-07-2019
  •  | 
  •  

سؤال

خذ هذا الكود:

<?php
if (isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
}

if ($action) {
    echo $action;
}
else { 
    echo 'No variable';
}
?>

ومن ثم الوصول إلى الملف ؟ العمل=اختبار هل هناك أي طريقة لمنع $العمل من تلقائيا يتم تعريفه من قبل ؟ عدا بالطبع إضافة

&& !isset($_GET['action'])

لماذا أريد المتغير إلى أن أعلن بالنسبة لي ؟

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

المحلول

تحقق php الخاص بك.ini عن register_globals الإعداد.ربما أنت تريد تشغيله.

لماذا أريد المتغير إلى أن أعلن بالنسبة لي ؟

لا. انها رهيبة المخاطر الأمنية.يجعل البيئة, على, بعد, كوكي و الخادم المتغيرات العالمية (PHP manual).هذه هي عدد قليل من محفوظة المتغيرات في PHP.

نصائح أخرى

يبدو register_globals في php الخاص بك.ini هو الجاني.يجب إيقاف هذا.كما انها ضخمة المخاطر الأمنية أن يكون ذلك على.

إذا كنت على استضافة مشتركة و لا يمكن تعديل php.ini, يمكنك استخدام ini_set() لتحويل register_globals قبالة.

مجموعة register_globals إلى إيقاف, إذا كنت فهمت سؤالك.انظر http://us2.php.net/manual/en/language.variables.predefined.php

إذا لم يكن لديك الوصول إلى php.ini, ، ini_set('register_globals', false) في البرنامج النصي php لا تعمل (المتغيرات أعلنت بالفعل) وهو .htaccess مع:

php_flag register_globals Off

يمكن أن تساعد في بعض الأحيان.

يمكنك اختبار ما إذا كانت جميع المتغيرات أعلن بشكل صحيح من خلال تحويل PHP سجل مستوى في PHP.INI

error_reporting  =  E_ALL 

التعليمات البرمجية المتكررة الآن ينبغي أن تولد إشعار.

في بعض نقطة في php التاريخ أنهم قرار مثير للجدل إيقاف register_globals افتراضيا كما كان ضخم الأمن الخطر.أنه يعطي أي شخص المحتملة لحقن المتغيرات في التعليمات البرمجية الخاصة بك, إنشاء عواقب لا يمكن تصوره!هذه "الميزة" حتى إزالتها في php6

إذا لاحظت أنه على الاتصال بالمسؤول لإيقاف تشغيله.

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