Repository 32bit  Forum
Repository 64bit  Wiki

form in PHP

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

form in PHP

Messaggioda samiel » ven gen 27, 2012 17:46

Ho un form in PHP per inviare mail.
Inpassato funzionava a dovere, adesso però,
noncapisco comemai, non sembra funzionare
nel senso che le mail non arrivano.
Codice: Seleziona tutto
<div class="overtitle"><p>Segreteria</p></div>
<h1>Richiesta certificati</h1>

<script type="text/javascript">
        var RecaptchaOptions = {
                custom_translations : {
                        instructions_visual : "Scrivi le due parole:",
                        instructions_audio : "Trascrivi ci\u00f2 che senti:",
                        play_again : "Riascolta la traccia audio",
                        cant_hear_this : "Scarica la traccia in formato MP3",
                        visual_challenge : "Modalit\u00e0 visiva",
                        audio_challenge : "Modalit\u00e0 auditiva",
                        refresh_btn : "Chiedi due nuove parole",
                        help_btn : "Aiuto",
                        incorrect_try_again : "Scorretto. Riprova.",
                },
                lang : 'it', // Unavailable while writing this code (just for audio challenge)
                theme : 'clean',
        };
</script>

<?php
if(isset($_POST['name'])) {
// && isset($_POST['email']) && isset($_POST['telefono']) && isset($_POST['luogo']) && isset($_POST['data']) && isset($_POST['classe']) && isset($_POST['anno']) && isset($_POST['numero']) && isset($_POST['tipo']) && isset($_POST['uso'])){
// indirizzo e-mail destinatario
$receiverMail = "mail@mail.com";
// pulizia dei dati inseriti
// print_r($_POST);
$nome = ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));
$email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
$telefono = ltrim(rtrim(strip_tags(stripslashes($_POST['tel']))));
$luogo = ltrim(rtrim(strip_tags(stripslashes($_POST['luogo']))));
$data = ltrim(rtrim(strip_tags(stripslashes($_POST['data']))));
$classe = ltrim(rtrim(strip_tags(stripslashes($_POST['classe']))));
$anno = ltrim(rtrim(strip_tags(stripslashes($_POST['anno']))));
$numero = ltrim(rtrim(strip_tags(stripslashes($_POST['numero']))));
$tipo = trim(htmlspecialchars($_POST['tipo'], ENT_QUOTES));
$uso = trim(htmlspecialchars($_POST['uso'], ENT_QUOTES));
// ltrim(rtrim()) == trim()
// lettura dell'indirizzo IP
$ip = getenv("REMOTE_ADDR");
// formattazione del messaggio
$msgformat = "mittente: $nome\nIP del mittente: $ip\ne-mail: $email\ntelefono: $telefono\nnato a: $luogo\nin data: $data\niscritto alla classe: $classe\nnell'a. s.: $anno\nchiede numero: $numero\ncertificati di tipo: $tipo\nad uso: $uso\n";
// verifica dei campi
if(empty($nome) || empty($email) || empty($telefono) || empty($luogo) || empty($data) || empty($classe) || empty($anno) || empty($numero) || empty($tipo) || empty($uso)) {
echo "<h3 class=\"danger\">Il messaggio non &#232; stato inviato <br />
Si prega di compilare tutti i campi</h3>"; }
// verifica dell'indirizzo mail
elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
echo "<h3 class=\"danger\">Il messaggio non &#232; stato inviato<br />
L'indirizzo e-mail indicato non &#232; valido</h3>"; }
else{
// invio del messaggio
mail($receiverMail, "Oggetto: richiesta certificati", $msgformat);
echo "<h3>La richiesta &#232; stata inviata correttamente<br />
Il certificato potr&#224; essere ritirato presso la Segreteria<br />
il quinto giorno lavorativo successivo alla richiesta</h3>";
}
}
else{
// inserimento del form
// Per inviare alla stessa pagina, nel form basta mettere action=""
// Il parametro 'name' non serve nel submit e nel reset
echo <<<FRM
<h3>&#200; possibile richiedere un certificato <br /> direttamente da questo form</h3>
<h3 class="spacebottom">Riempire i campi richiesti, <br /> quindi la casella di
controllo <br /> e premere il pulsante "Invia"</h3>
<form action="" method="post">
<fieldset>
<label class="row" for="name">Il sottoscritto:</label><br />
<input type="text" name="name" id="name" size="50" maxlength="50" /><br /><br />
<label class="row" for="email">indirizzo e-mail:</label><br />
<input type="text" name="email" id="email" size="50" maxlength="50" /><br /><br />
<label class="row" for="tel">telefono:</label><br />
<input type="text" name="tel" id="tel" size="50" maxlength="50" /><br /><br />
<label class="row" for="luogo">nato a:</label><br />
<input type="text" name="luogo" id="luogo" size="50" maxlength="50" /><br /><br />
<label class="row" for="data">il giorno:</label><br />
<input type="text" name="data" id="data" size="50" maxlength="50" /><br /><br />
<label class="row" for="classe">iscritto alla classe:</label><br />
<input type="text" name="classe" id="classe" size="50" maxlength="50" /><br /><br />
<label class="row" for="anno">nell'anno scolastico:</label><br />
<input type="text" name="anno" id="anno" size="50" maxlength="50" /><br /><br />
<label class="row" for="numero">chiede numero:</label><br />
<input type="text" name="numero" id="numero" size="50" maxlength="50" /><br /><br />
<label class="row" for="tipo">certificati di:</label><br /><br />
<select name="tipo" size="1" id="tipo">
<option value="iscrizione">iscrizione</option>
<option value="iscrizione e frequenza">iscrizione e frequenza</option>
<option value="dichiarazione promozione">dichiarazione promozione</option>
<option value="promozione con voti">promozione con voti</option>
<option value="diploma">diploma</option>
</select><br /><br />
<label class="row" for="uso">ad uso:</label><br /><br />
<select name="uso" size="1" id="uso">
<option value="assegni familiari">assegni familiari</option>
<option value="assistenza sanitaria">assistenza sanitaria</option>
<option value="sussidio scolastico">sussidio scolastico</option>
<option value="borsa di studio">borsa di studio</option>
<option value="libretto di lavoro">libretto di lavoro</option>
<option value="rinvio obblighi di leva">rinvio obblighi di leva</option>
<option value="altro (usi consentiti dalla legge)">altro (usi consentiti dalla legge)</option>
</select><br /><br />
<p>Casella di controllo</p>
FRM;
// inserimento reCAPTCHA
require_once('recaptchalib.php');
  $publickey = "6LcXGL4SAAAAAJk4fa1MLc5y09rHr8Bxsg9S5L88";
  echo recaptcha_get_html($publickey);
echo <<<FRM
<br />
<input type="submit" value="Invia" />
<input type="reset" value="Cancella" />
</fieldset>
</form>
FRM;
}
?>

Ci trovate errori?
Grazie !!
M
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: form in PHP

Messaggioda roberto67 » ven gen 27, 2012 23:39

ma che errore ti da? ovviamente qui non posso postare
a parte la parte recaptcha, hai guardato se l'ultima riga dei due blocchi di testo con sintassi heredoc finiscono rigorosamente a capo, cioè senza spazi prima di FRM;?
[...]
<input type="submit" value="Invia" />
<input type="reset" value="Cancella" />
</fieldset>
</form>
FRM;


nel javascript mi pare che l'ultima virgola sia di troppo..
roberto67
Packager
Packager
 
Messaggi: 291
Iscritto il: lun set 14, 2009 17:55
Slackware: 14.1 multilib
Desktop: kde

Re: form in PHP

Messaggioda samiel » sab gen 28, 2012 13:53

Il codice mi sembra a posto.
Non dà alcun errore, anzi avverte
che il messaggio è stato correttamente inviato.
Solo che poi non arriva a destinazione nulla...

M
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: form in PHP

Messaggioda conraid » sab gen 28, 2012 14:05

Beh, no, a seconda di come è impostato il server tu non sai se da errore o no, dovresti fare il controllo della funziona, tipo (scrivo di getto controlla)

Codice: Seleziona tutto
if (mail($receiverMail, "Oggetto: richiesta certificati", $msgformat)) {
echo "<h3>La richiesta &#232; stata inviata correttamente<br />
Il certificato potr&#224; essere ritirato presso la Segreteria<br />
il quinto giorno lavorativo successivo alla richiesta</h3>";
} else {
  echo 'errore';
}

inoltre mi sembrerebbe giusto aggiungere un CC all'utente e non scrivere "La richiesta &#232; stata inviata correttamente, Il certificato potr&#224; essere ritirato presso la Segreteria il quinto giorno lavorativo successivo alla richiesta" perché appunto non sai se funziona o meno l'invio. Magari c'è un errore nel server mail e che fai?
Io mettere un banale "la richiesta è stata inviata, attendere conferma via mail" e poi mettere un reply automatico alle mail che arrivano dal form nel server mail o anche nel client se non è possibile nel server, anzi forse è meglio
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12023
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: form in PHP

Messaggioda samiel » sab gen 28, 2012 18:05

Osservazioni giustissime.
SOlo che ho se spedisco all'indirizzo "naturale" e cioè la Segreteria
non arriva niente. Allora ho modificato la voce $receiverMail = "mail@mail.com";
mettendo il mio indirizzo e non mi arriva niente lo stesso.
Per questo mi è sorto il dubbio che il problema non stia nel server mail della scuola:
perché allora col mio indirizzo dovrebbe funzionare!

M
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: form in PHP

Messaggioda conraid » sab gen 28, 2012 18:33

samiel ha scritto:Osservazioni giustissime.
SOlo che ho se spedisco all'indirizzo "naturale" e cioè la Segreteria
non arriva niente. Allora ho modificato la voce $receiverMail = "mail@mail.com";
mettendo il mio indirizzo e non mi arriva niente lo stesso.
Per questo mi è sorto il dubbio che il problema non stia nel server mail della scuola:
perché allora col mio indirizzo dovrebbe funzionare!

M


le considerazioni valgono comunque, devi vedere se la funziona php ritorna un errore oppure no, e da li a monte capire dove sia il problema.
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12023
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: form in PHP

Messaggioda zoros » sab gen 28, 2012 19:47

forse conviene fare dei test con il codice minimo, tipo "inviomail.php":
Codice: Seleziona tutto
<?php

$intestazioni  = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-Type: text/html;\r\n Content-Transfer-Encoding: 8bit\r\n charset=iso-8859-1\r\n";

$errorhandler = mail("mail@mail.com", "Una prova", "Testo del messaggio", $intestazioni);

echo ' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
echo '<html><body>';
echo "Mailer response: " . $errorhandler;
echo '</body></html>';

?>


forse conviene controllare che il record MX sia ok:
Codice: Seleziona tutto
dig -t mx dominio.dom

e vedere se per caso le mail sono finite nella directory spam
vorrei riavere le mie firme ...
Avatar utente
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1307
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 14.1
Kernel: 3.10.30-smp
Desktop: KDE-3.5(works!)

Re: form in PHP

Messaggioda samiel » sab gen 28, 2012 20:37

Ho provato con il codice suggeritomi:
Codice: Seleziona tutto
// invio del messaggio
elseif
(mail($receiverMail, "Oggetto: richiesta certificati", $msgformat)) {
echo "<h3>La richiesta &#232; stata inviata correttamente<br />
Il certificato potr&#224; essere ritirato presso la Segreteria<br />
il quinto giorno lavorativo successivo alla richiesta</h3>";
}
else {
  echo 'errore';
}}
// mail($receiverMail, "Oggetto: richiesta certificati", $msgformat);
// echo "<h3>La richiesta &#232; stata inviata correttamente<br />
// Il certificato potr&#224; essere ritirato presso la Segreteria<br />
// il quinto giorno lavorativo successivo alla richiesta</h3>";
// }
// }
else{
// inserimento del form

COmeprima, ottengo il messaggio di avvenuta spedizione
ma poi del messaggio si perdon le tracce....

M
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: form in PHP

Messaggioda conraid » ven feb 03, 2012 13:34

Prova con phpmailer (http://phpmailer.worxware.com/) mettendo un smtp esterno e vedi che succede
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12023
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: form in PHP

Messaggioda samiel » sab feb 04, 2012 23:57

Domani bambini permettendo provo.
la cosa che mi sconcerta è che quando ho messo un controllo chaptcha
poi ho provato e funzionava tutto. A distanza di tempo mi avvertono
che u messaggi non arrivano più e non capisco cosa sia accaduto
visto che nel frattempo non ho cambiato nulla...


M
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Google [Bot] e 2 ospiti