2013-07-02 3 views
-3

У меня есть некоторые файлы PHP с функцией session_start() и некоторые параметры для параметров cookie. Это чистые страницы PHP, и HTML вообще отсутствует. Теперь я хочу добавить некоторый цвет фона, а также некоторые формы и таблицы на этих страницах PHP. Когда я добавляю какой-либо бит в HTML, он дает мне ошибку «заголовки уже прошли»!Как добавить HTML с заголовками пропусков PHP

Я хочу знать правильный способ вложения PHP и HTML! пожалуйста, дай мне знать.

Вот код:

<?php 
include 'functions.php'; 
secure_session_start(); 

define("HOST", "localhost"); // The host you want to connect to. 
define("USER", "admin"); // The database username. 
define("PASSWORD", "password"); // The database password. 
define("DATABASE", "test"); // The database name. 
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE); 

if(isset($_POST['name'], $_POST['password'])) { 
     $name = $_POST['name']; 
     $password = $_POST['password']; // The hashed password. 
     if(login($name, $password, $mysqli) == true) { 
      // Login success 
      echo 'Success: You have been logged in!'; 
    } else { 
     // Login failed 
     echo 'Wrong ID/password!'; 
    } 
} else { 
    // The correct POST variables were not sent to this page. 
    echo 'Invalid Request'; 
} 
?> 
+1

Пожалуйста, внесите свой код. – j08691

+1

заголовки, выход, в этом порядке –

+0

Код пожалуйста !!!. –

ответ

1

Делайте все , прежде чем Выводится HTML, это так просто.

<?php 

    session_start(); 

    /* here be dragons, i.e. more PHP code */ 

?> 
<!DOCTYPE html> 

<html> 
... 
</html> 
0

В PHP вы не можете иметь любой HTML, прежде чем иметь заголовок. Заголовки должны быть перед всем.

0

Я согласен с @deceze, просто потому, что заставляя себя обрабатывать данные перед визуализацией вывод обеспечивает лучшее разделение задач (вы меньше шансов иметь SQL перемешан с HTML, который откровенно может управлять человеком к безумию)

Однако; для полноты, вот «обходной путь», чтобы гарантировать, что выход не будет сброшен, прежде чем вы захотите его.

ob_start() и ob_get_clean()

ob_start() начинает буферизацию вывода и ob_get_clean() возвращается (и заканчивается) буферизацию вывода. Используемый в сочетании вы можете гарантировать, что вывод не будет отправлен.

<?php 
    // start output buffering 
    ob_start(); 
?> 

<p>Write HTML, start sessions, eat pie</p> 
<?php session_start(); ?> 

<?php 
    // dump all the things that output 
    // buffering captured 
    echo ob_get_clean(); 
?> 

Выход может быть захвачен в переменную и обработан для последующей обработки, если вам нужно. Однако я добавлю отказ от ответственности: это не предлог, чтобы просто заманить HTML и SQL и любую другую технологию в тушеное мясо и закрепить его в Интернете.