2013-01-22 18 views
-1

我試圖呼應基於cookie的條件串else條件,代碼如下所示:簡單,如果在PHP

<?php setcookie('a12cookie', '1'); ?> 
<?php if (isset($_COOKIE['a12cookie'])) { ?> 
<?php echo "hello"; ?> 

<?php } ?> 

<?php else { ?> 

<?php echo "bye"; ?> 

<?php } ?> 

,我與它顯示「你好」沒問題,它只是當我添加其他條件我得到以下錯誤:

Parse error: syntax error, unexpected T_ELSE in /home/looksr5/public_html/cookie1.php on line 6 

我知道我已經錯過了第6行的東西,弄清楚什麼。

+0

有錯誤。你在'}'和'else'之間有一個緩衝區輸出,除去'?><?php' –

+2

實際上,在每行代碼中打開/關閉'<?php'非常困難! –

+1

注意:您的代碼不會按預期工作。 $ _COOKIE在腳本啓動時填充,然後不被php再次觸摸。您剛剛設置的cookie不會在$ _COOKIE中,直到** NEXT **頁面加載。 –

回答

3

只要把else}
篩選後:

<?php } else { ?>

2

這應該工作:

<?php setcookie('a12cookie', '1'); ?> 
<?php echo (isset($_COOKIE['a12cookie']) ? "Hello" : "Bye");?> 

*,我喜歡用三元運算符的唯一情況是,當我有像你這樣簡單的條件回顯語句。

此外,使用PHP作爲演示語言時,通常最好使用其替代語法。這將使您可以非常輕鬆地插入其他演示文稿。

<?php if(isset($_COOKIE['a12cookie'])):?> 
Hello 
<?php else:?> 
Bye 
<?php endif;?> 
2

你不允許,如果你打算使用else語句來關閉}後的PHP標籤。您的代碼應該是這樣的:

... 
<?php } else { ?> 
... 
0

你的代碼應該是這樣的:

<?php setcookie('a12cookie', '1'); 
if (isset($_COOKIE['a12cookie'])) { 
    echo "hello"; 
    } else { 
    echo "bye"; 
} 

或至少:

<?php setcookie('a12cookie', '1'); 
if (isset($_COOKIE['a12cookie'])) { 
?>hello<?php } else { 
?>bye<?php } 
0

你也可以寫,有時更容易閱讀

<?php if (isset($_COOKIE['a12cookie'])): ?> 
    <?php echo "hello" ?> 
<?php else: ?> 
    <?php echo "bye" ?> 
<?php endif ?> 
+0

除非你使用變量,爲什麼你會重新打開PHP標籤來回顯一個字符串? – Ethan

+0

謝謝你的問題;) - imho這個短片段的最佳選擇是使用三元運算符「echo(isset(...))?'hello':'bye'」 - 否則我想說出可讀性比試圖保持代碼儘可能小更重要。通常你會在你的視圖表示中混合使用PHP和HTML。因此,對錶示邏輯和直接輸出進行嚴格劃分將是一件好事。 – unused

+0

aaa,似乎我沒有得到你的問題的重點。是的 - 回顯一個簡單的字符串是沒有意義的。 – unused