WordPress Italy Forum » Plugin e temi di WP

Form contatti a scelta multipla in una pagina

(11 articoli)

Tag:

Ancora nessun tag.


  1. Salve a tutti.
    Sto realizzando una pagina di wp al cui interno vorrei avere una specie di modulo contatti utilizzato come richiesta di materiale. (Lo so che esistono plugin adatti a questo scopo ma non sono personalizzabili ne tantomeno permettono la scelta multilpla)

    Ho creato un nuovo template di pagina
    <?php
    /*
    Template Name: Modulo materiale
    */
    ?>

    E ho una struttura di questo tipo:

    <?php get_header(); ?>
    <div id="contenitore"
    <?php get_sidebar(); ?>
    <div id="contenuto">
    <div class="post">
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php the_content(); ?>
    <?php endwhile; endif; ?>
    </div>
    <?
    if (isset($_POST['submit']) and $_POST['submit']==TRUE) {
    $receiverMail = "miamail@miosito.com";
    $name=stripslashes(strip_tags($_POST['name']));
    $email=stripslashes(strip_tags($_POST['email']));
    $luogo=stripslashes(strip_tags($_POST['luogo']));
    $subject=stripslashes(strip_tags($_POST['subject']));
    $msg=stripslashes(strip_tags($_POST['message']));
    $make=stripslashes(strip_tags($_POST['make']));
    $ip=$_SERVER['REMOTE_ADDR'];
    $msgformat="Messaggio da: $name ($ip); scrive da $luogo ; nEmail: $emailnn$msg $make $type $model $lunghezza $larghezza";
    if(empty($name) || empty($email) || empty($subject) || empty($luogo) || empty($msg) || empty($make))
    $resp="<h2>Il messaggio non &egrave; stato spedito</h2><p>Per favore compila tutti i campi.";
    elseif(!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $email))
    $resp="<h2>Il messaggio non &egrave; stato spedito</h2><p>L' indirizzo email non sembra valido.";
    elseif(mail($receiverMail, $subject, $msgformat, "Da: $name <$email>"))
    $resp="<h2>Il messaggio &egrave; stato spedito con successo</h2><p>Riceverai una risposta al pi&ugrave; presto direttamente al tuo indirizzo email. Grazie per averci scelto.";
    else $resp="<h2>Il messaggio non &egrave; stato spedito</h2><p>Si sono infatti verificati problemi tecnici: ti invitiamo a riprovare pi&ugrave; tardi.";
    $resp=$resp." Puoi tornare alla <a href=\"index.php\">Home page</a></p>";
    echo $resp;
    }
    else { ?>
    <form method="post" action=""><div id="materiale">
    <label for="name">Nome: </label>

    <p><input type="text" id="name" name="name" size="25">
    </p>
    <br>
    [CUT -- CUT -- CUT ]
    </form>
    <? } ?><
    </div> <!-- Closes the contenuto div-->
    </div>
    <!-- Closes the contenutore div-->
    <?php include('footer.php'); ?>

    Perdonate la lunghezza del codice. Il problema è che se provo ad inviare la richiesta mi viene restituita la pagina template 404.
    Il modulo sono certo che funzioni.

    Il problema è dovuto sicuramente a uno di questi due motivi:

    1- I permalink danno fastidio all'esecuzione dello script (molto improbabile)
    2- Problemi di Loop.

    Sono fuori strada?
    tnx

    Posted: 5 anni # -
  2. molto probabilmente sono i permalink...
    prova a mettere un

    print_r($_REQUEST);

    nella sezione di codice eseguita dopo l'invio del form.

    Posted: 5 anni # -
  3. Ciao mrbrown, e grazie per la risposta!

    Intendi qui:

    ... ti invitiamo a riprovare pi&ugrave; tardi.";
    $resp=$resp." Puoi tornare alla <a href=\"index.php\">Home page</a></p>";
    echo $resp;
    <strong>QUI --> print_r($_REQUEST);</strong>
    }
    else { ?>
    <form method="post" action=""><div id="materiale">
    <label for="name">Nome: </label>

    Se messo li ottengo sempre lo stesso errore.. :(

    Posted: 5 anni # -
  4. mmm ho provato praticamente in tutti i modi possibili..e sempre pagina 404!
    O sbaglio io o proprio non ne vuole sapere di fungere!

    Posted: 5 anni # -
  5. Purtroppo questa cosa dei permalink spesso crea problemi.

    Se vuoi risolvere in modo semplice, allora non ti resta che mettere solo il form nella pagina Modulo Materiale e creare una nuova pagina / script php, nella directory principale di WP, da impostare come action del form e spedire il modulo da lì.
    Forse non è molto elegante, pero' così può funzionare.

    Posted: 5 anni # -
  6. Io ho risolto in maniera molto..ma molto.. meno elegante! :(
    E' una soluzione momentanea che permette il funzionamento del form. In pratica ho eliminato i vari get_header() etc etc e ho creato una pagina php statica con tanto di header, sidebar e chi ne ha piu ne metta cercando di rispettare il più possibile l'architettura del sito.
    L'unica cosa che adesso devo sistemare è che dato che la pagina incriminata è in realtà una "sottopagina" e ha una struttura del tipo miosito.com/pagina1/richiesta-materiale adesso mi viene fuori miosito.com/pagina1/richiesta-materiale.php</strong!

    E' indubbiamente poco elegante ma.." a mali estremi, estremi rimedi"!

    ps.
    Eppure ho usato lo stesso modulo su in sito che sfrutta gli url rewrite da "index.php?contatti.php a /contatti " e funziona egregiamente.

    Posted: 5 anni # -
  7. Ciao Pietro!

    Avresti voglia di spedirmi il tuo file per evitare di ricostruilo ...
    Mi eviteresti un po' di fatica ... Se guardi http://www.norisberghen.it/it/ capirai questa "pretesa" ...

    A presto,, ciao!

    Posted: 5 anni # -
  8. Ciao Freeple!
    Se intendi lo script per l'invio di mail non c'è problema!
    Se intendi invece il template di pagina contatti è un'altra storia!

    A te cosa serve di preciso?

    Posted: 5 anni # -
  9. Ciao Pietro!

    Intendevo solamenta il codice PHP per l'invio delle email.
    Lo integro nel mio template ...

    Grazie sin da ora, ciao!

    Posted: 5 anni # -
  10. OT MODE ON

    Ecco il codice :P

    <?
    if (isset($_POST['submit']) and $_POST['submit']==TRUE) {
    $receiverMail = "tua@mail.it"; //QUI METTERE L' INDIRIZZO EMAIL
    $name=stripslashes(strip_tags($_POST['name']));
    $email=stripslashes(strip_tags($_POST['email']));
    $luogo=stripslashes(strip_tags($_POST['luogo']));
    $subject=stripslashes(strip_tags($_POST['subject']));
    $msg=stripslashes(strip_tags($_POST['message']));
    $ip=$_SERVER['REMOTE_ADDR'];
    $msgformat="From: $name ($ip) $luogo nEmail: $emailnn$msg";
    if(empty($name) || empty($email) || empty($subject) || empty($luogo) || empty($msg))
    $resp="<h2>Il messaggio non &egrave; stato spedito</h2><p>Per favore compila tutti i campi.";
    elseif(!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $email))
    $resp="<h2>Il messaggio non &egrave; stato spedito</h2><p>L' indirizzo email non sembra valido.";
    elseif(mail($receiverMail, $subject, $msgformat, "From: $name <$email>"))
    $resp="<h2>Il messaggio &egrave; stato spedito con successo</h2><p>Ti risponderemo al pi&ugrave; presto.";
    else $resp="<h2>Il messaggio non &egrave; stato spedito</h2><p>Si sono infatti verificati problemi tecnici: ti invitiamo a riprovare pi&ugrave; tardi.";
    $resp=$resp." Puoi tornare alla <a href=\"index.php\">Home page</a> oppure, con il tasto indietro del browser, ritornare alla pagina di contatti.</p>";
    echo $resp;
    }
    else { ?>
    <form method="post" action="">
    <h2>Modulo di contatto</h2>
    <p>Per contattarci compila il modulo sottostante, avendo cura di
    fornire un indirizzo e-mail valido al quale ti risponderemo al pi&ugrave; presto.</p>
    <div>
    <label for="name">nome: </label>
    <p><input type="text" id="name" name="name" size="25">
    </p>
    <br>
    <label for="email">e-mail: </label>
    <p><input type="text" id="email" name="email" size="25">
    </p>
    <br>
    <label for="luogo">citt&agrave;: </label>
    <p><input type="text" id="luogo" name="luogo" size="25">
    </p>
    <label for="subject">oggetto: </label>
    <p><input type="text" id="subject" name="subject" size="55">
    </p>
    <br>
    <label for="message">messaggio: </label>
    <p><textarea id="message" name="message" rows="8" cols="52"></textarea>
    </p>
    <br>
    <p><input type="submit" name="submit" id="submit" value="invia">
    </p>
    <br>
    </div>
    </form>
    <? } ?><br>

    Se riesci a farlo funzionare con permalink attivi in un template di pagina wp fammi un fischio! :)

    Ciao

    OT MODE OFF

    Posted: 5 anni # -
  11. Ciao Pietro!

    Funziona! Quando l'avrò coreografato te lo indicherò.

    Per ora, grzie!

    Posted: 5 anni # -

RSS feed for this topic

Replica

Devi aver fatto il login per poter pubblicare articoli.