Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объединение $_GET['variable'] и $_POST['variable, как? 
:(
    Опции темы
Wowa
  Дата 24.5.2003, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Как объединенить $_GET['variable'] и $_POST['variable'] ? Чтобы не различать в коде программы POST и GET, т.е. чтобы в самом начале программы определить, что и как и больше не заморачиваться с различием.

register_globals - OFF.
PM WWW   Вверх
Master
Дата 26.5.2003, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



foreach($_REQUEST as $k=>$v){
if(!@Isset($$k)) {
$$k=$v;
global $$k;
}
}


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Roland
Дата 29.5.2003, 11:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











extract($_GET);
extract($_POST);

И все переменные в глобале.

  Вверх
Wowa
Дата 30.5.2003, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата
extract($_GET);
extract($_POST);

И все переменные в глобале.

Зашибись smile.gif Так легко smile.gif
А есть ли какие-то негативные последствия примерения ?
PM WWW   Вверх
Wowa
Дата 31.5.2003, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



У меня программа состоит из множества функций. Не вызывать же мне в каждой функции

extract($_GET);
extract($_POST);


?
Значения теряются.
PM WWW   Вверх
Roland
Дата 31.5.2003, 10:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Хм. достаточно сделать extract один раз, а в функция[ переменные описывать как global
  Вверх
Wowa
Дата 31.5.2003, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата
Хм. достаточно сделать extract один раз, а в функция[ переменные описывать как global

ИМХО легче еще раз сделать extract, чем все переменные описывать, как global smile.gif
А при добавлении еще какой-то переменной - и ее придется в global пихать.
PM WWW   Вверх
Guest
Дата 2.6.2003, 09:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Admin @ 31.5.2003, 21:10)
ИМХО легче еще раз сделать extract, чем все переменные описывать, как global smile.gif

Ну это как кому нравится smile.gif Если конечно переменных много то тогда бузусловно smile.gif
  Вверх
Master
Дата 2.6.2003, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



а проще по моему register_globals включить.


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
IZ@TOP
Дата 2.6.2003, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Master Не знаю, я всегда пользуюсь чем то вроде -
// присваиваем $HTTP_*_VARS переменной покороче -
$PT = $HTTP_POST_VARS;
// Потом так ей и пользуюсь ...


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
arial
  Дата 2.6.2003, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

Репутация: 6
Всего: 7



Цитата(Iz @ 2.6.2003, 11:01)
Master Не знаю, я всегда пользуюсь чем то вроде -
// присваиваем $HTTP_*_VARS переменной покороче -
$PT = $HTTP_POST_VARS;
// Потом так ей и пользуюсь ...

$PT = &$HTTP_POST_VARS;
Тогда лучше так, память сэкономиш. wink.gif
Прошу прощения за оффтоп.


--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
Master
Дата 2.6.2003, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Цитата
ИМХО легче еще раз сделать extract, чем все переменные описывать, как global
А при добавлении еще какой-то переменной - и ее придется в global пихать.


к сведению:
Эта функция экспортирует из ассоциативного массива элементы, делая их глобальными переменными!

http://www.php.net/extract


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Wowa
Дата 2.6.2003, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата
к сведению:
Эта функция экспортирует из ассоциативного массива элементы, делая их глобальными переменными!

http://www.php.net/extract


Да, это ясно. Но если вызвать extract вне функции, то в функции переменные будут недоступны!
Получается, то extract надо вызывать в самом теле функции.
Так ведь, вроде?


Цитата
$PT = &$HTTP_POST_VARS;

А дальше, что?
PM WWW   Вверх
Roland
Дата 3.6.2003, 12:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Master @ 2.6.2003, 14:11)

к сведению:
Эта функция экспортирует из ассоциативного массива элементы, делая их глобальными переменными!

Неправда ваша smile.gif Функця extract действительно разворачивает ассоциативный массив, но
только в текущей области видимости, если говорить словами пхп - в текущей символьной таблице. Таким образом если написать код:

$a['var1']="value1";
$a['var2']="value2";


d();

echo $var1; ----- это ничего не выведет

function d()
{
global $a;
extract($a);

echo $var1; ------ тут мы увидим value1

}


переменные $var1,$var2 уничтожатся при выходе из функции d()
  Вверх
Master
Дата 3.6.2003, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Ты сам понял что написал?
Ты что считаеш что если в функции определить переменную глобальной её можно увидеть вне функции?

Это была цитата из справочника!!!

Это сообщение отредактировал(а) Master - 3.6.2003, 13:56


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Roland
Дата 3.6.2003, 18:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Master @ 3.6.2003, 13:55)
Ты сам понял что написал?
Ты что считаеш что если в функции определить переменную глобальной её можно увидеть вне функции?

Это была цитата из справочника!!!

Похоже ты чего-то не понял. Покажи мне хоть одну переменную, в приведенном мной коде,
которая объявляется в функции и используется на верхнем уровне.
Внимательнее читать надо.
А насчет справочника - специально для тебя покопался smile.gif


---CUT-----------------
(PHP 3>= 3.0.7, PHP 4 )

extract -- Import variables into the current symbol table from an array
Description
int extract ( array var_array [, int extract_type [, string prefix]])


This function is used to import variables from an array into the current symbol table. It takes an associative array var_array and treats keys as variable names and values as variable values. For each key/value pair it will create a variable in the current symbol table, subject to extract_type and prefix parameters.
---CUT-----------------

Найди тут хоть одно слово global smile.gif


  Вверх
arial
Дата 3.6.2003, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

Репутация: 6
Всего: 7



Master, где ваше обращение на ВЫ ;)


--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
Master
Дата 4.6.2003, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Я сейчас начну грязно материться!

extract
Экспорт элементов в переменные
void extract (array var_array[, int extract_type [, string prefix]])
Эта функция экспортирует из ассоциативного массива var_array элементы, делая их глобальными переменными. Индекс элемента используется как имя переменной, а значение элемента - как значение переменной (глобальные переменные - это элементы "символьной таблицы" - массива глобальных переменных $GLOBALS[], и функция extract() копирует элементы массива var_array в массив $GLOBALS[]).
Действие функции extract() .... дальше о наличии коллизий.

Код
<?php
$arr = array('name' => 'Master', 'email' => 'closed');
extract($arr);
print_r($GLOBALS);
?>



--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Master
Дата 4.6.2003, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Цитата(arial @ 3.6.2003, 22:06)
Master, где ваше обращение на ВЫ ;)

Сорри, вообче-то я на Вы с незнакомыми, но так получилось, весь день со всеми на Ты smile.gif


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Roland
Дата 4.6.2003, 11:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Master @ 4.6.2003, 09:43)
Я сейчас начну грязно материться!

extract
Экспорт элементов в переменные
void extract (array var_array[, int extract_type [, string prefix]])
Эта функция экспортирует из ассоциативного массива var_array элементы, делая их глобальными переменными. Индекс элемента используется как имя переменной, а значение элемента - как значение переменной (глобальные переменные - это элементы "символьной таблицы" - массива глобальных переменных $GLOBALS[], и функция extract() копирует элементы массива var_array в массив $GLOBALS[]).
Действие функции extract() .... дальше о наличии коллизий.

Код
<?php
$arr = array('name' => 'Master', 'email' => 'closed');
extract($arr);
print_r($GLOBALS);
?>

Не стоит материться. В этом справочнике не совсем верный перевод. smile.gif Если обратишь внимание на ангийский оригинал, то там написано current symbol table а не global symbol table.
Массив $GLOBALS содержит как раз информацию о всех глобальных переменных. Когда управление передается какой либо функции, создается символьная таблица переменных только для этой функции, чтобы перевести переменную из таблицы GLOBAL в текущую нужно описать ее внутри этой функции как gloabal $...
Я согласен с приведенным тобой примером, но если его немного модифицировать, вот так:

<?php
function test()
{
global $arr;
extract($arr);
}

$arr = array('name' => 'Master', 'email' => 'closed');
test();
print_r($GLOBALS);

?>

то переменны name и email будут отсутствовать в $GLOBALS, а массив $arr естественно останется на месте.

P.S. Я всегда был сторонником оригинальных документаций. Оказывается не зря.
  Вверх
Master
Дата 4.6.2003, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Ну естественно, чтобы в функции определить переменную надо её там опять глобалить. Так ведь всегда smile.gif

И все-таки в справочники верный перевод. Во всяком случае он меня никогда не подводил.


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Roland
Дата 4.6.2003, 14:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Master @ 4.6.2003, 12:51)
И все-таки в справочники верный перевод. Во всяком случае он меня никогда не подводил.

Извини, верю тому, что вижу. Пример с функцией не соответствует русскоязычному описанию smile.gif
  Вверх
Master
Дата 5.6.2003, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Я подозреваю, что этот спор не имеет истины и считаю что каждый из нас останется при своем мнении.
Пусть так и будет smile.gif


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Roland
Дата 5.6.2003, 10:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Дык это спор не ради пафоса и не ради утверждения свойе крутизны, а ради поиска единой истины smile.gif Я думаю эти мессаги интересно будет людям почитать. Предлагаю продолжить до установления единого мнения.
  Вверх
Master
Дата 5.6.2003, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Ну хорошо.
Я могу продолжить лишь тем, что с формальной точки зрения в книге написано все правильно, ведь переменные заносятся в массив $GLOBALS, так? а раз так то сформулировано все правильно.

Но ты тоже имееш полное право считать себя правым потому как в оффициальной документации на http://www.php.net/extract я такого не нашел.

Что тут ещё обсуждать?


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Roland
Дата 7.6.2003, 11:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Результат работы след. скрипта показывает наглядно, что переменные $name и $email не заносятся в массив $GLOBALS.


<?php

function test()
{
global $arr;
extract($arr);
print_r($GLOBALS);
}

$arr = array('name' => 'Master', 'email' => 'closed');
test();


?>
  Вверх
MuToGeN
Дата 9.6.2003, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Цитата
$PT = &$HTTP_POST_VARS;
А дальше, что?
Просто писанины меньше.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Unregistered
Дата 18.6.2003, 13:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











$method = $_SERVER["REQUEST_METHOD"];
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

$HTTP_VARS = $HTTP_GET_VARS;

if ($method == "POST")
{
$HTTP_VARS = $HTTP_POST_VARS;
}
else
{
$HTTP_VARS = $HTTP_GET_VARS;
};
//$action = $HTTP_VARS["action"];
//global $HTTP_VARS;

$id = $HTTP_VARS["id"];
  Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.