| |
|
|
| | Доброго времени суток. У меня сложилась вот такая ситуация.
Есть определенная функция abc(), для удобства и масштабируемости она была вынесена в отдельный 1.php файл. В этом файле только одна эта функция. Ну например так:
<?php
function abc($a, $b, $c, $d, $e)
{
бла-бла-бла
return true;
}
?>
|
И есть основной файл main.php:
<?php
// Подключаем функцию abc
//require_once "../1.php";
бла-бла-бла
if (что-то) {
Header("Location: index.php");
exit();
}
бла-бла-бла
?>
|
Только вот в чем загвоздка: если файл 1.php подключать как в примере, то браузер показывает чистый лист. Я так понял что это после Header("Location: index.php"). А если функцию abc() описать в самом файле main.php (а не подключать), то все работает нормально и корректно.
В чем может быть проблема? Оч. надеюсь на скорейшую помощь. | |
| |
|
|
| |
|
|
| |
для: Resurepus
(21.05.2008 в 04:37)
| | | А что вы ожидали увидеть, если обращения к своей функции вы не далаете? И зачем нужен exit() после хидера? | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 04:48)
| | | require_once "../1.php"
Судя по ссылки, Ваш файл с функцией находится на уровень выше относительно файла использующей данную функцию. Это действительно так?
если нет, то разместите файл 1.php в туже папку, где находится файл с обращением к этой функции и измените путь в:
require_once "1.php" | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 04:48)
| | | Вызов функции присудствует, да и какая разница, вызывается она или нет?
Принудительно завершаю сценарий. Нет смысла его дальше продолжать.
А есть разница где лежит прикрепляемый файл? Я думаю это не критично, поскольку все пути все равно относительно main.php | |
| |
|
|
| |
|
|
| |
для: Resurepus
(21.05.2008 в 13:59)
| | | Ну ничего какая разница, в вашем примере только и стоит догадываться что такое "бла-бла-бла", и что за "что-то". Если есть вывод в браузер, значит что-то вы увидите. А проку от exit никакого, так как хидер перенаправляет на другую страницу. | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 14:17)
| | | "бла-бла-бла" и "кое-что" думаю тут не играет большой роли. Поскольку загвоздка в том что если 1.php прикрепляется через require_once "../1.php" то ошибка присутствует, а если функция описана в самом main.php, то все работает. Вот в чем проблема, я не понимаю где тут разница? | |
| |
|
|
| |
|
|
| |
для: Resurepus
(21.05.2008 в 15:05)
| | | 1.php
<?php
function abc() {
return "Привет";
}
?>
|
Вызов:
<?
require_once "1.php";
echo abc();
?>
|
Пробуйте, все будет работать (только подключение не с выше уровня, а от корня у меня). | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 15:17)
| | | Перемещение файла не помогло =( | |
| |
|
|
| |
|
|
| |
для: Resurepus
(21.05.2008 в 16:11)
| | | Я вам и не говорю, что ошибка в путях, если бы так, то вы бы получили сообщение об ошибке. Приведите код: как вы используете эту функцию на странице и т.д., без всяких "бла-бла-бла". Чудес не бывает, значит у вас ошибка есть. | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 16:22)
| | | Да же вам пишу где вся соль проблемы. Функция в этом файле - работает, подключена из внешнего - не работает. Причем тут бла-бла-бла?
Ну короче проблема была найдена и решена. Все из-за BOM-метки в начале файла (аккуратней с юникодом!!!).
Всем спасибо за советы и предложенные решения. Тему можно закрывать. | |
| |
|
|
| |
|
|
| |
для: Resurepus
(21.05.2008 в 16:11)
| | | Скорее всего у вас в файле с функцией есть пробелы (а это уже вывод в браузер, чего нельзя делать до отправки заголовка) либо до "<?php" либо после "?>"
даже перевод строки уберите после "?>" | |
| |
|
|
| |
|
|
| |
для: Valick
(21.05.2008 в 17:01)
| | | При чем тут заголовки? Во-первых было сообщение об ошибке, во-вторых заголовок передается, если верить автору, после некого "бла-бла-бла"... в общем не ясно. | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 17:12)
| | | Во-первых было сообщение
Где? Я так понял вывод ошибок отключен, поэтому и "чистый лист". | |
| |
|
|
| |
|
|
| |
для: Valick
(21.05.2008 в 17:34)
| | | Если автор под выводом подразумевает этот бла-бла, то ошибка будет после вывода. Я уже задавал вопрос о вызове функции, пока знаем, что "это не важно" (авторска ремарка). Помоему автору это не стольк и нужно, иначе бы уже знали... | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 17:38)
| | | Это действительно неважно. Обратите внимание на это: "если функция в одном файле с Хедером, то всё работает, а если функцию подключить из файла, то ошибка" | |
| |
|
|
| |
|
|
| |
для: Valick
(21.05.2008 в 17:43)
| | | И что? Ее можно и в начале файла подключить... Меня это не так волнует, если функция не реализовывает вывода в браузер, и выполняется условие, то а дальше... короче, я гадать не намерен, не мне же это нужно.) | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 14:17)
| | | > А проку от exit никакого, так как хидер перенаправляет на другую страницу.
Да, перенаправляет, но скрипт не останавливает... а если вместо "бла-бла-бла" стоит mail()... | |
| |
|
|
| |
|
|
| |
для: root
(21.05.2008 в 20:04)
| | |
<?
header('location: as.php');
echo "AS";
?>
|
Если у вас после хидера будет вывод в браузер, я соглашусь с вами. | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 20:16)
| | | :-) вывод это другое... а вы попробуйте с mail().. | |
| |
|
|
| |
|
|
| |
для: Root
(21.05.2008 в 20:18)
| | | А чем echo от mail в данном случае отличается?
PS. Да, mail проходит, даже не знал. Что тогда получается, что еще будет после перенаправления (фактически мы ведь "уходим") работать? | |
| |
|
|
| |
|
|
| |
для: sim5
(21.05.2008 в 20:20)
| | | из мануала
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
|
без exit; code below соответственно gets executed | |
| |
|
|
| |
|
|
| |
для: Root
(21.05.2008 в 20:25)
| | | Я просто ни когда не пишу лишнего после перехода, да и не логично чего-то там писать. В моем ("настольном") мануале exit даже и не упоминается, а на ru2.php.net по этому вопросу даже и не смотрел. Надо учесть это. | |
| |
|
|