Запись в массив $_POST, $_GET

NEK

Guest
Автор оригинала: Jik
а если поставить вопрос по другому... зачем лезть в $_POST когда можно сделать на его базе новый и творить с ним что угодно...? ($newPost = $_POST) вопросы читабельности и логичности мне кажутся очень важными.
Может я чегото не понимаю какого ... Вы все мучаетесь ведь , что $_GET, что $_POST елементі масива $GLOBALS
 

young

Новичок
:)
А что идея! Зачем все остальные переменные, если можно обойтись всего-лишь одной переменной $GLOBALS! Супер!

А теперь попробуй сам найти хотя бы три минуса в таком подходе!
 

SeazoN

Guest
минус номер 1
если существуют одноимённые переменные
$_GET['name'] = 1;
$_POST['name'] = 2;
$_FILES['name'] = 3
$_COOKIE['name'] = 4;
$_SESSION['name'] = 5;
$_SERVER['name'] = 6;
$_ENV['name'] = 7;

где гарантия что ты получишь в $GLOBALS именно то что хотел?
Лично мне всегда нравился $_REQUEST
 

trent

Developer
PHP:
$post["name"] = "";
$post["mail"] = "";
$post["message"] = "";
$get["lalala"] = "";

if (isset($_POST)) {
	foreach ($post as $key => $value) {
		if (!isset($_POST[$key])) {
			$_POST[$key] = $post[$key];
		} else {
			$post[$key] = $_POST[$key];
		}
	}
}
if (isset($_GET)) {
	foreach ($get as $key => $value) {
		if (!isset($_GET[$key])) {
			$_GET[$key] = $get[$key];
		} else {
			$get[$key] = $_GET[$key];
		}
	}
}
я все-таки за то, чтобы $_POST, $_GET был r/o

ну а дальше использовать думаю не сложно будет
плюс в том, что $post[key] всегда будет заполнен, например значением по умолчанию
 

Андрей М.

Guest
вернусь немножко к началу дискуссии, хорошо?

Я против readOnly: например, я использую скриптик для админского интерфейса, реализующий свой собственный уникальный ;-) аплоад файлов через ActiveX. Проблема только в том, что на сервер отсылается XML примерно такого вида:
PHP:
<?xml version="1.0" ?>
<root>
   <file>
       <name>имя.файла</name>
       <content>здесь собственно base64-encoded содержимое файла </content>
   </file>
</root>
упаковывать все это дело в XML надо, чтобы не побились бинарные файлы, это же windows...

Логично потом на сервере все это разобрать отдельным скриптом, распихать все в массив $_FILES, и инклюдить потом этот скрипт, когда надо, что-то типа:
PHP:
require_once("bestupload.php");
//и дальше спокойно работаем с $_FILES как обычно
 

Absurd

Guest
Наверное многим приходится время от времени заставлять работать чужой корявый код, ожидающий наличия чего-то в post или get переменных.

дык нахфиг лишние сложности?
 

_RVK_

Новичок
Автор оригинала: Absurd
Наверное многим приходится время от времени заставлять работать чужой корявый код, ожидающий наличия чего-то в post или get переменных.

дык нахфиг лишние сложности?
Вот тут ИМХО стоит перепесать чужой корявый код, и сделать его не корявым и возможно уже не чужим а не ставить такие-же корявые заплатки.
P.S. Хотя я не сторонник Read Only
 

rihad

Guest
Может я чегото не понимаю какого ... Вы все мучаетесь ведь , что $_GET, что $_POST елементі масива $GLOBALS
Действительно, но они чуть больше чем просто глобальные, они - суперглобальные. Это значит вот что:

имея foo.php:
PHP:
<?php
	echo $_GET["foo"] . "<br>\n";
	echo $GLOBALS["_GET"]["foo"] . "<br>\n";

?>
http://localhost/foo.php?foo=bar&_GET[foo]=baz

выдаст bar оба раза, и никогда baz, даже если register_globals=On.

Но супеглобальные переменные не так уж обалденны по нескольким причинам:
1) Можно сделать абсолютно смешное и необратимое unset($_GET);
2) Можно "затенить" $_GET при вызове функции (а-ля dynamic scope (local) в перле)
PHP:
	$save = $_GET;
	$_GET = array("foo" => 69);
	foo();
	$_GET = $save;
	foo();
3) $_GET не константна, можно изменять значения.
4) Нельзя создавать их самому :)
 

Rynor

stay hungry
пишу и в GET и в POST с целью почикать всякие ламерские кавычки, теги и т.д. - любит народ так "ломать"
а оригинальный GET если мне нужен - так он в логах
PHP я даю уже зацензуренный вариант
хрен с мусором возиться весь скрипт?
 

trent

Developer
>пишу и в GET и в POST с целью почикать всякие ламерские кавычки, теги и т.д. - любит народ так "ломать"

хех, кто мешает тебе присваивать другой переменной значение гета...
чикать, то что прислал пользователь не есть хорошо, просто надо или вернуть ему обратно с ошибкой, а теги надо не вырезать, или преобразовывать, т.к в текст может быть и таким (он < любит яблоки и > груши), вырежется текст "< любит яблоки и >".. хотя это зависит от задачи.

>а оригинальный GET если мне нужен - так он в логах

будешь из логов доставать, если понадобится?

>PHP я даю уже зацензуренный вариант

ты поставил враппер между apache и php? хех :)
 

netdog

net @
>я все-таки за то, чтобы $_POST, $_GET был r/o

Незнаю как про пост с гетом, но точно я за r/o в $_SERVER +)
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Автор оригинала: Net Dog
>я все-таки за то, чтобы $_POST, $_GET был r/o

Незнаю как про пост с гетом, но точно я за r/o в $_SERVER +)
Нет, нет, и нет!
Я как-то раз переделывал свой скрипт, так вот, он везде использовал $_SERVER['REQUEST_URI'] и прочие.
Подделкой $_SERVER мне удалось его поиметь за 10 минут так, как я его хотел!
Без этого, я бы этим занимался часа два, а потом еще неделю вылезали бы глюки.
 

young

Новичок
Подделкой $_SERVER мне удалось его поиметь за 10 минут так, как я его хотел!
Без этого, я бы этим занимался часа два, а потом еще неделю вылезали бы глюки.
Это свидетельствует только о "кривом" написании скрипта. Возможно, это следствие того, что php слишком много позволяет
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Автор оригинала: young
Это свидетельствует только о "кривом" написании скрипта. Возможно, это следствие того, что php слишком много позволяет
Ну да, скрипт кривой. Он писАлся в спешке, причем слеплялся из 4 других скриптов, написанных тоже в спешке.
Я к тому, что ситуации разные бывают.
 

young

Новичок
Это просто стиль программирования.

Никто тебе не мешает в конфиге прописать
$_MY_SERVER = $_SERVER;
И во всех дальнейших скриптах править его как вздумается, и обращаться только к нему.

А теперь представь, что после тебя надо кому-то его модифицировать? Он будет очень долго думать, почему $_SERVER не отображает реальных данных.

Ну да, скрипт кривой. Он писАлся в спешке
Согласен, есть такая проблема. Писать в спешке - зло. Всем, кто просит/заставляет так делать - надо объяснять, что потом это им обойдется дороже, чем написать его нормально с самого начала.
 

_RVK_

Новичок
Он будет очень долго думать, почему $_SERVER не отображает реальных данных.
А коментарии для кого придуманы? Если не использовать коментарии то этот кто-то будет гораздо больше времени ломать голову и над другими участками кода. Тем более что $_SERVER['что-то']=чему-то однозначно говорит о том что тут чего-то изменили, и скарее всего это причина того что в $_SERVER не те данные...
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Никто тебе не мешает в конфиге прописать
$_MY_SERVER = $_SERVER;
И во всех дальнейших скриптах править его как вздумается, и обращаться только к нему.
Это конечно хорошо, но только в том случае, если заранее предусмотрено. А если нет?
 
Сверху