Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Проблема с глобальными переменными  (Прочитано 47301 раз)
0 Пользователей и 12 Гостей смотрят эту тему.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #30 : 21-07-2005 22:55 » 

Пишу этот пост дабы мсключить взаимонепонимание.
1) мне необходимо подгружать файл используя относительный адрес, т.к. в случае использования абсолютного адреса в подключаемом файле глобальные переменные не видны (если есть по этому пункту разногласия обязательно пишите)
2)я не могу подключать файл через include() и reqiure() используя относительный адрес, т.к. я в адресе еще хочу передать переменную (выглядит примерно так include("sp_csv.php?product=special"); но это не работает, т.к. адрес должен быть абсолютным судя по мануала с php.net). (если есть по этому пункту разногласия обязательно пишите).
3)Всвязи с тем, что я не знаю других способов подключения файлов я в замешательстве. Может есть другие способы подключения, например я попробовал делать так
Код:
<script language="JavaScript"> document.write("<iframe src='sp_csv.php?product=special' name='medbaza' width='150' height='170' frameborder='no' scrolling='no'></iframe>"); </script>

Значение переменной передается, ошибки не выскакиваюм, но в этом случае я не вижу глобальных переменных, т.е. способ опят таки не подходит. Я уже много что попробовал, идеи пока кончились.
« Последнее редактирование: 15-12-2007 20:26 от Алексей1153++ » Записан

ещё один вопрос ...
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #31 : 22-07-2005 06:01 » 

Прошу прощения за то что вклинюсь немного в вашу дискуссию.
nikedeforest, как говорится, "нахрена козе баян ?"
Что то я тебя не пойму. Запарил ты со своими инклудами. Почему бы не сделать всё по другому ? Например функциями ?
Что вообще делает такого твой sp_csv.php что его необходиме инклудить множество раз (ты через пару месяцев сам в своих же инклудах заблудишся) ?  Изложи нормально задачу, а мы подумаем как это проще всего реализовать.
ЗЫ :
Цитата
Я подключаю файл, при этом передаю ему параметр вот как я делаю
Код:
include ("www.что-нибудь.com/sp_csv.php?product=special");
А вот так делать вообще не рекомендую. А также всякие там fopen("http://www.bla.bla").
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 22-07-2005 07:36 » 

Цитата
Что вообще делает такого твой sp_csv.php что его необходиме инклудить множество раз (ты через пару месяцев сам в своих же инклудах заблудишся) ?  Изложи нормально задачу, а мы подумаем как это проще всего реализовать.
Множесчтво раз он инклудиться, по той простой причине, что этот файл выводит фотографию и кратакое описание товара, плюсь ссылка "подробнее" (сами понимаете для чего). В файле происходит работа с БД типа csv. Инклудиться множество раз, по той причине, что на главной странице располагаются фотографии товаров (не всех, выборочно). Вот и все, и ничего особенного.
Цитата
Запарил ты со своими инклудами. Почему бы не сделать всё по другому ? Например функциями ?
Да откуда я знал, что это предоставит такие трудности. Сначала вообще был гемор с глобальными переменнными и очень долго я не мог врубиться в чем дело, как врубился, так появился другой гемор. На счет функции  у меня мельтишила идея, но я ее старательно отгонял, пытаясь найти выход через инклуд (интерес такой поганый взник, к тому же, работая над этим сайтом, я пытаюсь повысить свои маленькие знания по РНР).
Попробую через функцию, посмотрим.
Цитата
Я подключаю файл, при этом передаю ему параметр вот как я делаю

Код:
include ("www.что-нибудь.com/sp_csv.php?product=special");
А вот так делать вообще не рекомендую. А также всякие там fopen("http://www.bla.bla").
Почему? Вроде это документированная возможность.
Записан

ещё один вопрос ...
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #33 : 22-07-2005 08:33 » 

Множесчтво раз он инклудиться, по той простой причине, что этот файл выводит фотографию и кратакое описание товара, плюсь ссылка "подробнее" (сами понимаете для чего). В файле происходит работа с БД типа csv. Инклудиться множество раз, по той причине, что на главной странице располагаются фотографии товаров (не всех, выборочно). Вот и все, и ничего особенного.
Да откуда я знал, что это предоставит такие трудности. Сначала вообще был гемор с глобальными переменнными и очень долго я не мог врубиться в чем дело, как врубился, так появился другой гемор. На счет функции у меня мельтишила идея, но я ее старательно отгонял, пытаясь найти выход через инклуд (интерес такой поганый взник, к тому же, работая над этим сайтом, я пытаюсь повысить свои маленькие знания по РНР).
Попробую через функцию, посмотрим.
Да тут я только функцию и вижу Улыбаюсь
Почему? Вроде это документированная возможность.
Да, документированая, но админы в компании в которой я работаю, такую возможность как fopen(url) запретили. Сказали что это дыра в безопасности и открытая дорога для эксплойтов различных Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #34 : 22-07-2005 08:34 » 

Кстати, насчёт твоих глобальных переменных, а почему бы не хранить эти значения например в сессии ?
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 22-07-2005 11:37 » 

Цитата
Кстати, насчёт твоих глобальных переменных, а почему бы не хранить эти значения например в сессии ?
если ты емеешь ввиду массив $_SESSION[], то я по началу там и пытался хранить, но столкнулся с тем, что не вижу переменных и перешел на $GLOBALS[], потом и с $GLOBALS я столкнулся с тем же самым, но стал уже копать в эту сторону.
По поводу $_SESSION[] меня еще смутило, что как я понял из мануала если я занес туда значение в скрипте, то сразу же не могу пользоваться этими значениями, пока странмица не будет перезагружена (т.е. по сути F5 надо нажать). Я не знаю правильно я понял или нет, просвяти меня в этом вопросе.
Цитата
Да тут я только функцию и вижу 
Ну раз другого выхода нет и раз уж я так всех здесь задолбал с этими инклудами Ага, то буду делать через функцию, посмотрим, что получиться.
Записан

ещё один вопрос ...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #36 : 22-07-2005 15:21 » 

$_SESSION - обычный суперглобальный массив - никаких шаманских штучек не предусмотрено, разве что одна: автоматическое сохранение и востановление при запуске и заершении скрипта. Не забудь в начале скрипта поставить session_start().
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #37 : 22-07-2005 21:00 » new

Как правильно написать следующее
Код:
print $GLOBALS['splist'][$i]."|";
Так не выводится, хотя значение там есть, проверено.
зы:Ребята, подождите часов 20 (для поспать,  поесть и потестировать) и я вам кажется напишу, что я недавно крупно облажался. Но пока все не проверю не напишу Ага.
« Последнее редактирование: 15-12-2007 20:27 от Алексей1153++ » Записан

ещё один вопрос ...
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #38 : 23-07-2005 10:15 » 

Как правильно написать следующее
Код:
print $GLOBALS['splist'][$i]."|";
Так не выводится, хотя значение там есть, проверено.
Ты уверен что там значение еть ?
Сделай так :
Код:
print_r($GLOBALS);
print "<hr>";
print_r($GLOBALS['splist']); //Особенно интересует что ты здесь на выводе получиш
print "<hr>";
print "\$i variable is : " . $i;
print "<hr>";
print $GLOBALS['splist'][$i]."|";
Тогда и станет понятно тебе (я надеюсь), в чём твоя ошибка.
« Последнее редактирование: 15-12-2007 20:28 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #39 : 23-07-2005 18:10 » 

Когда я пишу так
Код:
for($i=0;$i<count($GLOBALS['splist']);$i++)
{
$temp=$GLOBALS['splist'][$i];
print $temp."|";
}
то выводиться то что и должно выводиться, когда делаю так
Код:
for($i=0;$i<count($GLOBALS['splist']);$i++)
print $GLOBALS['splist'][$i]."|";
то кроме "|" ничего не выводиться.
зы:  По поводу ошибки пока молчу, до тех пор, пока во всем не удостоверюсь, но кажется будет смешно.
Твой способ попробую, о результате напишу
« Последнее редактирование: 15-12-2007 20:29 от Алексей1153++ » Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #40 : 26-07-2005 09:16 » 

По поводу ошибки, проведено исследование и  вынесен (мною Улыбаюсь ) вердикт, что проблема сложившаяся здесь, была следствием совокупности ошибок (а не одной глупой, как я сначала думал). Все эти ошибки вызваны, моей неграмотнотью в РНР, о чем я дико сожалею, но этого и следовало ожидать.
Записан

ещё один вопрос ...
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #41 : 26-07-2005 11:13 » 

Ну вот и чудненько что разобрался Улыбаюсь А по оводу неграмотности, так это дело наживное. Самая распространённая ошибка - это элементарная НЕВНИМАТЕЛЬНОСТЬ Ага
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #42 : 11-08-2005 14:05 » 

Все таки не избежать этого вопроса. Когда я пишу так
Код:
include("http://www.blabla.ru");
То в итоге, в файле в котором я так сделаль я не могу обратиться нормально к переменным ("нормально"-это в смысле если бы я этот файл подключал бы используя относительный адрес). Я пробовал обратиться к переменным таким образом
Код:
$GLOBALS['<имя переменной>'];
Но и так у меня ничего не вышло. Внимание вопрос : можно ли ввобще обратиться к переменным файла, который подключается с использованием абсолютной адресации. Если можно, то как?
зы: предчувствую вопрос, типа : "А зачем через абсолютную?". Я бы и не загонялся, но это требование суппорта хостинга, для того, чтобы скрипт запускался автоматически по таймеру.
« Последнее редактирование: 15-12-2007 20:30 от Алексей1153++ » Записан

ещё один вопрос ...
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #43 : 11-08-2005 19:56 » 

Хммм...
совершенно я не понял проблемы. Отвечу на часть которую понял. Другую часть попробуй по другому формулировать.
Все таки не избежать этого вопроса. Когда я пишу так
Код:
include("http://www.blabla.ru");
То в итоге, в файле в котором я так сделаль я не могу обратиться нормально к переменным ("нормально"-это в смысле если бы я этот файл подключал бы используя относительный адрес). Я пробовал обратиться к переменным таким образом
Код:
$GLOBALS['<имя переменной>'];
Но и так у меня ничего не вышло.
А тут ты и не получаеш никакого скрипта. Если я не ошибаюь, то при попытке сделать include("http://www.blabla.ru/bla.php"); ты инклудиш не пхп сорс файла bla.php, а вего лиш хтмл, который тебе отдаёт сервер с http://www.blabla.ru/ . Т.е. перед тем как его тебе отдать, сервер предварительно его парсит и отдаёт тебе уже результат.
« Последнее редактирование: 15-12-2007 20:31 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #44 : 12-08-2005 11:42 » 

Т.е. получается, что таким образом конфигурационные файлы (мои самодельные) не подключаются ввобще?
Тогда даже не знаю как понять совет суппорта: "А Вы измените в инклуде относительный адрес на абсолютный, а то наш кронтаб не знает каккая дирректория является  текущей". Ихние проблемы я понимаю, но что делать со своими? Жаль. Интересно, а прокатит, если использовать функцию (название не помню, что-то типа set_current_...) которая назначает текущий каталог? Хотя там по дефолту стоят вроде как нормальные значения. Ну это я уже буду думать сам, Мороз спасибо, на самую суть моего вопроса ты ответил.
Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #45 : 12-08-2005 12:02 » 

Название функции вспомнил-set_include_path()
Записан

ещё один вопрос ...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #46 : 12-08-2005 12:16 » 

nikedeforest, ты путаешь понятия: абсолютный путь к локальному файлу и URL - это разные вещи.
Абсолютный путь к файлу выглядит так:
а) для винды: диск:\полный_путь\имя_файла
б) для *nix: /полный_путь/имя_файла

URL - "универсальное расположение ресурса" - файлы туда могут попасть только так:
а) винда: file://диск:/путь/имя
б) *nix: file:///путь/имя
Только в твоем случае это не нужно - тебе нужен абсолютный путь к локальному файлу.

На всякий случай: запись типа include("file.php") задает относительный путь, а include("/var/www/html/file.php") - абсолютный.

« Последнее редактирование: 12-08-2005 12:19 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #47 : 12-08-2005 13:06 » 

Бррр, перевариваю.
Но тогда уточню (я это уточнял у суппорта), они имеют ввиду следующее - изменить
include("config.php"); на include("http://www.blabla.ru/config.php"); Я так делал, врезультате чего терял возможность обращение к переменным объявленным в файле config.php.
Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #48 : 12-08-2005 13:17 » 

Кстати, суппорт щас ответил, что set_include_path() вполне может спасти ситуацию, что есть ГУД Улыбаюсь.
Записан

ещё один вопрос ...
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines