سؤال

في بي، هل هناك أي طريقة لمسح / إزالة كافة العناصر ردد سابقا أو مطبوعة؟

وعلى سبيل المثال:

<?php

echo 'a';
print 'b';

// some statement that removes all printed/echoed items

echo 'c';

// the final output should be equal to 'c', not 'abc'

?>

وبلدي النصي يستخدم تشمل وظيفة. ليس من المفترض الملفات المضمنة أن أردد أي شيء. فقط في حالة شخص ما (على سبيل المثال = الهاكر) يحاول، وأنا بحاجة إلى وسيلة لإزالة.

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

المحلول

<?php

ob_start();
echo 'a';
print 'b';

// some statement that removes all printed/echoed items
ob_end_clean();

echo 'c';

// the final output is equal to 'c', not 'abc'

?>

وظائف الإخراج التخزين المؤقت

وظائف الإخراج التخزين المؤقت هي أيضا مفيدة في hackery لإكراه الوظائف التي تطبع فقط للعودة سلاسل، أي.

<?php
ob_start();
var_dump($myVar);
$data = ob_get_clean();
// do whatever with $data
?>

نصائح أخرى

وحينmonoxide هو حق، على نحو أفضل لإيجاد طرق أكثر سهولة من القيام بنفس الشيء. منها مثلا:

<?php
$val_to_print = $a;
if( $need_to_change==true ) 
    $val_to_print = $b;
// when you are sure you won't have to change again...
echo $val_to_print;
?>

وابتهاج،

وJRH

ومن الناحية المثالية، يجب أن لا شيء المخرجات التي لا تريد طباعتها في نهاية المطاف. حافظ على المنطق الخاص منفصل عن العرض التقديمي لأقل من الإحباط.

وأن يقال، يمكنك الاطلاع على الناتج جارى خيارات في PHP.

وإذا كان من إخراج التصحيح ومركز المعلومات برنامج كنت قلقا ربما trigger_error قد يكون أقرب إلى ما تحتاج إليه، مثل:

trigger_error ("Attempting to load report #{$report_id}.", E_USER_NOTICE);

عند النصي الخاص بك هو في إنتاج متعود تظهر أية أخطاء كما أنها عادة ما تكون معطلة أو تسجيل. كما انها الأفضل أن تفعل أخطاء قاتلة بهذه الطريقة مع E_USER_ERROR بدلا من استخدام يموت ().

ob_start ();
require ($filename);
$html = ob_get_clean ();

ما سبق سوف تشمل أيضا ملف وتعطيك محتوياته كسلسلة.

تحذير: سوف التخندق المخزن المؤقت أيضا تخلي أي رسائل خطأ القيت، مما يجعل التصحيح (يحتمل) كابوس

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

إذا كنت تفعل هذا لأنك السماح للمستخدمين تحميل البرامج النصية PHP، اسمحوا لي ان اقول لكم ان هذا هو فكرة سيئة للغاية.

في كلتا الحالتين، تفعل ما تسألون عن يضيف 0 الأمن.

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