[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не срабытывает if else
Vorchun
Доброго всем вермени суток.
Началось все с того что я поставил 3-й денвер.

раньше эта связка нормально работала
Код
<?
if ($id=="") {
include ("main.html");
}
else {
include ("$id.html");
}
?>

теперь, после установки 3-денвера с РНР-5
результат работы этого кода вот такой
Цитата
Warning: include(main.html) [function.include]: failed to open stream: No such file or directory in F:\home\mysite\www\main_body.tpl on line 15
Warning: include() [function.include]: Failed opening 'main.html' for inclusion (include_path='.;/usr/local/php5/PEAR') in F:\home\mysite\www\main_body.tpl on line 15

как не сложно догадаться 15-я строчка кода это:
Код
include ("main.html");

Помогите понять, что же изменилось, что раньше работающий код перестал вдруг работать?

Ps: я начал тестировать этот код на разных хостингах, и вот что я заметил.
на хостинге с
РНР Version 5.2.5 работает нормально
а на хостинге с
PHP Version 5.2.6 выдает выше приведенную ошибку

Объясните плз, где я не догоняю??? dumau.gif



Спустя 11 минут, 32 секунды (14.07.2008 - 19:58) Viking написал(а):
все эти файлы у тебя в F:\home\mysite\www\ находятся?

Спустя 13 минут, 57 секунд (14.07.2008 - 20:12) Vorchun написал(а):
Цитата(Viking @ 14.7.2008, 16:58) [snapback]43471[/snapback]
все эти файлы у тебя в F:\home\mysite\www\ находятся?

Да конечно.

как я писал ранее... все работало.
И гемор начался сразу же после смены версии Денвера и соответственно РНР.
Я бы не сильно парился (тестировал бы на хостинге), но у меня начались траблы уже на сайте который находится в интернете. Соответственно пора мне уже понять где у меня нестыковка, чтоб не сакать по хостингам со старыми версиями РНР, а просто один раз переписать код, чтоб рабтало везде. smile.gif

Спустя 15 минут, 22 секунды (14.07.2008 - 20:27) Ghost написал(а):
меня смущает 2-й warning..
(include_path='.;/usr/local/php5/PEAR')

Спустя 4 минуты, 35 секунд (14.07.2008 - 20:32) Vorchun написал(а):
Цитата(Ghost @ 14.7.2008, 17:27) [snapback]43473[/snapback]
меня смущает 2-й warning..

меня он тоже смутил и я сходил по адресу.
там настройки РНР. я новичек в РНР и не знаю что это значит. все что я смог сделать это:
коментировать и раскоментировать строки содержащие PEAR. смысла своих действий я объяснить не могу даже себе. просто пытался изменить хоть что-то и посмотреть на результат.

Но результата я не заметил. все как было так и осталось...

Спустя 1 минута, 30 секунд (14.07.2008 - 20:33) Viking написал(а):
интересно...
по идее отличия в версиях как раз могут быть в ужесточении безопасности в топ числе и по отношению к инклюдам, но у меня тоже 5.2.6 и все нормально работает, хотя safe_mode вроде особо не портил...
наверное тут еще что-то должно быть...
ты ведь chdir перед этим не делал?

Спустя 3 минуты, 36 секунд (14.07.2008 - 20:37) Viking написал(а):
Цитата(Ghost @ 14.7.2008, 21:27) [snapback]43473[/snapback]
меня смущает 2-й warning..
(include_path='.;/usr/local/php5/PEAR')

а что здесь странного?
Warning: include(): Failed opening 'blah' for inclusion (include_path='.:./lib:/usr/share/php5/PEAR:/mnt/work/work/code/phphost/lib:/usr/local/lib/php/Smarty-2.6.19') in /mnt/work/work/code/phphost/practice/test/test.php on line 2
вот у меня выдает когда файл указан неправильно
а вот [function.include]: нет, похоже тип ошибки другой, но что это значит?

Спустя 11 минут, 51 секунда (14.07.2008 - 20:49) Vorchun написал(а):
Цитата(Viking @ 14.7.2008, 17:33) [snapback]43476[/snapback]
ты ведь chdir перед этим не делал?

Сорри за нубизм, но я не знаю что это значит...
Максимум что я могу предположить, что это означает смену директории.
Я сменил денвер фатально, к своему сожалению... unsure.gif
я переименовал C:\WebServers в C:\WebServers_old
установил Денвер 3-й, перенес все сайты с C:\WebServers_old в C:\WebServers
и потер C:\WebServers_old
но это было уже месяц назад... так что восстановлению не полежит... unsure.gif

Спустя 17 минут, 46 секунд (14.07.2008 - 21:07) Viking написал(а):
да не, просто единственное что в голову пришло, что у тебя в коде текущий каталог меняется, но раз раньше он работал значит дело не в этом.
чегото тут не хватает
я так понял это у тебя фрагмент кода из main_body.tpl , но этот файл ведь видимо тоже не прямо запускается? он инклюдится?

Спустя 12 минут, 31 секунда (14.07.2008 - 21:19) Vorchun написал(а):
Вот что вспомнил...
может поможет вам, помочь мне понять проблему... smile.gif о как сказал... масло масленное smile.gif

вышеприведенная ошибка выдается только в случае, когда нет файла main.html
В принципе он мне и не нужен был никогда, поскольку в ссылках всегда передавался параметр id, и соответственно часть кода if никогда не выполнялась.
Так вот... Сейчас я, в порядке эксперимента сделал этот файл и проверил работоспособность скрипта.
Результатом подстановки любого значения в параметр id всегда выходит содержимое файла main.html
Из чего я заключаю, что скрипт считает всегда id==0 и выводит именно результат работы if, что мне совершенно не нужно. Но самое странное, что с некоторых пор это произошло с одним моим сайтом в интернете. И теперь там так же нельзя просмотреть страницы вида .php?id=мой_параметр
Поскольку с тем сайтом я ничего не делал уже более полугода и раньше там все работало корректно, могу предположить что там сменили версию РНР...

Спустя 3 минуты, 58 секунд (14.07.2008 - 21:23) Vorchun написал(а):
Цитата(Viking @ 14.7.2008, 18:07) [snapback]43485[/snapback]
я так понял это у тебя фрагмент кода из main_body.tpl , но этот файл ведь видимо тоже не прямо запускается? он инклюдится?

да конечно.
страница собирается из привычных head.tpl, body.tpl и foot.tpl
файл.php их просто собирает вместе, ну и еще объявляет переменные...

Спустя 4 минуты, 44 секунды (14.07.2008 - 21:28) Viking написал(а):
Цитата(Vorchun @ 14.7.2008, 22:19) [snapback]43487[/snapback]
вышеприведенная ошибка выдается только в случае, когда нет файла main.html


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

Спустя 14 минут, 5 секунд (14.07.2008 - 21:42) Ghost написал(а):
глобалки, опять глобалки.. почти наверняка..
http://phpfaq.ru/globals

Спустя 3 минуты, 45 секунд (14.07.2008 - 21:46) Vorchun написал(а):
Цитата(Viking @ 14.7.2008, 18:28) [snapback]43495[/snapback]
Цитата(Vorchun @ 14.7.2008, 22:19) [snapback]43487[/snapback]
вышеприведенная ошибка выдается только в случае, когда нет файла main.html


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

Не понял чему тут лол?
раньше все работало! без файла main.html у меня и сейчас несколько сайтов есть которые работают без этого файла. Ошибку выдает только у меня на денвере и еще на одном платном хостинге, где я держу свой сайт. Причем другие сервера этого же хостера нормально отдают страницу (файла main.html там нет).
Я конечно новичек, но как я понимаю, если передать скрипту параметр id, он не отдаст ни ошибку ни файл main.html, а выполнит условие else.
т.е.
Код
<?
if ($id=="") {
include ("main.html");
}
else {
include ("$id.html");
}
?>

если я запрошу страницу с адресом main.php
скрипт отдаст мне в страницу содержимое файла main.html поскольку id=0
а если с адресом main.php?id=1
то 1.html (который есть на хостинге и лежит в кореневой директории) поскольку id=1
а как я говорил выше. у меня нет ссылок на сайте без параметра id. соответствено через браузер нельзя запросить main.html разве что только ручками... smile.gif

Спустя 6 минут, 9 секунд (14.07.2008 - 21:52) Viking написал(а):
$id исправь на $_POST['id'] или скорее $_GET['id'] как я понял
чуть ли не половина вопросов связаны с глобалками
твоя ошибка говорит именно о том что файл не найден, мы и парились над тем почему скрипт его не находит, сказал бы сразу что его нет
всетаки лол

Спустя 45 минут, 2 секунды (14.07.2008 - 22:37) Vorchun написал(а):
Цитата(Ghost @ 14.7.2008, 18:42) [snapback]43499[/snapback]
глобалки, опять глобалки.. почти наверняка..
http://phpfaq.ru/globals

Спасибо. Не знал об этом.
Цитата(Viking @ 14.7.2008, 18:52)
$id исправь на $_POST['id'] или скорее $_GET['id'] как я понял
чуть ли не половина вопросов связаны с глобалками
твоя ошибка говорит именно о том что файл не найден, мы и парились над тем почему скрипт его не находит, сказал бы сразу что его нет
всетаки лол

не помогло... unsure.gif
Чтож всем спасибо за помощь и подсказки. Буду дальше копать где глюк...

Спустя 13 минут, 27 секунд (14.07.2008 - 22:50) Viking написал(а):
да неможет быть, стопудово глобалки
Код
<?php
if ($_REQUEST['id']=="") {
include ("main.html");
}
else {
include ($_REQUEST['id'].html");
}
?>

полюбому должно работать

Спустя 23 минуты, 31 секунда (14.07.2008 - 23:14) Vorchun написал(а):
Код
<?
if ($_REQUEST['id']=="") {
include ("main.html");
}
else {
include ("$_REQUEST['id'].html"); //это 18-я строчка
}
?>

вот что отдает
Цитата
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in F:\home\mysite\www\main_body.tpl on line 18

Значит еще раз спасибо за помощь.
измененив в файле F:\usr\local\php5\php.ini
в строке
register_globals = значение Off на On
я получил возможность тестировать скрипты на денвере.

Но вот получить возможность подставлять значения переменным в GET-запросах, при значениях register_globals = off пока не понял как... dumau.gif

Спустя 17 минут, 56 секунд (14.07.2008 - 23:32) Viking написал(а):
а, ну дык
Код
<?php
if ($_REQUEST['id']=="") {
include ("main.html");
}
else {
include ($_REQUEST['id'].".html");
}
?>

кавычку нетуда просто
теперь все точно, не отвертится, будет работать.

Спустя 7 минут, 43 секунды (14.07.2008 - 23:40) Vorchun написал(а):
Цитата(Viking @ 14.7.2008, 20:32) [snapback]43508[/snapback]
а, ну дык
Код
<?php
if ($_REQUEST['id']=="") {
include ("main.html");
}
else {
include ($_REQUEST['id'].".html");
}
?>

кавычку нетуда просто
теперь все точно, не отвертится, будет работать.

smile.gif вот блин.
я же не копи пастил, а специально ручками код переписал, чтоб не ошибиться. smile.gif и все равно ошибся.

Да!!! Огромное спасибо. Не отвертелся. smile.gif Заработал !!!

Спустя 12 минут, 21 секунда (14.07.2008 - 23:52) Ghost написал(а):
эмм.. а помоему есть смысл проверить
!isset($_GET['id']) || ($_GET['id']=='')

зря, кстати, глобалки поменял

Спустя 7 минут, 1 секунда (14.07.2008 - 23:59) Vorchun написал(а):
Цитата(Ghost @ 14.7.2008, 20:52) [snapback]43510[/snapback]
эмм.. а помоему есть смысл проверить
!isset($_GET['id']) || ($_GET['id']=='')

зря, кстати, глобалки поменял

а что делает эта строчка? и куда ее вписывать?

А в скрипт я поставил как раз $_GET

Спустя 10 минут, 36 секунд (15.07.2008 - 00:10) Ghost написал(а):
вместо $_GET['id']=='' в самой первой строчке.

сначала надо проверить существование переменной, а потом уже ее значение

Спустя 10 часов, 13 минут, 12 секунд (15.07.2008 - 10:23) Vorchun написал(а):
Понял. спасибо за помощь. smile.gif


_____________
<?
If (you wanna shoot) {shoot "don't talk";}
?>
© The Good, The Bad & The Ugly
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.