Home › Forum › Plugin e temi di WP › Form contatti a scelta multipla in una pagina
-
AutorePost
-
-
31 Agosto 2006 alle 11:31 #2060pmalerbaPartecipante
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 è 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 è stato spedito</h2><p>L' indirizzo email non sembra valido.";
elseif(mail($receiverMail, $subject, $msgformat, "Da: $name <$email>"))
$resp="<h2>Il messaggio è stato spedito con successo</h2><p>Riceverai una risposta al più presto direttamente al tuo indirizzo email. Grazie per averci scelto.";
else $resp="<h2>Il messaggio non è stato spedito</h2><p>Si sono infatti verificati problemi tecnici: ti invitiamo a riprovare più 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
-
31 Agosto 2006 alle 15:42 #39909SteveAglAmministratore del forum
molto probabilmente sono i permalink…
prova a mettere un
print_r($_REQUEST);
nella sezione di codice eseguita dopo l’invio del form.
-
31 Agosto 2006 alle 21:25 #39915pmalerbaPartecipante
Ciao mrbrown, e grazie per la risposta!
Intendi qui:
... ti invitiamo a riprovare più 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..
-
1 Settembre 2006 alle 18:59 #39917pmalerbaPartecipante
mmm ho provato praticamente in tutti i modi possibili..e sempre pagina 404!
O sbaglio io o proprio non ne vuole sapere di fungere!
-
2 Settembre 2006 alle 10:54 #39921SteveAglAmministratore del forum
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.
-
2 Settembre 2006 alle 15:16 #39929pmalerbaPartecipante
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.
-
2 Settembre 2006 alle 15:55 #39930FreeplePartecipante
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!
-
4 Settembre 2006 alle 10:14 #39940pmalerbaPartecipante
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?
-
4 Settembre 2006 alle 11:18 #39942FreeplePartecipante
Ciao Pietro!
Intendevo solamenta il codice PHP per l’invio delle email.
Lo integro nel mio template …
Grazie sin da ora, ciao!
-
4 Settembre 2006 alle 11:56 #39943pmalerbaPartecipante
OT MODE ON
Ecco il codice
<?
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 è 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 è stato spedito</h2><p>L' indirizzo email non sembra valido.";
elseif(mail($receiverMail, $subject, $msgformat, "From: $name <$email>"))
$resp="<h2>Il messaggio è stato spedito con successo</h2><p>Ti risponderemo al più presto.";
else $resp="<h2>Il messaggio non è stato spedito</h2><p>Si sono infatti verificati problemi tecnici: ti invitiamo a riprovare più 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ù 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à: </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
-
4 Settembre 2006 alle 12:45 #39945FreeplePartecipante
Ciao Pietro!
Funziona! Quando l’avrò coreografato te lo indicherò.
Per ora, grzie!
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.