У меня есть веб-сайт с проблемой пробела. Я включаю несколько файлов до 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(); ?>
Все еще создает пустое пространство.
Вы можете решить эту проблему следующим образом:
<?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>....
ОК, эти шаги должны решить вашу проблему:
Пройдите все файлы PHP на своем сайте. Если файл заканчивается на ?>
(И, возможно, некоторые пробелы), удалите ?>
. (Конечно, если после символа HTML есть какой-то текст HTML, вы не должны его удалять.)
Выполняя вышеуказанное, проверьте также, что перед первым <?php
в любых файлах нет пробелов.
Если после этого у вас все еще есть проблемы, проверьте наличие невидимых символов перед <?php
. Существует несколько способов сделать это, но смотреть на шестнадцатеричный дамп файлов – это один хороший способ. Первые два байта каждого файла PHP (который не начинается с текста HTML) должны быть <?
(hex 3c 3f
).
В маловероятном случае, если эти шаги не решит проблему, сообщите нам (и предпочтительно укажите ссылку на страницу, где возникает проблема, чтобы мы могли сами проверить результат).
Я понял. Вы должны кодировать «UTF-8 без спецификации» для файла, который вы включаете .
Мастер-файл php необязательно должен кодироваться с помощью «UTF-8 без спецификации», и на самом деле я бы рекомендовал, чтобы вы этого не сделали, если у вас есть специальные символы (вызванные проблемы для меня).
Здесь также был дан ответ: PHP включает в себя пустое место в верхней части страницы
Открыть файл в Notepadd ++ Из верхней строки: Encoding-> Encode в UTF8 без спецификации Сохранить файл В Dreamweaver
Нажмите CTRL + J или перейдите в меню «Изменить» – «Параметры страницы» -> «Плитка / Кодировка» и снимите флажок «UNICODE BOM», если она была нажата.