Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Форма + PHP

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Arcsinus
Гость





СообщениеДобавлено: Пт Авг 20 2004 16:29    Заголовок сообщения: Форма + PHP Ответить с цитатой

Есть страница form.php с функционирующей выпадающей формой, с помощью которой можно переходить на страницы 1.htm, 2.htm, 3.htm.
Однако на form.php выскакивает предупреждение:
Warning: main(): Failed opening '' for inclusion (include_path='.:/usr/local/lib/php') in /www/vhosts/mysite.ru/html/form.php on line 6
=Вот код form.php:=
<html>
<head>
<title>Форма</title>
</head>
<body>
<?php global $list; include $list; ?>
<form method=get>
<select name="list" size="1">
<option value="1.htm"> 1</option>
<option value="2.htm"> 2</option>
<option value="3.htm"> 3</option>
</select> <input type="submit" value="Go" border="0" align="top">
</form>
</body>
</html>
==Вопросы: 1)Скрипт что-то не может открыть?
2)Как избавиться от Warning? Ведь скрипт работает!
Вернуться к началу
Гость






СообщениеДобавлено: Пт Авг 20 2004 18:05    Заголовок сообщения: Ответить с цитатой

Переменная $list (пустой string) по дефолту пустая, а ты ее include. Вот и орет. Даже показывает две кавычки между которыми нет ничего. А когда скрипт может подрубить файл например 1.htm ошибка (точнее "внимание") пропадает.

Избавится от warning как собственно и от notice можно по крайней мере двумя способами.
1. Это подправить php.ini, там нужно найти раздел
Error handling and logging
Далее увидишь директиву error_reporting=.... Перед этим там написано как и что.
Если доступа к php.ini нет, то можно блокировать все это используя функцию int error_reporting ([int level]));
Если не хочешь читать про нее, ниже кусок из мануала, тоже показывающий как и что. Функцию если будешь писать, то пиши желательно как можно выше в скрипте.
-------------------------
// Отключить все сообщения об ошибках
error_reporting(0);

// Сообщать о простых ошибках во время выполнения
error_reporting (E_ERROR | E_WARNING | E_PARSE);

// Сообщение E_NOTICE может быть очень кстати (для сообщения о неинициализированных
// переменных или для отлова неправильного ввода имён переменных)
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Сообщать обо всех ошибках PHP (использовать битовое 63 в PHP 3)
error_reporting (E_ALL);
--------------------------

Есть 3 способ: - избавится от warning. Исправить ситуацию. Smile
Поменять строчку: <?php global $list; include $list; ?>
на что то типа: <?php global $list; if (!isset($list)) {$list="index.htm";} include $list; ?>
То есть если переменная не определена, то грузить по дефолту index.
Или так:
<?php global $list;
if (isset($list)) {include $list;}
?>
Если переменная определена, то грузить, в противном случае нет.
Вернуться к началу
Almaz



Зарегистрирован: 13.08.2004
Сообщения: 45

СообщениеДобавлено: Пт Авг 20 2004 18:08    Заголовок сообщения: Ответить с цитатой

На сабж ответил, залогинится забыл. Smile Вот я балбес Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arcsinus
Гость





СообщениеДобавлено: Пн Авг 23 2004 13:56    Заголовок сообщения: Php+форма Ответить с цитатой

Almaz:
Вылечил. Заменил прежний скрипт на :
<?php global $list; if(!empty($list))include $list; ?>
Спасибо за помощь.
Вернуться к началу
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Чт Авг 26 2004 16:18    Заголовок сообщения: отвыкай так писать Ответить с цитатой

попадешь на хостинг с register_globals = off (как и должно быть) и не будет твой скрипт работать.
Уже несколько лет рекомендуется использовать суперглобальные массивы, а старые статьи висят.
Вот новички и верят, что переменные автоматически регистрируютсяSmile
_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Пт Авг 27 2004 08:47    Заголовок сообщения: Ответить с цитатой

2Arcsinus
Scaramouch дело говорит - не будет это работать на нормальном хостинге. Правильный вариант:
Код:
<?php $list = $_GET['list']; if(!empty($list))include $list; ?>
Вернуться к началу
dAnIK SeNT



Зарегистрирован: 11.06.2004
Сообщения: 43
Откуда: Казань

СообщениеДобавлено: Пт Авг 27 2004 08:48    Заголовок сообщения: Ответить с цитатой

Это я был...
_________________
Cисадмин - образ жизни. Программист - диагноз...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Scaramouch



Зарегистрирован: 11.01.2004
Сообщения: 143
Откуда: Столица нашей Родины

СообщениеДобавлено: Пн Авг 30 2004 10:33    Заголовок сообщения: Да и вообще Ответить с цитатой

такие дырки....
<?php $list = $_GET['list']; if(!empty($list))include $list; ?>
такая система навигации - полный маразм
_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...