2015-12-11 59 views
0

我不知道......PHP,可以保存會話變量中動態生成的html嗎?

我有PHP動態生成的這個網站,例如:

<div> 
<ul> 
    <li>Some content</li> 
</ul> 
</div> 

此內容會改變的,取決於用戶輸入的。所以我的問題是可以保存在頁面渲染後在$_SESSION變量中生成的HTML,然後將其返回到另一個頁面?

我唯一的想法就是:

//after query the sql 

$_SESSION['html'][] = 'html content'; 
echo 'html content'; 

打完渲染所有的頁面我會存儲在$ _SESSION [「HTML」]變量所有我的html ...但是不好看:S

+0

是的,這樣做沒有錯。這是問題的嚴重程度嗎? –

+0

好,而我寫的問題,我有想法,也許我可以implode變量和獲得的HTML在一起...但這樣我需要將每個回聲複製到變量$ _SESSION ['html'] ...我喜歡50:S –

回答

1
<?php ob_start(); ?> 
<div> 
<ul> 
    <li>Some content</li> 
<?php echo "<li>Some more content</li>"; ?> 
</ul> 
</div> 
<?php 
$_SESSION['html'][] = ob_get_contents(); 
ob_end_flush(); // or ob_end_clean(); 

的 「OB」 功能是輸出緩衝。它們將從緩衝區中捕獲所有來自echo語句或外部<?php ?>標籤的輸出。在​​之後保存緩衝區中的內容後,您可以發送緩衝區中的內容ob_end_flush或將其丟棄ob_end_clean

+0

是的,這是!只需在ob_end_flush()的乞討處刪除$; –

+0

D-哦! 「$」被刪除。謝謝。 – BareNakedCoder

0

這樣做沒有任何錯誤。只要改變這個

$_SESSION['html'][] = 'html content'; 

$_SESSION['html'] = 'html content'; 

,當你要追加更多的東西這樣做:

$_SESSION['html'] .= 'html content'; 
+0

不,不,因爲html輸出的回聲很多,而且很大......我需要存儲100行,也許更多 –

+0

請參閱更新後的答案,以後可以隨時添加更多內容。 –

+0

但是,沒錯,如果你想把它們放到一個數組中並在使用時連接在一起。只要確保你做得很好。 –