Repository 32bit  Forum
Repository 64bit  Wiki

form in PHP

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
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 dell'ultima regola 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 18: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: 5419
Iscritto il: ven gen 16, 2004 1:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: form in PHP

Messaggioda roberto67 » sab gen 28, 2012 0: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
Linux 2.4
Linux 2.4
 
Messaggi: 260
Iscritto il: lun set 14, 2009 18:55
Slackware: 14.0 multilib
Desktop: kde 4.8.5

Re: form in PHP

Messaggioda samiel » sab gen 28, 2012 14: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: 5419
Iscritto il: ven gen 16, 2004 1: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 15: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: 11892
Iscritto il: gio lug 14, 2005 0:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: form in PHP

Messaggioda samiel » sab gen 28, 2012 19: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: 5419
Iscritto il: ven gen 16, 2004 1: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 19: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: 11892
Iscritto il: gio lug 14, 2005 0:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: form in PHP

Messaggioda zoros » sab gen 28, 2012 20: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: 1294
Iscritto il: lun mag 28, 2007 22:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 13.37
Kernel: 3.2.5
Desktop: KDE-3.5.10

Re: form in PHP

Messaggioda samiel » sab gen 28, 2012 21: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: 5419
Iscritto il: ven gen 16, 2004 1: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 14:34

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

Re: form in PHP

Messaggioda samiel » dom feb 05, 2012 0: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: 5419
Iscritto il: ven gen 16, 2004 1: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: Nessuno e 2 ospiti