Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [PHP+AJAX] form mail method post

    ciao a tutti!
    è il primo script che tento di fare con l'ausilio di ajax e quindi chiedo il vostro aiuto!

    allora:

    ho una pagina con un form, chiamiamola pagina.php, dove l'action è $_SERVER['PHP_SELF'] e method POST, la quale richiama lo script per l'invio che si chiama sender.php (incude_once("ls/sender.php").

    Nella pagina.php ho un div vuoto (<div id="dati"></div>) nel quale vorrei far visualizzare progressivamente il risultato di ogni invio mail (da come avete capito è un invio multiplo di email).

    Ho preso questo pezzo di codice googleggiando per l'oggetto xmlhttprequest (so che non è completo ma mi serve per ora solo a fare test)
    Codice PHP:
    function createObject() {
        var 
    tipo_richiesta;
        var 
    browser navigator.appName;
        if(
    browser == "Microsoft Internet Explorer") {
            
    tipo_richiesta = new ActiveXObject("Microsoft.XMLHTTP");
        } else {
            
    tipo_richiesta = new XMLHttpRequest();
        }
        return 
    tipo_richiesta;
    }

    var 
    http createObject();

    function 
    inviadati(valore) {
        
    //image progress
        
    var par window.parent.document;
        var 
    images par.getElementById('dati');
        var 
    new_div par.createElement('div');
        var 
    new_img par.createElement('img');
        
    new_img.src 'img/indicator.gif';
        
    new_div.appendChild(new_img);
        
    images.appendChild(new_div);
        
    http.open('get','ls/sender.php?testo=' valore '&oggetto=' oggetto '&email=' email);
        
    http.onreadystatechange handleResponse;
        
    http.send(null);
    }

    function 
    handleResponse() {
        if(
    http.readyState == 4) {
            var 
    response http.responseText;
            
    document.getElementById('dati').innerHTML response;
        }

    questo esempio invia i datia sender.php tramite GET... invece come devo procedere per utilizzare method POST anziche GET?

    Questo è un pezzo di codice esempio di sender.php utilizzando PhpMailer (ps= alcune parti sono commentate perchè questo script è richiamato da un'altra pagina php che già utilizza quelle istruzioni):


    Codice PHP:
    //error_reporting(E_ALL);

    //set_time_limit(0);

    //ob_start("ob_gzhandler");

    require("libs/phpmailerv2/class.phpmailer.php");

    $vars getConf();

    if(isset(
    $_POST['initsend'])) {
        
    $mailmittente $vars[0];
        
    $nomemittente $vars[1];
        
    $serversmtp $vars[2];
        
    $tiposervizio $vars[3];
        
        
    $titolo $_POST['titolomail'];
        
        
    $html $_POST['codice'];
        
    $alt $_POST['alttext'];
        
        
    $embeddedimages rtrim($_POST['embeddedimages'],',');
        
        
    $arrayembedded explode(",",$embeddedimages);
        
        
    $allegati $_POST['allegatichecked'];
        
        
    $destinatari $_POST['destinatari'];
        
        
    $mail = new PHPMailer();

        
    $mail->From     $mailmittente;
        
    $mail->FromName $nomemittente;
        
    $mail->Host     $serversmtp;
        
    $mail->Mailer   $tiposervizio;

        
    $arraydest explode(",",$destinatari);
        
    $arrayall explode(",",$allegati);
        
        foreach(
    $arraydest as $email) {
            
    $mail->Subject "TEST PROVA";
            
            
    // HTML body
            
    $body $html;
            
            foreach(
    $arrayembedded as $emb) {
                
    $ext explode(".",$emb);
                if(
    $ext[1]=="jpg" || $ext[1]=="jpe" || $ext[1]=="jpeg") {
                    
    $mail->AddEmbeddedImage("allegati/".$emb$emb$emb"base64""image/jpg");
                } elseif(
    $ext[1]=="png") {
                    
    $mail->AddEmbeddedImage("allegati/".$emb$emb$emb"base64""image/png");
                } elseif(
    $ext[1]=="bmp") {
                    
    $mail->AddEmbeddedImage("allegati/".$emb$emb$emb"base64""image/bmp");
                } elseif(
    $ext[1]=="gif") {
                    
    $mail->AddEmbeddedImage("allegati/".$emb$emb$emb"base64""image/gif");
                } else {
                    
    $mail->AddEmbeddedImage("allegati/".$emb$emb$emb"base64""application/octet-stream");
                }
            }

            foreach(
    $arrayall as $allegato) {
                
    $mail->AddAttachment('./allegati/'.$allegato);
            }
            
    //$mail->IsHTML(true);
            //$mail->Sender = "PHP5";
            
            // Plain text body (for mail clients that cannot read HTML)
            
    $text_body  $alt;
                
            
    $mail->Body    $body;
            
    $mail->AltBody $text_body;
        
            
    $mail->AddAddress($email);
            if(!
    $mail->Send()) {
                echo 
    "There has been a mail error sending to " $email " ".$mail->ErrorInfo."
    "
    ;
            } else {
                echo 
    "Email ok a ".$email."
    "
    ;
            }
            
    // Clear all addresses and attachments for next loop
            
    $mail->ClearAddresses();
            
    $mail->ClearAttachments();
        }
    }

    //ob_end_flush(); 
    Spero di essere stato chiaroe che mi possiate dare una mano!

    grazie


    edit:
    in questo esempio trovato su gooooogle l'invio dei dati è inizializzato così:
    Codice PHP:
    <input type="button" onclick="javascript:inviadati(document.theform.word.value,document.theform.ecc ecc);" value="invia" /> 
    Per una battaglia sono sempre a disposizione

  2. #2
    però dovresti studiarti un po' di ajax prima
    codice:
    ....
        http.open('post','ls/sender.php?testo=' + valore + '&oggetto=' + oggetto + '&email=' + email);
        http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        http.onreadystatechange = handleResponse;
    
        http.send(query_string);
    
    ...

  3. #3
    scusa una cosa...
    se uso il metodo POST non dovrei mettere variabili GET come hai scritto " http.open('post','ls/sender.php?testo=' + valore + '&oggetto=' + oggetto + '&email=' + email);" o sbaglio??
    Per una battaglia sono sempre a disposizione

  4. #4
    la query string la metti come argomento della funzione send.
    ciao
    sergio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.