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

Je reçois cette erreur attendue ';'quel est le problème avec cet extrait

+11

, s'il vous plaît, format de code – Topera

+0

Avez-vous une ligne et numéro de colonne avec l'erreur? –

+1

Déterminez un moyen d'envelopper le code afin qu'il soit lisible. Je ne vais pas prendre la peine d'essayer d'y répondre si c'est ennuyeux à lire. –

Répondre

5

L'horreur. L'horreur.

est ici l'erreur réelle, la valeur de l'attribut onclick:

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

C'est, il devrait y avoir un +' au lieu de ; après l'inclusion document.location, et il devrait y avoir un devis de fermeture après l'inclusion imageURL, et referrer est au mauvais endroit (il devrait être juste avant le

inclusion document.location. il a également des problèmes tels que l'utilisation de escape (ne jamais utiliser escape. Pour vous URL codant pour ac veulent généralement encodeURLComponent); les esperluettes non échappées partout; et l'absence de codage HTML et URL des valeurs générées par PHP, ce qui peut entraîner des risques de script entre sites.

Écrire une valeur à l'intérieur d'un composant URL dans une URL à l'intérieur d'un littéral de chaîne JavaScript dans une valeur d'attribut à l'intérieur du code HTML est la folie totale il n'est donc pas surprenant qu'il y ait des erreurs. Essayons d'apporter une certaine maintenabilité à cette folie. Découpez la création de JavaScript et d'URL en étapes distinctes où l'obtention du droit d'échappement est possible.

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); 
} 

Avec ces fonctions utilitaires définies, puis:

<?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> 
homme
+0

merci qui a aidé beaucoup – Trace

2

d'abord: pourquoi êtes-vous ouverture et la fermeture PHP tant de fois, vous pouvez l'écrire comme:

<?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> 

Et aussi: l'erreur doit être quelque part ailleurs, je ne vois pas un manque « ; " en php dans le code que vous avez collé, sauf si l'erreur est en javascript.

4

Avec un mess non formaté comme ça, il n'est pas étonnant que vous ne trouviez pas l'erreur.

J'ai essayé de l'exécuter via HTML Tidy mais il n'aime rien entre les commentaires.

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

Je ne suis pas bon à la lecture de longues lignes comme ça, mais ne devrait pas être ce

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

qui a fixé la première partie pas je reçois la même erreur furthur sur la chaîne sur char 392 – Trace

Questions connexes