[PHP] Form mail semplice semplice.. [RISOLTO]

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.
Rispondi
Avatar utente
Blallo
Packager
Packager
Messaggi: 3298
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

[PHP] Form mail semplice semplice.. [RISOLTO]

Messaggio da Blallo »

Date le mie NULLE conoscenze di PHP, mi sono rivolto alla rete per implementare un form mail che più base non si può.

Codice: Seleziona tutto

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>senderPage</title>
</head>
<body>
<?php
 if ((trim($_POST['object']) != "") && (trim($_POST['body']) != "") && (trim($_POST['mail']) != "")) {
  $to = "savino.liguori@gmail.com";
  $headers = "From: " . $_POST['mail'] . "\n";
  $subject = "Mail da Cretinate 4 Dummies";
  $redirect_1 = "http://cretinate4dummies.blogspot.com/p/graziemail.html";
  $redirect_2 = "http://cretinate4dummies.blogspot.com/p/errore.html";
  $body = "Contenuto del modulo:\n\n";
  $body .= "Inviata da: " . trim(stripslashes($_POST["mail"])) . "\n";
  $body .= "Oggetto: " . trim(stripslashes($_POST["object"])) . "\n";
  $body .= "testo: " . trim(stripslashes($_POST["body"])) . "\n";
  mail($to, $subject, $body, $headers);
    
  echo "<script language=\"JavaScript\">\n";
  echo "window.location.href=(\"$redirect_1\");\n";
  echo "</script>";
  }
  else {
  echo "<script language=\"JavaScript\">\n";
  echo "window.location.href=(\"$redirect_2\");\n";
  echo "</script>";
  }
?>
</body>
</html>
La mia intenzione è riportare la pagina di errore (indicata in $redirect_2) nel caso che anche uno solo dei campi sia vuoto.
Se il form è compilato correttamente, funziona benissimo.
Se forzo un errore, la pagina php va in un loop che non finisce mai e non fa il redirect in $redirect_2
Considerando che l'ho modificato molto "alla bell'è meglio", sapete darmi qualche soluzione?
Ultima modifica di Blallo il dom 1 gen 2012, 15:50, modificato 1 volta in totale.

ilmich
Master
Master
Messaggi: 1549
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 14.2 64bit
Kernel: 4.19.46
Desktop: dwm
Località: Roma

Re: [PHP] Form mail semplice semplice..

Messaggio da ilmich »

non ti conviene fare come hai fatto tu.. c'e' una via molto piu' semplice che è quella di mandare un header http particolare che dice al browser di puntare ad un altra pagina.
in php dovresti fare grosso modo cosi'

Codice: Seleziona tutto

header('Location: tuourl');
affinchè tutto funzioni correttamente devi assicurarti che questa istruzione sia lanciata prima di qualunque altro output.
questo perchè gli headers http sono inviati per primi, quindi se nel frattempo hai fatto l'output di anche una sola riga di html hai perso la chance di cambiare gli header al volo

spero di essere stato chiaro :D
ho visto cose che voi astemi non potete immaginare
https://github.com/ilmich

Avatar utente
Blallo
Packager
Packager
Messaggi: 3298
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

Re: [PHP] Form mail semplice semplice..

Messaggio da Blallo »

Ti ringrazio! Utilissimo! :D

Rispondi