Pagina 1 di 1

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

Inviato: dom 1 gen 2012, 14:33
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?

Re: [PHP] Form mail semplice semplice..

Inviato: dom 1 gen 2012, 15:22
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

Re: [PHP] Form mail semplice semplice..

Inviato: dom 1 gen 2012, 15:45
da Blallo
Ti ringrazio! Utilissimo! :D