2011-10-14 42 views
1

我在下面的代碼中解析錯誤。我可以用更多的組合形式或更好的方式編寫這些代碼嗎?修改用於短標記解析的服務器信息

 <?php if((!isset($_SESSION["userkey"])) || (!isset($_SESSION["username"])) || (!isset($_SESSION["userauthorisation"])) ) 
     { ?> 
      <div id="loginbox" > 
       <form id="loginform" name="loginform" style="margin:0px; background:#000;"> 
        XYZ FORM 
       </form> 
      </div> 
     <? } ?> 

如果我用<?php ?>雖然問題解決了。但是,我可以修改我的服務器信息,例如<? ?>,它不會給我錯誤的短標記。我正在使用XAMPP服務器。

回答

4

你會得到什麼錯誤?

也許你應該使用完整的PHP代碼中的最後一行:

<?php if((!isset($_SESSION["userkey"])) || (!isset($_SESSION["username"])) || (!isset($_SESSION["userauthorisation"])) ) 
    { ?> 
     <div id="loginbox" > 
      <form id="loginform" name="loginform" style="margin:0px; background:#000;"> 
       XYZ FORM 
      </form> 
     </div> 
    <?php } ?> 
+0

是的我在最後一行得到解析錯誤。可能是我沒有使用PHP完整標記...我如何修改我的phpinfo信息,以便它不會給我錯誤?我正在修改我的問題 –

+1

+1可能是正確的答案。還要注意,整個if語句可以更整齊地寫成:if(!isset($ _ SESSION [「userkey」],$ _SESSION [「username」],$ _SESSION [「userauthorisation」])){'仍然意味着一樣。 – DaveRandom

+0

@RahulSingh你正在尋找的選項是['short_open_tag'](http://php.net/manual/en/ini.core.php)。你必須在php.ini中修改它 - 它不能**在運行時用'ini_set()'來控制。但是,只需使用完整的<?php'標記就可以做得更好。 – DaveRandom

3

有沒有語法錯誤,但你可能不得不從<?切換到<?php

2

有太多「 )' - 括號 - 我想通過你複製粘貼,錯誤

行應該是

if(!isset($_SESSION["userkey"]) || !isset($_SESSION["username"]) || !isset($_SESSION["userauthorisation"]) ) 
3

你在哪一行得到解析錯誤?

只是一個說明;圍繞isset()函數的paranthesis不是必需的;這會做; (例如,在一個視圖)

if(!isset($_SESSION['userkey']) || !isset(...)) 
{ 
.... 
} 

此外,如果你寫在HTML的「環境」你PHG代碼,通常的做法是使用替代語法;

<?php if(!isset($_SESSION['userkey']) || ...): ?> 
    your html 
<?php endif; ?> 
+0

偉大的新語法對我來說肯定會使用它。我如何爲ifelse鏈式語句編寫它? –

+0

確實回覆我的兩個問題? –

+1

基本相同:'<?php if(expr):?> html <?php elseif(expr):?> morehtml <?php else:?> html的最後部分<?php endif; ?>'與循環相同:'<?php foreach(expr):?>循環這個,即。 <?php endforeach; ?>' – giorgio

3

要回答新近更新的問題,你需要做的是改變short_open_tag在php.ini指令1

只需打開您的php.ini文件,搜索short_open_tag(它將被設置爲0)並將其值更改爲1

但是,只使用完整的<?php標籤會更好,因爲這會使您的代碼更具可移植性。你有什麼理由不能這樣做?