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

    [PHP5] Form contatti HTTP_POST_VARS da sostituire

    Ciao!

    Non mi funziona più lo script del form contatti per il passaggio del server a PHP5.

    Ho provato a sostituire $HTTP_POST_VARS con $POST ma non funziona!

    Potreste aiutarmi? Grazie! :-)


    Codice PHP:
    <?php 
    // Destinatario e-mail
    $to "mia e-mail";
        
    // Soggetto e-mail
    $subject "Richiesta da sito";    

    // Mittente e-mail
    $account "e-mail sito";

    function 
    stripslashes_array ($arr = array()) { 
        
    $rs = array(); 
        while (list(
    $key,$val) = each($arr)) { 
            
    $rs[$key] = trim(stripslashes($val), " "); 
        } 
        return 
    $rs
    }

    // Body e-mail
    $HTTP_POST_VARS stripslashes_array ($HTTP_POST_VARS);

    function 
    create_info_request_email_body ($HTTP_POST_VARS) {
        
    $txt "Richiesta da sito\n\n\n";
        
    $txt=$txt "Richiesta: " $HTTP_POST_VARS["richiesta"] . "\n";
        
    $txt=$txt "E-mail: " $HTTP_POST_VARS["email"] . "\n";
        return 
    $txt;
    }

    function 
    is_info_request_data_ok ($HTTP_POST_VARS) {
        
    // Checks for blank required fields
        
    if ($HTTP_POST_VARS["richiesta"]=="") {
            return 
    0;
        }
        
    // Checks for invalid e-mail address
        
    if ((strlen($HTTP_POST_VARS["email"])<5) || (!strchr($HTTP_POST_VARS["email"],"@"))) {
            return 
    0;
        }
        return 
    1;
    }

    function 
    insert_info_request_form ($errors$HTTP_POST_VARS) {
        if (
    $errors) {
            print 
    "Riempire correttamente tutti i campi obbligatori\n";
        }
                 print 
    "<form name=\"contatti\" method=\"post\" 
    action=\"contatti.php?type=process\">\n"
    ;
                 print 
    "E-mail <INPUT name=\"email\" value=\"" 
    $HTTP_POST_VARS["email"] ."\">\n";
                 print 
    "Richiesta <textarea name=\"richiesta\">"
    $HTTP_POST_VARS["richiesta"] ."</textarea>\n";
                 print 
    "<INPUT name=Submit type=submit value=\"Invia\">\n";
                 print 
    "</FORM>\n";
    }

    switch (
    $type) {
        case 
    "":
            
    insert_info_request_form (0$HTTP_POST_VARS);
            break;
        case 
    "process":
            if (!
    is_info_request_data_ok($HTTP_POST_VARS)) {
                
    insert_info_request_form (1$HTTP_POST_VARS);
            } else {
                if (
    mail ($to$subjectcreate_info_request_email_body ($HTTP_POST_VARS), 
    "From: " $account "\n")) {
                    print 
    "Inviata correttamente";
                } else {
                    print 
    "Non inviata";
                }
            }
            break;
        }
    ?>
    LuPooh - Grafica multimediale

  2. #2
    Semplificando lo script, ho scoperto che è anche l'invio di variabili che non funziona:

    Codice PHP:
    <form name=\"contatti\" method=\"post\" action=\"contatti.php?type=process#form\"> 
    E verificando la versione PHP, su 5.0.4 funzionava. Adesso su 5.2.12 non più.
    LuPooh - Grafica multimediale

  3. #3
    Prova a sostituire $HTTP_POST_VARS con $_SERVER['REQUEST_METHOD']
    Web developer blog - aggiornamenti e tutorial sul mondo web

  4. #4
    Hai provato $POST o $_POST?

  5. #5
    Con $_POST funziona in parte.

    Non va la parte
    <form name="contatti\" method=\"post\" action=\"contatti.php?type=process#form\">

    e creando due file diversi per eliminare il "case" non riesco a tornare alla prima pagina senza che si svuotino tutti i campi, come se $_POST si svuotasse al refresh della pagina.
    LuPooh - Grafica multimediale

  6. #6
    In che senso non va? Forse perche' ci sono tutti quei backslash?

    L'array $_POST e' definito solo nella pagina che riceve i dati del form tramite submit, se cambi pagina i valori non ci sono piu'.

  7. #7
    Grazie per la dritta su $_POST: ho dato per scontato funzionasse come $HTTP_POST_VARS

    Adesso funziona tutto: ho aggiunto un $type = $_GET[type]; all'inizio così non perdo il "process" inviato tramite action del form e funziona il case.

    Prima di cambiare versione di PHP il valore arrivava comunque: evidentemente con PHP 5.2.12 non più.

    Inoltre il nuovo server non accettava che impostassi il valore di "From" negli headers nell'invio e-mail: lasciando solo i campi obbligatori non dà più errore.


    Ricapitolo a chi interessasse:
    - $HTTP_POST_VARS diventa $_POST
    - tutte le altre variabili passate tramite URL vanno poi ripescate con $_GET


    Ciao e grazie!


    P.S: i backslash se usi le virgolette nel codice PHP li devi mettere: anzi, ne avevo perso uno per strada prima di "contatti"..
    LuPooh - Grafica multimediale

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.