2014-01-21 3 views
0

Моя страница имеет следующую структуру:Нужна таблица стилей перед ob_endflush() и перед заголовком (местоположение:), как?

<?php 
    session_start(); 
    ob_start(); 
?> 

HTML HEADER 
links to stylesheets global.css and mail.css 

<?php 
    function email(){ 
    /* using the stylesheets global.css and mail.css */ 
    $text = '<div class="test"> 
       <p id="par">... 
        <span id="write" class="text">...</span> 
       </p> 
       </div>'; 

    return $text; 
    } 
?> 


/* some text and html stuff */ 

<?php 
    if(isset(...)){ 
    /* php form validation */ 

    /* after validating I send an email to the user where I call 
     the function email() which use the stylesheets. */ 
    $mail_text = 'Dear .....'; 
    $mail_text .= email(); 

    $mail_headers = "From: [email protected]\r\n". 
        'X-Mailer: PHP/' . phpversion(). 
        'MIME-Version: 1.0' . "\r\n". 
        'Content-type: text/html; charset=utf-8' . "\r\n"; 

    if(mail(..., ..., $mail_text, $mail_headers)){ 
     header('location: newlocation.php'); 
    } 
?> 

/* HTML FORMS and text and .... */ 

<?php 
    ob_end_flush(); 
?> 

Электронная почта отправляется с текстом, происходящим от функции электронной почты(), но без форматирования вызвать CSS являются «распечатан» только после того, как ob_end_flush() в нижней части страницы.

Как я могу это решить? Существует много классов и стилей внутри электронной почты(), поэтому писать каждый раз <div style="..."> и т. Д. Не является хорошим решением.

ответ

0

Вы путаетесь с буферизацией вывода. Html/css, который вы распечатываете в начале страницы, нигде не записывается и НЕ будет частью $mail_text. Просто потому, что вы используете буферизацию вывода, не делает этот буфер волшебным образом отображаемым в переменной. Вам понадобится как минимум $mail_text .= ob_get_clean() или что-то, чтобы извлечь содержимое буфера и поместить его в вашу переменную.

+0

$ mail_text. = Ob_get_contents(); вызовите это, прежде чем вы вызовете ob_get_clean(); – Schien

+0

Это то, что я написал, не так ли? «но без форматирования CSS« распечатываются »только после ob_end_flush() внизу страницы». – Perocat

+0

Да, потому что ob_end_flush() выдает выходные данные клиенту. этот вывод не сохраняется в переменной. В вашем коде есть два пути вывода: электронная почта и браузер клиента. Они никоим образом не связаны, потому что вы не сделали никакого кода, чтобы связать их. –

Смежные вопросы