2010-09-18 2 views
1

Каков наилучший способ с точки зрения безопасности передать строку функции. Я знаю, что могу использовать глобальные переменные, сессию и строку функций. Как функция test ($ string). Какой лучший подход? Если кто-нибудь знает, пожалуйста, дайте мне знать.Лучший способ передать строку в функцию?

Я пытаюсь написать что-то вроде этого, например:

$url = 'http://domain.com/'; 

function test() { 
    echo $url; 
} 

Но если это возможно, не используя глобалам или в функции строк. Как описано выше.

Возможно, я мог бы использовать определение и определение?

+0

Я не понимаю, что вы имеете в виду. Откуда взялась строка? Как насчет 'function test ($ url) {echo $ url; } '? –

+0

@ codaddict, спасибо за редактирование моего сообщения Я был слепым и не видел эту кнопку кода. – EMC

+0

@ Пекка, я понял, что приятель. Теперь я использую определение. – EMC

ответ

0

У меня есть ребята, я использовал определение. Вот пример:

define('URL', 'http://domain.com/'); 

function test() { 
    echo URL; 
} 

Но если вы кто-либо другой знаете другие способы, ответьте.

+0

Просто сделал что-то вроде этого define ('XML', simple_xml_load ('file.xml')); не работает lol Это было бы неплохо. – EMC

+1

Обычный способ передачи строки функции - это использовать параметр. Что именно ты пытаешься сделать? –

0

Как ни странно, я думаю, что если вы задаете чисто с точки зрения безопасности, я бы сказал, что использование глобальных переменных для передачи данных в функции лучше.

"Woah! Вы умный?" Я слышал, вы спрашиваете?

Это как идея отменить ремни безопасности, вместо этого вместо этого фиксировать резкий шестидюймовый шип на всех рулевых колесах. Это изменило бы ваше поведение вождения, не так ли? Вы станете самым безопасным в мире водителем на ночь!

Итак, если вы заставили себя использовать глобальные параметры в качестве параметров, вы должны убедиться в том, что ваша функция сделала такую ​​же проверку безопасности на этих данных, насколько вы не могли убедиться, что ваш звонящий позаботился об этом.

Конечно, как и шип рулевого колеса, это совершенно смехотворное предложение. В реальном мире вы используете параметры функции, где это возможно: проще в тестировании, проще читать, разрешать рекурсивные вызовы и т. Д.. Более подход OO может заключаться в использовании класса, который берет необработанные данные в своем конструкторе и помещает проверенные данные в его переменные-члены для других методов класса.

Пусть downvotes начинается :)

+0

Я думал, что globals более не защищен :) Используется ли определение достаточно хорошо для обеспечения безопасности? – EMC

+0

У меня был язык в щеке, вопрос немного глупый. Неважно, какой метод вы используете, вам все равно нужно проверить данные. –

+0

@ Пол Диксон, я не согласен :-) Да, вам нужно всегда проверять данные, которые я делаю. Но есть лучшие подходы. – EMC

0

Хорошо, вот еще один ответ я просто понял, что достаточно хорошо для меня.

define('XML', 'file.xml'); 

затем в функции сделать soemthing как этот

function test() 
    $xml = simplexml_load_file(XML); 
} 

Таким образом, по крайней мере, мне не нужно менять «file.xml» имя, если мне нужно в каждой функции :-)

+0

Почему у вас есть несколько функций, которые все читают один и тот же файл? Одной функции достаточно, если вам нужен xml в нескольких местах, затем вызовите эту функцию и используйте результат - не нужно вообще хранить имя файла в некоторой константе. –

0

Попробуйте лет использовать $ GLOBALS массив

function test() { 
    echo $GLOBALS['url']; 
}

или

function test() { 
    global $url; 
    echo $url; 
}

Смежные вопросы