2010-08-27 60 views
-3
<?php } elseif($_SOMETHING == 1 && $_ANOTHER_THING == 2) { ?> 
<?php $_NAME = urlencode($_NAME); ?> 
<?php $_MGT_NAME = urlencode($_MGT_NAME); ?> 
</div>  
<?php } ?> 

我得到這個錯誤的預期';'這段代碼有什麼問題

+11

男人,請你格式化代碼 – Topera 2010-08-27 15:03:15

+0

你得到一個行和列數與錯誤? – 2010-08-27 15:05:21

+1

想出一些方法來包裝代碼,使其可讀。如果讀起來很煩人,我不打算試着回答這個問題。 – 2010-08-27 15:06:12

回答

5

恐怖。驚恐的事件。

下面是實際的錯誤,在onclick屬性值:

lpButtonCTTUrl = 'http:...Ad%20Source=somesite.com& ='+escape(document.location); imageUrl=<?php print "http://{$_SERVER['SITENAME']}/images/";?>&referrer 

也就是說,應該有一個+',而不是;document.location納入後,和IMAGEURL列入後應該有一個收盤報價,和referrer是在錯誤的地方(應該是剛剛document.location列入前。

它也有像使用escape(從不使用escape問題。編碼URL-你交流對於本來想要encodeURLComponent);遍佈各地的未經轉義的&符號;以及缺乏PHP輸出的HTML和URL編碼,可能會導致跨站腳本風險。

在HTML內的一個屬性值裏面的一個URL裏面寫一個URL裏面的URL裏面的一個值是完全的蠱惑所以沒有什麼意外有錯誤。讓我們試着爲這個瘋狂帶來一些可維護性。將JavaScript和URL創建分成可以獲得轉義權限的單獨步驟。

function urlencodearray($a) { 
    $o= array(); 
    foreach ($a as $k=>$v) 
     array_push($o, rawurlencode($k).'='.rawurlencode($v)); 
    return implode('&', $o); 
} 
function h($s) { 
    echo htmlspecialchars($s); 
} 

利用所定義的,那麼這些實用功能:

<?php } elseif($_SOMETHING == 1 && $_ANOTHER_THING == 2) { ?> 
    <?php 
     $lpbase= 'http://server.iad.liveperson.net/hc/84152841/?'; 
     $linkurl= $lpbase.urlencodearray(array(
      'cmd'=>'file', 
      'file'=>'visitorWantsToChat', 
      'site'=>'84152841', 
      'byhref'=>'1', 
      'skill'=>'somesiteILS', 
      'SESSIONVAR!skill'=>'somesiteILS', 
      'SESSIONVAR!Management Company'=>$_MGT_NAME, 
      'SESSIONVAR!Community'=>$_NAME, 
      'SESSIONVAR!Ad%20Source'=>'somesite.com', 
      'imageUrl'=>"http://{$_SERVER['SITENAME']}/images/" 
     )); 
     $imgurl= $lpbase.urlencodearray(array(
      'cmd'=>'repstate', 
      'site'=>'84152841', 
      'channel'=>'web', 
      'ver'=>'1', 
      'skill'=>'somesiteILS', 
      'imageUrl'=>"http://{$_SERVER['SITENAME']}/images/" 
     )); 
    ?> 

    <div id="caller_tag"> 
     <a id="_lpChatBtn" target="chat84152841" href="<?php h($url); ?>"> 
      <img src="<?php h($imgurl); ?>" name="hcIcon" alt="Chat" border="0"> 
     </a> 
     <script type="text/javascript"> 
      document.getElementById('_lpChatBtn').onclick= function() { 
       var url= this.href+'&referrer='+encodeURIComponent(location.href); 
       if ('lpAppendVisitorCookies' in window) 
        url= lpAppendVisitorCookies(url); 
       if ('lpMTag' in window && 'addFirstPartyCookies' in lpMTag) 
        url= lpMTag.addFirstPartyCookies(url) 
       window.open(url, this.target, 'width=475,height=400,resizable=yes'); 
       return false; 
      }; 
     </script> 
    </div> 
+0

謝謝,幫助很多 – Trace 2010-08-27 16:40:50

2

首先:你爲什麼要打開和關閉PHP這麼多次,你可以寫這樣的:

<?php 
} elseif($_SOMETHING == 1 && $_ANOTHER_THING == 2) { 
$_NAME = urlencode($_NAME); 
$_MGT_NAME = urlencode($_MGT_NAME); 
?> 
<div id="caller_tag"> 
<!-- BEGIN LivePerson Button Code --><a id="_lpChatBtn" href='http://server.iad.liveperson.net/hc/84152841/?cmd=file&file=visitorWantsToChat&site=84152841&byhref=1&SESSIONVAR!skill=somesiteILS&SESSIONVAR!Management%20Company=<?php print $_MGT_NAME; ?>&SESSIONVAR!Community=<?php print $_NAME; ?>&SESSIONVAR!Ad%20Source=somesite.com&imageUrl=<?php print "http://{$_SERVER['SITENAME']}/images/";?>' target='chat84152841' onClick="lpButtonCTTUrl = 'http://server.iad.liveperson.net/hc/84152841/?cmd=file&file=visitorWantsToChat&site=84152841&SESSIONVAR!skill=somesiteILS&SESSIONVAR!Management%20Company=<?php print $_MGT_NAME; ?>&SESSIONVAR!Community=<?php print $_NAME; ?>&SESSIONVAR!Ad%20Source=somesite.com& ='+escape(document.location); imageUrl=<?php print "http://{$_SERVER['SITENAME']}/images/";?>&referrer lpButtonCTTUrl = (typeof(lpAppendVisitorCookies) != 'undefined' ? lpAppendVisitorCookies(lpButtonCTTUrl) : lpButtonCTTUrl); lpButtonCTTUrl = ((typeof(lpMTag)!='undefined' && typeof(lpMTag.addFirstPartyCookies)!='undefined')?lpMTag.addFirstPartyCookies(lpButtonCTTUrl):lpButtonCTTUrl);window.open(lpButtonCTTUrl,'chat84152841','width=475,height=400,resizable=yes');return false;" ><img src='http://server.iad.liveperson.net/hc/84152841/?cmd=repstate&site=84152841&channel=web&&ver=1&imageUrl=<?php print "http://{$_SERVER['SITENAME']}/images/";?>&skill=somesiteILS' name='hcIcon' alt='Chat Button' border=0></a><!-- END LivePerson Button code --> 
</div> 

而且也:誤差必須在其他地方,我看不到缺少「; 「在你粘貼的代碼在PHP中,除非錯誤是在JavaScript中。

4

由於沒有格式化的混亂,難怪你找不到錯誤。

我試着通過HTML Tidy運行它,但它不喜歡評論之間的任何內容。

mesite.com& ='+escape(document.location); imageUrl=<?php print "ht 

我不擅長閱讀長行這樣的,但不應該這樣被

mesite.com& ='+escape(document.location) +'imageUrl=<?php print "ht 
+0

固定的第一部分不是我得到相同的錯誤furthur字符字符392 – Trace 2010-08-27 15:23:16