Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Меняем $_GET/$_POST

714
21 ноября 2008 года
clgs
226 / / 29.10.2008
Доброе время суток, господа.
Можно ли изменить (дописать) $_GET/$_POST в коде программы?
и/или
Создать в функции переменную, например, $_MyVar которая бы была видна во всей программе?
44K
21 ноября 2008 года
first_x
5 / / 21.11.2008
$_MyVar она и так будет видна во всей программе, в чем суть вообще?
714
21 ноября 2008 года
clgs
226 / / 29.10.2008
Цитата: first_x
$_MyVar она и так будет видна во всей программе, в чем суть вообще?



ну к примеру

 
Код:
function _getmyvar($q) {
   $_myvar=$q
}

_getmyvar('проверка');

echo $_myvar;

Выдаст ошибку.
44K
21 ноября 2008 года
first_x
5 / / 21.11.2008
ну еще бы, если ты ее неверно используешь.

function _getmyvar($q) {
global $_myvar;
$_myvar=$q;
}

_getmyvar('проверка');
echo $_myvar;
714
21 ноября 2008 года
clgs
226 / / 29.10.2008
Цитата: first_x
ну еще бы, если ты ее неверно используешь.


хорошо.
давай так, ближе к сетуации.

function.php

 
Код:
function _getmyvar($q) {
   $_myvar=$q
}


file.php
 
Код:
echo $_myvar;


index.php
 
Код:
include_once('function.php');
_getmyvar('проверка');
include_once('file.php');


не пашет :)
244
21 ноября 2008 года
UAS
2.0K / / 19.07.2006
а че ему пахать, если переменная раньше не определена??
Код:
$_myvar = "";

function _getmyvar($q) {  
   
    $GLOBALS["_myvar"]=$q;
    // или
    global $_myvar;
    $_myvar=$q;
}

_getmyvar('проверка');
include_once('file.php');
44K
21 ноября 2008 года
first_x
5 / / 21.11.2008
а ты не заметил, что я тебе там дописал? :)
44K
21 ноября 2008 года
first_x
5 / / 21.11.2008
Цитата:
а че ему пахать, если переменная раньше не определена??



да ее не "обязательно", а "желательно" объявлять раньше. Просто он опять не так написал, как ему объяснили.

563
21 ноября 2008 года
MrLinker
249 / / 17.09.2006
Цитата:
Можно ли изменить (дописать) $_GET/$_POST в коде программы?

Можно. Никто не мешает сделать так:

 
Код:
$_GET['mama'] = 'What did you say about my mama?';

function cool()
{
    echo $_GET['mama'];
}

cool();

Цитата:
Создать в функции переменную, например, $_MyVar которая бы была видна во всей программе?


Опять же, какие проблемы:

 
Код:
function Cool()
{
    global $mama;
    $mama = 'What did you say about my mama?';
}

Cool();
echo $mama;

Прямые ответы на прямые вопросы...
Цитата:
global $_myvar;


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

13
21 ноября 2008 года
RussianSpy
3.0K / / 04.07.2006
Ужас какой... Люди даже не разобрались с элементарнейшими азами. Просто ужас.
714
21 ноября 2008 года
clgs
226 / / 29.10.2008
Цитата: MrLinker
Можно. Никто не мешает сделать так:
 
Код:
$_GET['mama'] = 'What did you say about my mama?';
...

...


вот! я пробывал такой вариант, но меня мягко послали, т.к. $_POST и $_GET в программе НЕ МЕНЯЮТСЯ.

[QUOTE=UAS]
а че ему пахать, если переменная раньше не определена??
[/QUOTE]
возможно, но тогда массив, имя переменной объявляется в функции

[QUOTE=first_x]
Просто он опять не так написал, как ему объяснили.
[/QUOTE]
просто забыл написать, он от этого суть не меняется.

[QUOTE=RussianSpy]
Ужас какой... Люди даже не разобрались с элементарнейшими азами. Просто ужас.
[/QUOTE]
так дай ссылку! какой толк от твоего поста?

563
21 ноября 2008 года
MrLinker
249 / / 17.09.2006
Честно, не понимаю, что происходит в этой теме? :confused:
Цитата:
вот! я пробывал такой вариант, но меня мягко послали, т.к. $_POST и $_GET в программе НЕ МЕНЯЮТСЯ.


Кто тебя послал? Кто сказал что не меняются? Возьми, выполни этот код и сделай вывод.

244
22 ноября 2008 года
UAS
2.0K / / 19.07.2006
Цитата: clgs
вот! я пробывал такой вариант, но меня мягко послали, т.к. $_POST и $_GET в программе НЕ МЕНЯЮТСЯ.


Все там меняется, и довольно прекрасно.

Цитата: clgs
возможно, но тогда массив, имя переменной объявляется в функции


в смысле??
Пишите ТАК, чтобы было понятно и удобно НЕ ВАМ, а ДРУГИМ программистам, которые будут использвать, возможно, ВАШ код.
Это полный идиотизм определить глобальную переменную в функции (причем ранее она не была объявлена), а потом далее её в коде использовать (если это функция не из разряда __set()). Т.е. вот вдруг откуда не возьмись взяла и появилась переменная. Так что все равно выбирайте где-то место в начале программы, где будете определять ваши глобальные переменные - так в разы удобнее и понятнее + ошибок не будет.

Цитата: clgs
так дай ссылку! какой толк от твоего поста?


php.net - самый лучший учебник + тонна статей и форумов, которых в инете тоннами

714
22 ноября 2008 года
clgs
226 / / 29.10.2008
я использую понятный урл для человека (я думаю всем понятно о чем реч), для того чтоб некоторые ссылки формы работали нормально, я использую http://..../name:value/ следовательно нужно както преобразовать в $name='value'; хотел а $_GET['name']='value'; но при таком раскладе переменная $_GET['name'] не выдает ошибку и не пишит содержимое. теперь думаю использовать
 
Код:
global $_MyVar=array();
function _SetMyVar() {
   ...
   $_MyVar[$name]=$value;
}
echo $_MyVar[$name];
всё содержится в разных файлах. но хотелось бы использовать всетаки $_GET. может что-то с настройками php/apache?

надеюсь теперь будет всем понятно=)
244
22 ноября 2008 года
UAS
2.0K / / 19.07.2006
Нет. Мне ничего не понятно. Какой name:value?? Как $_GET преобразовать к его виду? Может все таки приведете пример формы, которой хотите отправить; пример САМОГО кода, который хочет преобразовать в то, что вам надо; а так же пример того, что пытаетесь преобразовать.

Зачем преобразовывать данные формы? Или вы хотите прямо в строке браузера этот $_GET поменять? Ну т.е. чтобы при отправке формы данные в строке адреса были ЧПУшные? Тогда это только обработчики форм использовать надо (JavaScript). А для переработки данных из ЧПУ в стандартный QUERY_STRING используется mod_rewrite на стороне сервера.
13
22 ноября 2008 года
RussianSpy
3.0K / / 04.07.2006
Цитата: clgs
так дай ссылку! какой толк от твоего поста?


http://www.bhv.ru/books/book.php?id=6643

Покупаешь и читаешь с первых же страниц. Идиотские идеи про назначение переменных в $_GET и $_POST забываем навсегда.

Если вам потребовалось что-либо записать в один из этих массивов - значит программа написана неверно, идеи плохие и пора снова взять в руки книгу и читать с самых азов.

714
22 ноября 2008 года
clgs
226 / / 29.10.2008
мда... mod_rewrite я так использую...
давай разабьём по шагам:

1. http://.../qwe:rwe/sdf:dfgf/dfg:ert/

2. mod_rewrite перенаправляет на http://.../index.php?url=qwe:rwe/sdf:dfgf/dfg:ert

3. обрабатываем переменную $_GET['url'] и получаем следующий вид:
3.1. $qwe='rwe';
3.2. $sdf='dfgf';
3.3. $dfg='ert';

третий шаг выполняет функция _SetMyVar();

ну теперь то понятно?

на самом деле я уже имею представления (объявляю переменную $_MyVar=array(); далее в функции _SetMyVar() заполняю двумерный массив данными и исполюзую в программе) о решении данной проблемы, UAS спасибо за идею.

[QUOTE=UAS]Как $_GET преобразовать к его виду?[/QUOTE]
может ошибусь, пишу на память, без проверки
Код:
function _GetMySet() {
   global $_MyVar;
   if(!empty($_GET['url']) {
      $arr=explode('/',$_GET['url']);
      for($i=count($arr)-1; $i>=0; $i--) {
         if(strpos($arr[$i],':')) {
            $arr2=explode(':',$arr[$i]);
            $_MyVar[$arr2[0]]=@$arr2[1];
         }
      }
   }
}



[QUOTE=RussianSpy]Идиотские идеи про назначение переменных[/QUOTE]
почему же? с ними удобно работать, но у меня почемуто на работает =(
13
22 ноября 2008 года
RussianSpy
3.0K / / 04.07.2006
Цитата: clgs
почему же? с ними удобно работать, но у меня почемуто на работает =(



Гадить в штаны тоже удобно, но это не значит, что это правильно.

714
22 ноября 2008 года
clgs
226 / / 29.10.2008
RussianSpy, я смотрю ты крут, а ответить грамотным языком в чем проблема хранения данных в этих переменных, слабо?

да, чуть не забыл, может тебе и удобно гадить в штаны, но я предпочитаю и считаю более удобным сходить в сортир =)
13
22 ноября 2008 года
RussianSpy
3.0K / / 04.07.2006
Цитата: clgs
RussianSpy, я смотрю ты крут, а ответить грамотным языком в чем проблема хранения данных в этих переменных, слабо?

да, чуть не забыл, может тебе и удобно гадить в штаны, но я предпочитаю и считаю более удобным сходить в сортир =)



Я ведь не зря сказал читать книгу. А поскольку тебе проще спросить и разрывать мозг людей своими глупыми идеями, то я пойду у тебя на поводу и напишу тебе кусок кода.

Код:
class MySmallClass
{
   public $myVar1 = 0;
   public $myVar2 = 0;
   
   public $myStr = '';
   
   public $myArr1 = Array();
   
   function __construct()
   {
      $this->myVar1 = count($_GET);
   }


   public function CountMyShit()
   {
      if(isset($_GET['url']))
      {
         $this->myArr1 = explode('/', $_GET['url']);
         return true;
      }
      else return false;
   }
}


$obj = new MySmallClass;
var_dump($obj);

$obj->CountMyShit();
var_dump($obj);


Если запустить то получится "волшебство"! Ни тебе проблем с видимостью внутри класса, не нужны ни глобалы, ни ссылки на переменные, не нужно писать ничего в $_GET и в $_POST.
244
22 ноября 2008 года
UAS
2.0K / / 19.07.2006
RussianSpy, ахахахахахах :D Меня и так прет, так ещё как ты метод обозвал :D:D:D

2Топикстартер: а вы не грубите. Человек вам правильно говорит, надо книгу прочитать. Тем более опыт этого человека в тысячи раз больше вашего и в десятки больше моего)) Вам вот уже написали класс. А переделать его под тот код проблем не составляет
714
22 ноября 2008 года
clgs
226 / / 29.10.2008
RussianSpy, и в чем прикол этого класса? не вижу сходства и пременения ему для моего случая!.. Я вобщето уже отписался что нашел решение =)

UAS, Топикстартер? Раз так пошло дело, вы тогда топикзасератели, прошу не принимать близко к сердцу!.. Человек спросил конкретный вопрос и ожидает конкретный ответ! А не кучу кала в его сторону...

[COLOR="Red"]МОДЕРАТОРАМ: АВТОР НАШЕЛ ОТВЕТ НА ПОСТАВЛЕННЫЙ ВОПРОС, ПРОШУ ЗАКРЫТЬ ТЕМУ![/COLOR]
13
22 ноября 2008 года
RussianSpy
3.0K / / 04.07.2006
Если вы не понимаете как применить класс к поставленной задаче - опять же открывайте и читайте книгу.
244
22 ноября 2008 года
UAS
2.0K / / 19.07.2006
То, что вы написали, вы считаете конкретный вопрос? Я пока не попросил привести код и т.д. - мне кажется никому не было понятно че вы хотите и че у вас не работает. А по самому вопросу первому - то вам ответили сразу же и правильно ответили. Эт не наша проблема, если у вас руки из того места :D Так что нечего грубить, вас правильно отправили книгу учить
563
22 ноября 2008 года
MrLinker
249 / / 17.09.2006
Господа топикзасератели!
Ведь может, мы топикстартеру не ту книжку засоветовали? :D

P.S. Давайте все себя проверим методом CountMyShit()?
13
22 ноября 2008 года
RussianSpy
3.0K / / 04.07.2006
Книжку именно ту. Это лучшая из всех книг по РНР на русском языке что я видел (а видел я их немало).

Просто топикстартер любит быдлокод. Собственно его "решение" как раз таким и является.
563
22 ноября 2008 года
MrLinker
249 / / 17.09.2006
Цитата:
Книжку именно ту


Да я же не спорю.
Это юмор такой...
Может ему просто успокаивающую литературу почитать?

13
22 ноября 2008 года
RussianSpy
3.0K / / 04.07.2006
Ну тут же вроде как форум программистов, а не специалистов по медитации))))

Автор темы уже нашел решение своей надуманной проблемы в том быдло-коде, что он привел. Спасибо UAS за поддержку. Всем также спасибо. Я умываю руки. )
92
24 ноября 2008 года
Тень Пса
2.2K / / 19.10.2006
пц... а что за мода опять пошла срать в сторону отвечающих?... типа "а ты крут", "а тебе слабо?"... это фаза луны такая нынче?... :\

имхо, банить за первое такое сообщение, чтобы неповадно было :) а то смари какие мы нежные на topicstarter обиделись :)
714
27 ноября 2008 года
clgs
226 / / 29.10.2008
вот наткнулся на суперглобальные переменные а вот существует ли способ объявления оных?
714
28 ноября 2008 года
clgs
226 / / 29.10.2008
После установки PHP v.5.2.4 стало возможно изменение суперглобальных переменных.
В старой версии (v.4.4.0) не получалось.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог