2010-04-06 5 views
0

전자 메일을 보낼 때마다 올바르게 전송됩니다.Codeigniter의 ajax 양식에 문제가 발생했습니다.

Nome: Jon Doe 
Empresa: Star 
Cargo: Developer 
Email: [email protected] 
Telefone: 090909222988 
Assunto: Subject here.. 

하지만의 costumers에서이 같은 잡 이메일을 유지 (크롬 사파리, 파이어 폭스,. : IE6, IE7, IE8, 사파리, 파이어 폭스, 크롬 MAC. 나는 PC에서 테스트 한) :

Nome: 
Empresa: 
Cargo: 
Email: 
Telefone: 
Assunto: 

CONTACT_FORM.PHP

<form name="frm" id="frm">     
    <div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Nome<font style="color:#EE3063;">*</font></div> 
    <div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="Cnome" id="Cnome" value=""/></div> 


    <div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Empresa<font style="color:#EE3063;">*</font></div> 
    <div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="CEmpresa" id="CEmpresa" value=""/></div> 

    <div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Cargo</div> 
    <div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="CCargo" id="CCargo" value=""/></div> 

    <div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Email<font style="color:#EE3063;">*</font></div> 
    <div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="CEmail" id="CEmail" value=""/></div> 


    <div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Telefone</div> 
    <div class="campoFormulario inputDeCampo" ><input class="texto textocinzaescuro" size="31" name="CTelefone" id="CTelefone" value=""/></div> 

    <div class="campoFormulario nomeDeCampo texto textocinzaescuro" >Assunto<font style="color:#EE3063;">*</font></div> 
    <div class="campoFormulario inputDeCampo" ><textarea class="texto textocinzaescuro" name="CAssunto" id="CAssunto" rows="2" cols="28"></textarea></div> 

    <div class="campoFormulario nomeDeCampo texto textocinzaescuro" >&nbsp;</div> 
    <div class="campoFormulario inputDeCampo" style="text-align:right;" ><input id="Cbutton" class="texto textocinzaescuro" type="submit" name="submit" value="Enviar" /></div> 
    </form> 





<script type="text/javascript"> 

$(function() { 
    $("#Cbutton").click(function() { 

     if(validarForm()){ 
      var Cnome = $("input#Cnome").val(); 
      var CEmpresa = $("input#CEmpresa").val(); 
      var CEmail = $("input#CEmail").val(); 
      var CCargo = $("input#CCargo").val(); 
      var CTelefone = $("input#CTelefone").val(); 
      var CAssunto = $("textarea#CAssunto").val(); 


      var dataString = 'nome='+ Cnome + '&Empresa=' + CEmpresa + '&Email=' + CEmail + '&Cargo=' + CCargo + '&Telefone=' + CTelefone + '&Assunto=' + CAssunto; 
      //alert (dataString);return false; 

      $.ajax({ 
     type: "POST", 
     url: "http://www.myserver.com/index.php/pt/envia", 
     data: dataString, 
     success: function() { 
      $('#frm').remove(); 
      $('#blocoform').append("<br />Obrigado. <img id='checkmark' src='http://www.myserver.com/public/images/estrutura/ok.gif' /><br />Será contactado brevemente.<br /><br /><br /><br /><br /><br />") 
      .hide() 
      .fadeIn(1500); 

     } 
      }); 
    } 
    return false; 

    }); 


    }); 

function validarForm(){ 
    var error = 0; 

    if(!validateNome(document.getElementById("Cnome"))){ error = 1 ;}    
    if(!validateNome(document.getElementById("CEmpresa"))){ error = 1 ;}   
    if(!validateEmail(document.getElementById("CEmail"))){ error = 1 ;}    
     if(!validateNome(document.getElementById("CAssunto"))){ error = 1 ;}    

    if(error == 0){ 
     //frm.submit(); 
      return true; 
    }else{ 
      alert('Preencha os campos correctamente.'); 
      return false; 
     } 
    } 

function validateNome(fld){ 
     if(fld.value.length == 0 ){ 
     fld.style.backgroundColor = '#FFFFCC'; 
     //alert('Descrição é um campo obrigatório.'); 
     return false; 
     }else { 
      fld.style.background = 'White'; 
     return true; 
     } 
} 

function trim(s) 
{ 
    return s.replace(/^\s+|\s+$/, ''); 
} 

function validateEmail(fld) { 
    var tfld = trim(fld.value);      
    var emailFilter = /^[^@][email protected][^@.]+\.[^@]*\w\w$/ ; 
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ; 

    if (fld.value == "") { 
     fld.style.background = '#FFFFCC'; 
      //alert('Email é um campo obrigatório.'); 
     return false; 
    } else if (!emailFilter.test(tfld)) { 
      //alert('Email inválido.'); 
     fld.style.background = '#FFFFCC'; 
     return false; 
    } else if (fld.value.match(illegalChars)) { 
     fld.style.background = '#FFFFCC'; 
      //alert('Email inválido.'); 
     return false; 
    } else { 
     fld.style.background = 'White'; 
     return true; 
    } 
} 
</script> 

기능의 ENV IA (전자 메일 발신자) :

function envia() 
    { 
     $this->load->helper(array('form', 'url')); 

     $nome = $_POST['nome']; 
     $empresa = $_POST['Empresa']; 
     $cargo = $_POST['Cargo']; 
     $email = $_POST['Email']; 
     $telefone = $_POST['Telefone']; 
     $assunto = $_POST['Assunto']; 

     $mensagem =  " Nome:".$nome." 
    Empresa:".$empresa." 
    Cargo:".$cargo." 
    Email:".$email." 
    Telefone:".$telefone." 
    Assunto:".$assunto.""; 

    $headers = 'From: [email protected]' . "\r\n" . 
'Reply-To: no-reply' . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

     mail('[email protected]', $mensagem, $headers); 

    } 

답변

3

클라이언트 측 유효성 검사 만 수행합니다. 브라우저에서 자바 스크립트를 사용 중지하고 다른 작업을 수행하지 않고 양식에서 '제출'을 클릭하십시오. 빈 이메일을 받게됩니다.

클라이언트 측 유효성 검사는 이야기의 절반에 불과합니다. 멋지지만 옵션으로 간주하십시오. 서버가가는 한 _POST _GET _COOKIE 등은 모두 호의적입니다. 그것을 검증하십시오 (클라이언트 측 유효성 검사를 사용하는 경우, 그렇습니다. 유효성을 두 번 유효하게합니다). 그리고 그것을 소독 한 다음 사용하십시오.

+0

_POST는 jquery (javascript)에서 완료되었습니다. 그렇다면 브라우저에서 자바 스크립트를 끄면 아무 일도 일어나지 않습니다. 왜냐하면 아무 것도 _POST 처리되지 않기 때문입니다. – Bonfocchi

관련 문제