Можно ли присвоить значение переменной $_POST в PHP?
Например, я использую переменную $_POST для вставки данных в БД. Перед этим запросом у меня есть несколько тестов, и если они верны, я хочу настроить это (скрытое) значение $_POST.
Ex.
if($baby_dragon_eats_children){
$_POST['hidden_value'] = "grapes";
}
Может ли $_POST ['hidden_value'] присваиваться новое значение, а затем передаваться другой функции как $_POST и иметь доступ к новому $_POST ['hidden_value']?
Спасибо
$_ POST [ 'consolidate_answers']
- IF вы присваиваете значение $_POST, вы должны документировать очень четко, поскольку оно не является обычным и не считается "лучшей" практикой.
- IF у вас есть какие-либо расширения PHP, такие как Suhosin Patch... он может блокировать такие действия..
- Обработать свои собственные массивы, не зависеть от $_POST!
- ЕСЛИ нужно, сделайте копию $_POST и поработайте с этим.
Ответы
Ответ 1
Вы можете назначить значения $_POST
, но если вы это сделаете, вы должны четко документировать его с комментариями как в точке назначения, так и в более поздней точке доступа. Ручное манипулирование $_POST
может нарушить ожидания будущих программистов (в том числе ваши собственные) от того, что находится в суперглобале и откуда оно взялось.
Могут быть другие альтернативы, например:
$my_post = $_POST;
$my_post['hidden_value'] = 12345;
// In a function:
function func() {
// Emulate a superglobal
echo $GLOBALS['mypost']['hidden_value'];
}
Ответ 2
Может ли $_POST ['hidden_value'] присваиваться новое значение, а затем передаваться другой функции как $_POST и иметь доступ к новому $_POST ['hidden_value']?
Это может быть в обычном PHP.
Однако расширения, такие как Suhosin Patch, могут блокировать это.
Кроме того, он чувствует себя не так в общем. $_POST
предназначен для хранения необработанных входящих POST-данных - ничего другого. Его не следует изменять IMO.
Лучше всего было бы получить все данные, которые вы планируете вставлять в базу данных, в массив и выполнять манипуляции в этом массиве.
Ответ 3
Вы можете, он будет работать, но не делайте этого.
Создайте копию $_POST
, выполните свои тесты и измените это. Например.
$postdata = $_POST;
if ($postdata['somevalue'] != 'someothervalue') $postdata['newvalue'] = 'anothervalue';
// ...
Если вы манипулируете переменными, автоматически создаваемыми PHP, это, вероятно, вернется, чтобы преследовать вас позже, когда переменная не содержит данные, которые вы ожидаете от нее.
Ответ 4
Найдите альтернативу!
Переменная $_POST несет определенную ответственность. Не злоупотребляйте своим глобализмом.
Я бы сказал, что не злоупотребляйте глобализмом в любом случае, даже если это означает изменение дизайна, который у вас есть (или иметь в виду).
Но если вы решите не делать этого, подумайте о создании специального глобального реестра только для ваших нужд.
Не манипулируйте языковыми встроенными модулями.