Interazione js e php

di il
8 risposte

Interazione js e php

Ho questo codice js che valida un'email, nel file php ho già FILTER_VALIDATE_EMAIL ora dovrei farlo interagire col js, in pratica lo devo mettere al posto della regex

function validaMail() {
var f = document.forms.mioform1;
if (f.suoemail.value.length != 0) { 
var reg = /^(([^<>()\[\]\\.,;:\s@"-]+((\.|\-)[^<>()\[\]\\.,;:\s@"-]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!f.suoemail.value.match(reg)) {  
f.suoemail.style.borderColor='black'                                                                                                     
f.suoemail.style.backgroundColor='#d8ecff'
document.getElementById('validaMail').innerHTML = "&bull;&nbsp;&nbsp;Inserire un'email valida";
f.suoemail.focus();
return false;
}
else {
document.getElementById('validaMail').innerHTML = "";
}  
} 
else {
document.getElementById('validaMail').innerHTML = "";
}
return true;
}

8 Risposte

  • Re: Interazione js e php

    Ciao!

    in che senso lo devi mettere al posto della regex?
  • Re: Interazione js e php

    Invece di mettere questo:
    var reg = /^(([^<>()\[\]\\.,;:\s@"-]+((\.|\-)[^<>()\[\]\\.,;:\s@"-]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    dovrei mettere questo, ma essendo un validatore in php, non so come fare
    FILTER_VALIDATE_EMAIL
  • Re: Interazione js e php

    Semplicemente non puoi.
    l'unica cosa che puoi fare è usare AJAX:
    -crei un file php a cui mandi i dati in GET o POST
    -validi l'email
    -ritorni il risultato a javascript
    -in base al risultato fai quello che devi
  • Re: Interazione js e php

    Sto cercando di farlo, ma non funziona
  • Re: Interazione js e php

    Posta il codice che hai provato!
    sennò non ti si può aiutare...

    sia il javascript, sia il php
  • Re: Interazione js e php

    PHP
    function get_domain($address) { 
        if (filter_var($address, FILTER_VALIDATE_EMAIL) === false) { 
            return ""; 
        } 
       return array_pop(explode('@', $address)); 
    }  
    
    function in_blacklist($domain) {  
        global $blacklist; 
        return in_array($domain, $blacklist); 
    } 
    $domain = get_domain($suoemail);  
        if (empty($suoemail)) { 
            $errore .= "&bull;&nbsp;&nbsp;Inserire l'email<br><br>"; 
    } 
    else { 
        if (filter_var($suoemail, FILTER_VALIDATE_EMAIL) === false) { 
            $errore .= "&bull;&nbsp;&nbsp;Inserire un'email valida<br><br>"; 
        } 
        elseif (empty($domain) || in_blacklist($domain)) { 
            $errore .= "&bull;&nbsp;&nbsp;Questa email non &egrave; accettata<br><br>"; 
        } 
    }  
    Questo è il codice js che valida l'email, io al posto della regex ci devo mettere questo FILTER_VALIDATE_EMAIL
    function validaMail() {
    var f = document.forms.mioform1;
    if (f.suoemail.value.length != 0) { 
    var reg = /^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;
    if (!f.suoemail.value.match(reg)) {  
    document.getElementById('validaMail').innerHTML = "&bull;&nbsp;&nbsp;Inserire un'email valida";
    f.suoemail.focus();
    return false;
    }
    else {
    document.getElementById('validaMail').innerHTML = "";
    }  
    } 
    else {
    document.getElementById('validaMail').innerHTML = "";
    }
    return true;
    }
    Ho già anche questo email_ajax.php
    <?php
    header('Content-Type: application/json'); 
    
    function get_domain($address) { 
        if (filter_var($address, FILTER_VALIDATE_EMAIL) === false) { 
            return ""; 
        } 
    
        return array_pop(explode('@', $address)); 
    } 
    
    function in_blacklist($domain) { 
        global $blacklist; 
    
        return in_array($domain, $blacklist); 
    } 
    
    function report($valid = true, $error = 0, $message = "") { 
        $result = array( 
            "valid" => $valid, 
            "error" => $error, 
            "message" => $message 
        ); 
         
        return json_encode($result); 
    } 
    
    $address = $_GET['address']; 
    $domain  = get_domain($address); 
     
     // Controlla se il campo è vuoto
    if (empty($address)) {  
        echo report(false, 1); 
        return;
    } 
    
     // Controlla se è un'email valida
    if (filter_var($address, FILTER_VALIDATE_EMAIL) === false) { 
        echo report(false, 2); 
        return; 
    } 
    
    // Controlla se il dominio è spam
    if (empty($domain) || in_blacklist($domain)) { 
        echo report(false, 3); 
        return; 
    } 
    
    echo report(true);  
  • Re: Interazione js e php

    Scusami la chiamata ajax via javascript dove la fai?
    ti posto un banale esempio con jquery:
    
    function sendEmail() {
        $.ajax({
            type: "GET", // o POST
            dataType: "html",
            url: "file.php",
            data: "email=TUA_EMAIL",
            success: function (res) {
                console.log(res);
            }, error: function(err) {
                console.log(err);
            }
        });
    }
    
    poi in php una cosa del genere:
    
    <?php
    // file.php
    $email = $_GET['email']; // o POST
    if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
      echo "OK";
    } else {
      echo "KO";
    }
    
    l''ho scritto al volo, non testato.

    sarebbe anche meglio ti documentassi un attimo.....
  • Re: Interazione js e php

    La faccenda della regex è a posto, ora c'è solo questo codice, funziona ma non prende il focus in caso di errore.
    <script>
    function spamMail() {
        var f = document.forms.mioform1;
        var xxx = new Array(<?php echo "'" . implode("', '", $blacklist) . "'"; ?>);
        var address = f.suoemail.value;
        var fields = address.split("@");
    
        //Se l'indirizzo non ha dominio, non fare nulla
        if (fields.length == 0) {
            return true;
        }
        var domain = fields[fields.length -1 ];
    
        // Se incontri un dominio della blacklist, fermati
        for (var i = 0; i < xxx.length; i++) {
            if (domain == xxx[i]) {
                document.getElementById('spamMail').innerHTML = "&bull;&nbsp;&nbsp;Questa email non &egrave; accettata";
                f.suoemail.focus();
                return false;
            }
        }
       document.getElementById('spamMail').innerHTML = "";
        return true;
    }
    </script>
Devi accedere o registrarti per scrivere nel forum
8 risposte