2013-08-22 45 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\');