[英]How can I use a php parameter in HTML markup?
因此,在嘗試提出這個問題之前,我已經嘗試過對此進行研究。 鑒於我有一個index.php和一個存儲用戶名的cookie(另存為$ name),大多數答案告訴我這樣做很簡單:
echo '<h3>'.$name.'</h3>'
但這對我不起作用,我認為這是因為我先對if語句執行了奇怪的語法,並且我想在此if語句中使用參數。 我的確切代碼看起來像這樣:
<?php
//store the cookie
$name=$_COOKIE['user'];
//check that it is set
if(isset($_COOKIE['user'])):
<section id="login">
<h1> Welcome</h1>
echo '<h3>'.$name.'</h3>';
</section>
else: //prompt to login
endif;
?>
它旨在向登錄的用戶顯示歡迎消息,並按名稱對他們進行處理,否則提示用戶登錄。
所以我的問題是: 為什么參數根本不反映? (在加載頁面時不顯示任何內容),如何使它按預期工作?
ps。 請不要擔心使用cookies來做到這一點等,這是故意脆弱的安全風險。
pps。 我100%確信已設置cookie,因此我使用cookie瀏覽器對其進行了查看。
它不起作用,因為前兩行是無效的PHP,因此它將引發錯誤並停止工作。
如果要使用echo
方法,則正確的語法為:
echo '<section id="login">';
echo '<h1> Welcome</h1>';
echo '<h3>'.$name.'</h3>';
重要的是永遠不要像插入原始HTML那樣插入外部數據 。 這會使您容易受到XSS攻擊。 將輸入視為純文本並將其轉換為HTML,然后再將其輸出為HTML文檔。
$name_html = htmlspecialchars($name);
echo '<section id="login">';
echo '<h1> Welcome</h1>';
echo '<h3>'.$name_html.'</h3>';
您可以使用變量插值使代碼更易於閱讀:
$name_html = htmlspecialchars($name);
echo '<section id="login">';
echo '<h1> Welcome</h1>';
echo "<h3>$name_html</h3>";
而且,當輸出大塊HTML時,完全退出PHP模式更容易:
$name_html = htmlspecialchars($name);
?>
<section id="login">
<h1> Welcome</h1>
<h3><?=$name_html?></h3>
<?php
在旁邊
在嘗試使用cookie 之前 (而非之后),請檢查cookie是否已設置!
if(isset($_COOKIE['user'])):
$name=$_COOKIE['user'];
您應該這樣使用php + html:
<?php $var = 'my string'; ?>
<?php if ($var == 'my string') : ?>
<h1><?php echo $var; ?></h1>
<?php endif;?>
這會破壞if語句,使您可以在條件語句之間添加html,而不必從php回顯和html
您應該發布遇到的任何錯誤-但是您不能只在php內編寫html,而不能將其回顯或暫時終止php。
<?php
//store the cookie
$name=$_COOKIE['user'];
//check that it is set
if(isset($_COOKIE['user'])):?>
<section id="login">
<h1> Welcome</h1>
<?php echo '<h3>'.$name.'</h3>'; ?>
</section>
<?php else: //prompt to login
endif;
?>
要僅在php語句為true時顯示HTML代碼,只需在打開if語句后立即關閉php標記,然后將HTML代碼放在其中。
<?php
//store the cookie
$name=$_COOKIE['user'];
//check that it is set
if(isset($_COOKIE['user'])) {
?>
<section id="login">
<h1> Welcome</h1>
<h3><?php echo $name; ?></h3>
</section>
<?php
} else {
echo 'Please login';
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.