PHP включает () перед doctype, вызывая пробел

У меня есть веб-сайт с проблемой пробела. Я включаю несколько файлов до doctype, и это приводит к выделению белого пространства.

После поиска я нашел это решение: проблема с пробелом перед doctype

Однако после удаления ?> Я все еще получаю проблему. Ниже приведен код:

 <?php include ("include/session.php"); include ("include/updatestage.php"); ?> <!DOCTYPE HTML>.... 

Здесь session.php :

 <?php session_start(); // if a team name has been assigned to a session... if ( isset($_SESSION ['teamName'])) { //create "global variable $teamName that can be used across all pages as long as the function "session_start(); is present" $teamName = $_SESSION ['teamName']; } else{ die ( "You are not logged in! Redirecting to login page...<meta http-equiv='REFRESH' content='2; url = index.php'>"); } 

Вот updatestage.php :

     <?php include("config.php"); //update stage $inserted="n"; mysql_query ("UPDATE `team` SET `inserted`='$inserted' WHERE teamName = '$teamName' "); $advance="n"; mysql_query ("UPDATE `game` SET `advance`='$advance' "); в <?php include("config.php"); //update stage $inserted="n"; mysql_query ("UPDATE `team` SET `inserted`='$inserted' WHERE teamName = '$teamName' "); $advance="n"; mysql_query ("UPDATE `game` SET `advance`='$advance' "); 

    Вот getstageinfo.php :

     <?php include("include/config.php"); //Select the slogan from the current user $currentStage = mysql_query(" SELECT `currentStage` FROM `team` WHERE `teamName` = '$teamName' "); //assign the text located at the logo field (the path of the logo) to a variable $slogan $row = mysql_fetch_assoc($currentStage); $currentStage= $row['currentStage']; ?> в <?php include("include/config.php"); //Select the slogan from the current user $currentStage = mysql_query(" SELECT `currentStage` FROM `team` WHERE `teamName` = '$teamName' "); //assign the text located at the logo field (the path of the logo) to a variable $slogan $row = mysql_fetch_assoc($currentStage); $currentStage= $row['currentStage']; ?> в <?php include("include/config.php"); //Select the slogan from the current user $currentStage = mysql_query(" SELECT `currentStage` FROM `team` WHERE `teamName` = '$teamName' "); //assign the text located at the logo field (the path of the logo) to a variable $slogan $row = mysql_fetch_assoc($currentStage); $currentStage= $row['currentStage']; ?> 

    И, наконец, здесь config.php :

     <?php // connect to database $con = mysql_connect("xxxxxxx","xxxxxxx","xxxxxxx"); if (!$con) { die('Could not connect: ' . mysql_error()); } // select database mysql_select_db ("xxxxxxx"); ?> 

    ////////////////////////////////////////////////// ////////////////////////////////////////

    Хорошо, поэтому я добавил обратно в?> И попробовал следующие предложения:

     <!DOCTYPE HTML> <?php include("include/session.php"); include("include/updatestage.php"); ?> в <!DOCTYPE HTML> <?php include("include/session.php"); include("include/updatestage.php"); ?> в <!DOCTYPE HTML> <?php include("include/session.php"); include("include/updatestage.php"); ?> в <!DOCTYPE HTML> <?php include("include/session.php"); include("include/updatestage.php"); ?> в <!DOCTYPE HTML> <?php include("include/session.php"); include("include/updatestage.php"); ?> 

    Или попробуйте:

     <?php echo "<!DOCTYPE HTML>\n"; include ("include/session.php"); include ("include/updatestage.php"); ?> 

    Производит:

     Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at public_html/period1.php:2) in public_html/include/session.php on line 1 

    Попытка:

     <?php include("include/session.php"); include("include/updatestage.php"); ?><!DOCTYPE HTML> в <?php include("include/session.php"); include("include/updatestage.php"); ?><!DOCTYPE HTML> в <?php include("include/session.php"); include("include/updatestage.php"); ?><!DOCTYPE HTML> в <?php include("include/session.php"); include("include/updatestage.php"); ?><!DOCTYPE HTML> в <?php include("include/session.php"); include("include/updatestage.php"); ?><!DOCTYPE HTML> 

    Или:

     <?php ob_start(); echo "<!DOCTYPE HTML>\n"; include ("include/session.php"); include ("include/updatestage.php"); ob_end_flush(); ?> 

    Все еще создает пустое пространство.

    Related of "PHP включает () перед doctype, вызывая пробел"

    Вы можете решить эту проблему следующим образом:

     <?php include ("include/session.php"); include ("include/updatestage.php"); ?><!DOCTYPE HTML> 

    Но я наблюдал ошибочное поведение в этом отношении (хотя и не с PHP4), поэтому самое легкое решение, гарантирующее исправление, заключается в том, чтобы поставить <!DOCTYPE> перед включением – поскольку ни один из подключенных файлов не выводит ничего, и разорвал бы ваш документ, если он сделал.

     <!DOCTYPE HTML> <?php include ("include/session.php"); include ("include/updatestage.php"); ?> <!-- Rest of HTML --> 

    Или это:

     <?php echo "<!DOCTYPE HTML>\n"; include ("include/session.php"); include ("include/updatestage.php"); ?> <!-- Rest of HTML --> 

    Не забудьте убедиться, что < в открывающемся <?php является первым символом во всех файлах, если вы переходите ко второй опции.

    РЕДАКТИРОВАНИЕ В первую очередь полностью не удалось учесть проблему сеанса / куки, которая вызвала уродливую голову, вот рабочее решение:

     <?php ob_start(); echo "<!DOCTYPE HTML>\n"; include ("include/session.php"); include ("include/updatestage.php"); ob_end_flush(); ?> <!-- Rest of HTML --> 

    Вам не нужно удалять ?> . Просто пробел после него. Ваш код должен выглядеть так:

     <?php include ("include/session.php"); include ("include/updatestage.php"); ?><!DOCTYPE HTML>.... 

    ОК, эти шаги должны решить вашу проблему:

    1. Пройдите все файлы PHP на своем сайте. Если файл заканчивается на ?> (И, возможно, некоторые пробелы), удалите ?> . (Конечно, если после символа HTML есть какой-то текст HTML, вы не должны его удалять.)

    2. Выполняя вышеуказанное, проверьте также, что перед первым <?php в любых файлах нет пробелов.

    3. Если после этого у вас все еще есть проблемы, проверьте наличие невидимых символов перед <?php . Существует несколько способов сделать это, но смотреть на шестнадцатеричный дамп файлов – это один хороший способ. Первые два байта каждого файла PHP (который не начинается с текста HTML) должны быть <? (hex 3c 3f ).

    В маловероятном случае, если эти шаги не решит проблему, сообщите нам (и предпочтительно укажите ссылку на страницу, где возникает проблема, чтобы мы могли сами проверить результат).

    Я понял. Вы должны кодировать «UTF-8 без спецификации» для файла, который вы включаете .

    Мастер-файл php необязательно должен кодироваться с помощью «UTF-8 без спецификации», и на самом деле я бы рекомендовал, чтобы вы этого не сделали, если у вас есть специальные символы (вызванные проблемы для меня).

    Здесь также был дан ответ: PHP включает в себя пустое место в верхней части страницы

    Открыть файл в Notepadd ++ Из верхней строки: Encoding-> Encode в UTF8 без спецификации Сохранить файл В Dreamweaver

    Нажмите CTRL + J или перейдите в меню «Изменить» – «Параметры страницы» -> «Плитка / Кодировка» и снимите флажок «UNICODE BOM», если она была нажата.