Autor Zpráva
Akali
Profil
Ahoj, potřeboval bych pomoc s přesměrováním.Vím, že před ním nemá být žádný výstup, ale když ho dám úplně na začátek stránky tak se odešle mail() bez kontroly. Kód je tady

<!DocType html public "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="content-language" content="cs" />
<meta name="author" content="; kittlerpeta@centrum.cz: ">
<meta name="description" content="Kamil Eliáš - nábytek">
<meta name="robots" content="index,follow">
<meta name="keywords" content="Kamil Eliáš - nábytek">
<meta name="copyright" content="kittlerpeta@centrum.cz">
<link rel="shortcut icon" href="../../images/favicon.jpg">
<link rel="stylesheet" type="text/css" href="../../styles/main.css">
<title>Kamil Eliáš - nábytek</title>


</head>
<body>

<div id="wrapper">
   

         <div id="header">
		               <ul class="menu">
                        <li class="menu"><a href="../../index.html" class="menu">domů</a></li>
                        <li class="menu"><a href="../../kontakt.html" class="menu">kontakt</a></li>
                        <li class="menu"><a href="../../sortiment.php" class="menu">sortiment</a></li>
                        <li class="menu"><a href="../../reference.html" class="menu">reference</a></li>
                  </ul>
		       		 
			   
		 </div>
		  
  <div id="prouzek">

		 <div id="leftcolumn">
		          <div style="position:relative; top:574px; left:295px;"><img src="../../images/ok.gif" alt=""></div>
		       <img src="../../images/pm.gif" alt="">
		 </div>     

		 

		 <div id="rightcolumn">


<?php
$_POST['email'] = $email;

If($_POST['odeslano']) {
if (Empty($_POST['jmeno'])) $chyba[1]="Vaše křestní jméno";
if  (Empty($_POST['prijmeni'])) $chyba[2]="Vaše příjmení";
if  (Empty($_POST['email']))  $chyba[3]="Vaše e-mailová schránka";
if  (Empty($_POST['mesto'])) $chyba[4]="Město";
if  (Empty($_POST['ulice'])) $chyba[5]="Ulice a číslo popisné";
if  (Empty($_POST['psc'])) $chyba[6]="PSČ";
if  (Empty($_POST['telefon'])) $chyba[6]="Telefonní číslo";

if(isset($chyba)){
echo '<div id="chyba">Některá políčka zůstala nevyplněna!</div>';
echo '<div class="chybovehlasky">'.implode("<br />", $chyba).'</div><hr>';
include "formular.php";
}
else{

    $zprava = htmlspecialchars($_POST['zprava']);
    $zprava .= "\n\n Jméno:".htmlspecialchars($_POST['jmeno']);
    $zprava .= "\n Příjmení:".htmlspecialchars($_POST['prijmeni']);
    $zprava .= "\n e-mail:".htmlspecialchars($_POST['email']);
    $zprava .= "\n ulice a čp:".htmlspecialchars($_POST['ulice']);
    $zprava .= "\n Město:".htmlspecialchars($_POST['mesto']);
    $zprava .= "\n PSČ:".htmlspecialchars($_POST['psc']);
    $zprava .= "\n Telefonní číslo:".htmlspecialchars($_POST['telefon']);
    $zprava .= "\n Zboží:".htmlspecialchars($_POST['zbozi']);
    $zprava .= "\n Fax:".htmlspecialchars($_POST['fax']);
    
  // předmět s diakritikou
  $encodedsubject = base64_encode ("Objednávka");
  $predmet = "=?utf-8?B?$encodedsubject?=";
  //nastavení mailu 
  $headers = "MIME-Version: 1.0\r\n";
  $headers.= "Content-Type: text/plain; charset=UTF-8\r\n";
  $headers.= "Content-Transfer-Encoding: 8bit\r\n";
  $headers.= "From: $email\r\n";
 
  If(Mail("kittlerpeta@centrum.cz", $predmet, $zprava, $headers)){
  header("Location: odeslano.php?hotovo");
  }
  else{
  echo '<div class="chybovehlasky">Chyba odeslání E-mailu</div>';
  include "formular.php";
  }
}  
  
}
else{
include "formular.php";
}
   
?>
      
		 </div>
<hr class="cistic">		    
	</div>

		 <div id="footer">	       
			   Vytvořil.....<br><br>				    
	  </div>
		 
</div>

</body>
</html>
Tori
Profil
Nejdřív dejte kontrolu údajů (pokud byl vyplněn formulář) a pokud nic nechybí, odeslat email a přesměrovat.
Pak teprv výstup, kde vypíšete chyby (pokud nějaké byly) a include formuláře.
Akali
Profil
Asi jsem to dost dobře nepochopil.. Myslel jste to takto:

<!DocType html public "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="content-language" content="cs" />
<meta name="author" content="; kittlerpeta@centrum.cz: ">
<meta name="description" content="Kamil Eliáš - nábytek">
<meta name="robots" content="index,follow">
<meta name="keywords" content="Kamil Eliáš - nábytek">
<meta name="copyright" content="kittlerpeta@centrum.cz">
<link rel="shortcut icon" href="../../images/favicon.jpg">
<link rel="stylesheet" type="text/css" href="../../styles/main.css">
<title>Kamil Eliáš - nábytek</title>


</head>
<body>

<div id="wrapper">
   

         <div id="header">
		               <ul class="menu">
                        <li class="menu"><a href="../../index.html" class="menu">domů</a></li>
                        <li class="menu"><a href="../../kontakt.html" class="menu">kontakt</a></li>
                        <li class="menu"><a href="../../sortiment.php" class="menu">sortiment</a></li>
                        <li class="menu"><a href="../../reference.html" class="menu">reference</a></li>
                  </ul>
		       		 
			   
		 </div>
		  
  <div id="prouzek">

		 <div id="leftcolumn">
		          <div style="position:relative; top:574px; left:295px;"><img src="../../images/ok.gif" alt=""></div>
		       <img src="../../images/pm.gif" alt="">

		 </div>     

		 

		 <div id="rightcolumn">


<?php
$_POST['email'] = $email;

If($_POST['odeslano']) {
if (Empty($_POST['jmeno'])) $chyba[1]="Vaše křestní jméno";
if  (Empty($_POST['prijmeni'])) $chyba[2]="Vaše příjmení";
if  (Empty($_POST['email']))  $chyba[3]="Vaše e-mailová schránka";
if  (Empty($_POST['mesto'])) $chyba[4]="Město";
if  (Empty($_POST['ulice'])) $chyba[5]="Ulice a číslo popisné";
if  (Empty($_POST['psc'])) $chyba[6]="PSČ";
if  (Empty($_POST['telefon'])) $chyba[6]="Telefonní číslo";

  If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)){
  header("Location: odeslano.php?hotovo");
  }
  else{
  echo '<div class="chybovehlasky">Chyba odeslání E-mailu</div>';
  include "formular.php";
  }

if(isset($chyba)){
echo '<div id="chyba">Některá políčka zůstala nevyplněna!</div>';
echo '<div class="chybovehlasky">'.implode("<br />", $chyba).'</div><hr>';
include "formular.php";
}
else{

    $zprava = htmlspecialchars($_POST['zprava']);
    $zprava .= "\n\n Jméno:".htmlspecialchars($_POST['jmeno']);
    $zprava .= "\n Příjmení:".htmlspecialchars($_POST['prijmeni']);
    $zprava .= "\n e-mail:".htmlspecialchars($_POST['email']);
    $zprava .= "\n ulice a čp:".htmlspecialchars($_POST['ulice']);
    $zprava .= "\n Město:".htmlspecialchars($_POST['mesto']);
    $zprava .= "\n PSČ:".htmlspecialchars($_POST['psc']);
    $zprava .= "\n Telefonní číslo:".htmlspecialchars($_POST['telefon']);
    $zprava .= "\n Zboží:".htmlspecialchars($_POST['zbozi']);
    $zprava .= "\n Fax:".htmlspecialchars($_POST['fax']);
    
  // předmět s diakritikou
  $encodedsubject = base64_encode ("Objednávka");
  $predmet = "=?utf-8?B?$encodedsubject?=";
  //nastavení mailu 
  $headers = "MIME-Version: 1.0\r\n";
  $headers.= "Content-Type: text/plain; charset=UTF-8\r\n";
  $headers.= "Content-Transfer-Encoding: 8bit\r\n";
  $headers.= "From: $email\r\n";
 
}  
  
} 
else{
include "formular.php";
}
   
?>
      
		 </div>
<hr class="cistic">		    
	</div>

		 <div id="footer">	       
			   Vytvořila reklamní grafika Jiří Pýcha<br><br>				    
	  </div>
		 
</div>

</body>
</html>
Tori
Profil
Ne, myslela jsem celý blok zpracování formuláře, odeslání emailu a přesměrování (řádky 47-87 z [#1]) dát na začátek skriptu. A v případě chybějících údajů místo echo "chyba"; všechny chyby uložit do pole. Pak teprv doctype a kus stránky, vypsat chyby, zobrazit formulář a zbytek stránky.
Prostě aby byla zvlášť logika zpracování formuláře a reakce na různé situace (nevyplněné údaje, neodeslaný email,...), a zvlášť zobrazení stránky (kde by naopak bylo PHP v co nejmenší míře, jen na výpis chyb a include).
Akali
Profil
Tak to se v tom ztrácím.. :( Ale budu se o to pokoušet dál.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: