2012-08-09 101 views
0

我在Wordpress中有一個PHP文件,它有一些HTML,「登錄&註冊表」,我只想在網站的成員未登錄時顯示。當他們登錄時,我希望它顯示「歡迎,[姓名]」。在PHP中使用HTML如果聲明

我只是不確定如何在PHP If語句中使用HTML。條件是這樣的:

<?php 
     if (member_is_logged_in()) { 
     print "Welcome [name]"; 
     } else { 
     print "<a href="...">Login</a> | <a href="...">Register</a>"; 
     } 
?> 

這就是我認爲它應該看起來,但它不工作。我對PHP並不擅長,但我會很感激任何幫助。謝謝!

+1

您是否嘗試過echo? – 2012-08-09 03:33:10

+2

它不工作,沒有輸出?沒有檢測到登錄狀態? – 2012-08-09 03:34:03

+0

Sacheleen和Gordan提供了非常好的答案..另一種解決方案是您選擇的報價。如果你用雙引號包裝你的字符串並且在字符串中有一個雙引號,那麼你打破了你的字符串,所以你可以通過在它之前加一個'\'來轉義它'''',這個邏輯也適用於單引號。 – chris 2012-08-09 03:35:58

回答

3

您可以使用雙引號的字符串PHP變量。所以只需用$ name或任何變量替換[name]即可。請注意,這將而不是使用單引號。

另外,你在else情況下有兩組雙引號。這將導致語法錯誤。使其中一個單引號或逃避內部引號。

<?php 
     if (member_is_logged_in()) { 
     print "Welcome $name"; 
     } else { 
     print '<a href="...">Login</a> | <a href="...">Register</a>'; 
     } 
?> 

您也可以直接結束PHP標記並直接寫HTML。

<?php 
     if (member_is_logged_in()) { 
     print "Welcome $name"; 
     } else { 
?> 
     <a href="...">Login</a> | <a href="...">Register</a> 
<?php 
     } 
?> 

存在一個更好,更容易閱讀語法如下:

<?php if(<your evaluation here>): ?> 
HTML for when true 
<?php else: ?> 
HTML for when false 
<?php endif; ?> 

退房Alternative syntax for control structures更多這方面的信息。

雖然我們在這,print vs echo, which one is faster?

+0

我知道這是一個偏好問題,但我發現混合PHP和HTML的方式在你描述的「更好」的語法難以閱讀,第二種語法是可怕的 - 不僅僅是PHP和HTML的混合,而是混合PHP和混合PHP和HTML。 – cori 2012-08-09 03:46:02

+0

只提供可用的選項。:)就我個人而言,我喜歡選項3,但我同意2。 – sachleen 2012-08-09 03:49:15

1

簡單:

<?php 
     if (member_is_logged_in()) { 
     print "Welcome $name"; 
     } else { ?> 
     <a href="...">Login</a> | <a href="...">Register</a> 
     <?php } 
?> 
0

試試這個代碼塊,讓我知道---

<?php 
     if (member_is_logged_in()) { 
    global $display_name; 
    get_currentuserinfo(); 
     print "Welcome ".$display_name; 
     } else { 
     print "<a href="...">Login</a> | <a href="...">Register</a>"; 
     } 
?>