php включают отпечатки 1

я кодирую следующие

<?php if ($id = mysql_real_escape_string(@$_GET['pid']) && $uid = mysql_real_escape_string(@$_GET['file'])) echo include "foo.php"; else echo include "bar.php"; ?> 

Когда я использую функцию include в сочетании с функцией, предназначенной для вывода на страницу (например, или echo include «foo.php»), она возвращает include, но с «1» после содержимого, которое было включено.

 echo include "foo.php" 

должно быть

 include 'foo.php'; 

Обратите внимание, что это также может произойти при использовании include без эха:

 <?= include 'foo.php'; ?> 

Это также напечатает возвращаемое значение 1 при использовании внутри скрипта. Чтобы избавиться от этого, вам нужно удалить знак «=» в инструкции так:

 <? include 'foo.php'; ?> 

PHP теперь распечатает содержимое файла без возвращаемого значения.

Okey, поэтому ответы здесь на самом деле не совсем корректны; в некотором смысле даже вводящим в заблуждение.

include принимает содержимое файла и помещает его в контекст. Одним из наиболее распространенных применений является передача области переменных вокруг, т.е. передавая видимые переменные в ваш взгляд, включив их в обработчик и используя include в представлении. Обычные, но есть и другие виды использования; вы также можете return внутрь included файла.

Скажем, у вас есть файл вроде этого:

 <?php return array ( 'some', 'php' 'based' 'configuration', 'file' ); # config 

Выполнение $config = include 'example-config-above.php'; отлично, и вы получите массив выше в переменной $config .

Если вы попытаетесь включить файл, у которого нет оператора return вы получите 1 .

Время Готча

Вы можете подумать, что include 'example-config-above.php'; на самом деле ищет файл в каталоге, в котором находится файл, вызывающий include , но он также ищет файл в различных других путях, а другие пути имеют приоритет над локальным путем!

Поэтому, если вы знаете, что у вас есть файл, подобный выше, с return внутри него, но получают 1 и потенциально что-то вроде странных ошибок PEAR или таких, то вы, вероятно, сделали что-то вроде этого:

 // on a lot of server setups this will load a random pear class include 'system.php' 

Поскольку он загружает файл без возврата, вы получите 1 вместо (в нашем примере) массив конфигурации, который мы ожидаем.

Легкое исправление, конечно же:

 include __DIR__.'/system.php' 

= задает оператор

== для проверки равным

проверить для операторов php

Пусть файл .txt содержит xxx

  echo include("file.txt"); 

Это возвращает xxx1

«1» – это возвращаемое значение функции include, означающее успех доступа к файлу. В противном случае он ничего не возвращает, в этом случае генерируется ошибка синтаксического анализа.

  echo print "hello"; 

Это тоже возвращает, hello1

То же, что и выше; '1', обозначающий успех, печатается.

 echo echo "hello"; print echo "hello"; 

Оба вышеуказанных случая вызывают ошибку. Поскольку функция эха не имеет возвращаемого значения, следовательно, не определено.

 echo echo "hello"; print echo "hello"; (1st) (2nd) 

Теперь второе «эхо» в обоих случаях создает неопределенное. Первое «эхо» или «печать» не может принимать вывод hello с неопределенным (созданным вторым эхом).

Проверка:

 if((print "hello")==1) echo "hey!"; output: hellohey! ('echo' in the 2nd line can be a print, it doesn't matter) 

По аналогии,

 if((include ("file.txt"))==1) echo "hey!"; output: xxxhey! 

Другая рука,

 if((echo "hello")==1) echo "hey!"; output: an error 

В первых двух случаях функции (print и include) возвращаются 1, в третьем случае «echo» не возвращает никакого возвращаемого значения (undefined), поэтому третий случай вызывает ошибку.

Это потому, что функция include возвращает 1 при успешном завершении. Вы получаете, как вы говорите, «мое имя – earl1», потому что сначала выполняется код внутри включенного файла, и печать «мое имя – это earl», а затем локальное echo запускает печать возвращаемого значения include (), которое равно 1.

В файле /etc/php5/cli/php.ini установите переменную:

short_open_tag = 1

Ищите символ 1 в файле .php, и вытащите кепку в задницу.