2013-08-22 80 views
-2

我看不到我的錯誤。我必須寫一些文字。我的代碼太多了? 我很少強調這個問題。我是個初學者,也許我工作太辛苦。聯繫表格:解析錯誤

<?php 

    $n = array(); 

    if (!empty($_POST)) 
    { 
     extract($_POST); 
     $valid = true; 

     if (empty($nom)) 
     { 
      $valid = false; 
      $erreur = 'Erreur nom'; 
      $n['erreurnom'] = true; 
     } 

     if (empty($email)) 
     { 
      $valid = false; 
      $erreur = 'Erreur email'; 
      $n['emailinvalide'] = false; 
      $n['erreuremail'] = true; 
     } 
     elseif (!preg_match('/^[a-z0-9\-_.][email protected][a-z0-9\-_.]+\.[a-z]{2,3}$/i', $email)) 
     { 
      $valid = false; 
      $erreur = 'Votre email n\'est pas valide'; 
      $n['erreuremail'] = false; 
      $n['emailinvalide'] = true; 
     } 

     if (empty($message)) 
     { 
      $valid = false; 
      $erreur = 'Erreur message'; 
      $n['erreurmessage'] = true; 
     } 
    } 
    else 
    { 
     $valid = false; 
    } 
    $n['valide'] = $valid; 
    echo json_encode($n); 


    if ($valid = true) 
    { 
     $to = '[email protected]<script type="text/javascript"> 
    /* <![CDATA[ */ 
    (function(){try{var s,a,i,j,r,c,l,b=document.getElementsByTagName("script");l=b[b.length-1].previousSibling;a=l.getAttribute('data-cfemail');if(a){s='';r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;s+=String.fromCharCode(c);}s=document.createTextNode(s);l.parentNode.replaceChild(s,l);}}catch(e){})(); 
    /* ]]> */ 
    </script>'; 
     $sujet = $nom . ' a contacté le site'; 
     $header = 'From: $nom <$email> \n'; 
     $message = stripslashes($message); 
     $nom = stripslashes($nom); 

     if (mail($to, $sujet, $message, $header)) 
     { 
      $erreur = 'Votre email nous est bien parvenu'; 
     } 
     else 
     { 
      $erreur = 'Une erreur est survenue. Mail bloqué'; 
     } 
     echo $erreur; 
    } 
?> 

我的問題:parse error in "(function(){try{var s,a,i,j,r,c,l,b=document.getElementsByTagName("script") ....."

+1

不要使用'提取物()'!這是非常不安全的。 –

+0

你的字符串裏有一個非轉義的''',解析器將其解釋爲它的結尾。 – lafor

+2

爲什麼地球上有你的電子郵件'$ to'變量嵌入JavaScript? – Spudley

回答

1
'[...]previousSibling;a=l.getAttribute(('data-cfemail')[...]' 
             ^  ^
             here   and here 

您在與'開了一個字符串使用',你必須把它逃到\',這樣的:

'[...]previousSibling;a=l.getAttribute((\'data-cfemail\')[...]' 
+0

Thanx!但現在我所有的索引(與表單)上的ajax/js不再工作了大聲笑...我必須搜索... – Pierrot

0

你需要轉義的內容:

getAttribute('data-cfemail'); 

通過添加斜線

getAttribute(\'data-cfemail\');