Autor Zpráva
akali
Profil *
Ahoj, chci po odeslání mailu přesměrovat uživatele na určitou stránku
a mám takovejto kód


1    
2If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)) 
3   echo "odeslano";
4        else{
5   echo "Objednávka se <strong>nepodařila odeslat</strong> kvůli nevyplnění těchto povinných údajů";
    
If(Mail("kittlerpeta@centrua.cz"$predmet$zprava$headers)) 
   echo "odeslano";
        else{
   echo "Objednávka se <strong>nepodařila odeslat</strong> kvůli nevyplnění těchto povinných údajů";


a podmínku, která je nejspíš nefunkční

If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)){
header("Location: odeslano.php?hotovo");
}
If(Mail("kittlerpeta@centrua.cz"$predmet$zprava$headers)){
header("Location: odeslano.php?hotovo");
}


Jenže stránka se přesměruje hned při načtení a ne až po odeslání mailu :( Pomohl by někdo?
mckay
Profil
akali:
Email se odešle. Jenom se stránka hned přesměruje. Zkus si přečíst něco o meta tagu refresh. Můžeš vypsat hlášku a přesměrovat.
akali
Profil *
Email se neodešle, protože ani nevidím formulář na vyplňování. Z té stránky, kde je ten formulář se to hned přehodí na stránku odeslano.php?hotovo
panther
Profil
akali:
tak si tam přidej ještě podmínku, zda byl odeslán formulář (např. isset pro odesílací tlačítko).
akali
Profil *
Jo, to se nepřesměruje hned, ale po kliknutí na "odeslat" bez ohledu na to, zda byly vyplněna všechna políčka.
panther
Profil
akali:
nebaví mě věštit, dej sem větší kus PHP kódu, ne jen ten dvojřádek (ten je sám o sobě v pořádku). HTML formuláře sem taky dávat nemusíš.
Medvídek
Profil
akali:
Chtělo by si to nastudovat podmínky :)

1if(odešle formulář){
2 if(je vše správně vyplněno){
3  if(odeslán mail){
4   přesměruju
5  }
6  else{
7   chyba přesměrování
8  }
9 }
10 else{
11  chyba vyplnění formuláře & zobrazim formulář
12 }
13}
14else{
15zobrazim formulář
16}
if(odešle formulář){
 if(je vše správně vyplněno){
  if(odeslán mail){
   přesměruju
  }
  else{
   chyba přesměrování
  }
 }
 else{
  chyba vyplnění formuláře & zobrazim formulář
 }
}
else{
zobrazim formulář
}
akali
Profil *
Tak tady přidávám celý kód

1<?php
2if (isset($_POST['odeslano'])) {
3If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)){
4header("Location: odeslano.php?hotovo");
5}}
6?>
7Formuláře a ostatní HTML kód
8<?php
9If($_POST['odeslano']) {
10 
11if (Empty($_POST['jmeno'])) 
12  echo "chybí jmeno<br>"; 
13if  (Empty($_POST['prijmeni'])) 
14  echo "chybí prijmeno<br>"; 
15if  (Empty($_POST['email'])) 
16  echo "chybí email<br>";
17if  (Empty($_POST['mesto'])) 
18  echo "chybí mesto<br>";
19if  (Empty($_POST['ulice'])) 
20  echo "chybí ulice<br>";
21if  (Empty($_POST['psc'])) 
22  echo "chybí psc<br>";
23    
24    $jmeno = $_POST['jmeno'];
25    $prijmeni = $_POST['prijmeni'];
26    $email = $_POST['email'];
27    $ulice = $_POST['ulice'];
28    $psc = $_POST['psc'];
29    $zprava = $_POST['zprava'];
30    $telefon = $_POST['telefon'];
31    $predmet = 'Objednávka';
32    
33    $zprava .= "\n\n Jméno:".$jmeno;
34    $zprava .= "\n Příjmení:".$telefon;
35    $zprava .= "\n e-mail:".$email;
36    $zprava .= "\n ulice a čp:".$ulice;
37    $zprava .= "\n PSČ:".$psc;
38    $zprava .= "\n Telefonní číslo:".$telefon;
39    
40    // předmět s diakritikou
41  $clearsubject = $predmet;
42  $encodedsubject = base64_encode ($clearsubject);
43  $predmet = "=?utf-8?B?$encodedsubject?=";
44    //nastavení mailu 
45  $headers = "MIME-Version: 1.0\r\n";
46  $headers.= "Content-Type: text/plain; charset=UTF-8\r\n";
47  $headers.= "Content-Transfer-Encoding: 8bit\r\n";
48  $headers.= "From: $email\r\n";
49    echo "<br>";
50    If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)) echo "odeslano";
51      else{
52    echo "neodesláno";
53      
54 
55  } }
56?>
<?php
if (isset($_POST['odeslano'])) {
If(Mail("kittlerpeta@centrua.cz"$predmet$zprava$headers)){
header("Location: odeslano.php?hotovo");
}}
?>
Formuláře a ostatní HTML kód
<?php
If($_POST['odeslano']) {
 
if (Empty($_POST['jmeno'])) 
  echo "chybí jmeno<br>"; 
if  (Empty($_POST['prijmeni'])) 
  echo "chybí prijmeno<br>"; 
if  (Empty($_POST['email'])) 
  echo "chybí email<br>";
if  (Empty($_POST['mesto'])) 
  echo "chybí mesto<br>";
if  (Empty($_POST['ulice'])) 
  echo "chybí ulice<br>";
if  (Empty($_POST['psc'])) 
  echo "chybí psc<br>";
    
    $jmeno $_POST['jmeno'];
    $prijmeni $_POST['prijmeni'];
    $email $_POST['email'];
    $ulice $_POST['ulice'];
    $psc $_POST['psc'];
    $zprava $_POST['zprava'];
    $telefon $_POST['telefon'];
    $predmet 'Objednávka';
    
    $zprava .= "\n\n Jméno:".$jmeno;
    $zprava .= "\n Příjmení:".$telefon;
    $zprava .= "\n e-mail:".$email;
    $zprava .= "\n ulice a čp:".$ulice;
    $zprava .= "\n PSČ:".$psc;
    $zprava .= "\n Telefonní číslo:".$telefon;
    
    // předmět s diakritikou
  $clearsubject $predmet;
  $encodedsubject base64_encode ($clearsubject);
  $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";
    echo "<br>";
    If(Mail("kittlerpeta@centrua.cz"$predmet$zprava$headers)echo "odeslano";
      else{
    echo "neodesláno";
      
 
  } }
?>
panther
Profil
akali:
a divíš se, že to nefunguje? Teda funguje, ale jinak, než chceš.

Pokud kliknu na odesílací tlačítko, odešli email a přesměruj. Kontrola je až po přesměrování, logicky k ní tedy nedojde. Script se zpracovává, trochu překvapivě, shora dolů.
Medvídek
Profil
1. Formulář je lepší pro přehlednost mít v samostatném souboru (formular.php) a dle potřeb ho includovat.
2. Je celkem zbytečné dělat toto: $jmeno = $_POST['jmeno']; Klidně to do skriptu dosazuj jako $_POST['jmeno']; (nejlépe ještě ošetřené)
3. To vypsání chyb mi přijde takové nehezké, já používám třeba toto:

1if(malo znaku) $chyba[1]="Napsali jste velice krátkou zprávu.";
2if(zadne znaky) $chyba[2]="Napsali jste žádnou zprávu.";
3 
4if(isset($chyba)){
5echo '<div class="chybovehlasky">'.implode("<br />", $chyba).'</div>';
6include "formular.php";
7}
8else{
9  mail();
10}
if(malo znaku) $chyba[1]="Napsali jste velice krátkou zprávu.";
if(zadne znaky) $chyba[2]="Napsali jste žádnou zprávu.";
 
if(isset($chyba)){
echo '<div class="chybovehlasky">'.implode("<br />"$chyba).'</div>';
include "formular.php";
}
else{
  mail();
}


Ten tvůj kód na začátku:
1<?php
2if (isset($_POST['odeslano'])) {
3If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)){
4header("Location: odeslano.php?hotovo");
5}}
6?>
<?php
if (isset($_POST['odeslano'])) {
If(Mail("kittlerpeta@centrua.cz"$predmet$zprava$headers)){
header("Location: odeslano.php?hotovo");
}}
?>


Je tam zbytečnej, smaž ho a uprav ten spodní :)
akali
Profil *
Jo to je mi jasný, jenom jsem to tam přidal jak is mi to psal ty, samozřejmě, že jsem to tam zkusil naivně..

Tak tedy bez té isset

1<?php
2If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)){
3header("Location: odeslano.php?hotovo");
4}
5?>
<?php
If(Mail("kittlerpeta@centrua.cz"$predmet$zprava$headers)){
header("Location: odeslano.php?hotovo");
}
?>
panther
Profil
akali:
zamysli se, než napíšeš a zároveň si to zkus (ano, ani tohle nebude fungovat).

Zkus zapřemýšlet nad schématem, které ti napsal Medvídek v [#7], myšlenka je správná.
Medvídek
Profil
akali:

Nemam u sebe teď editor, psal sem to pouze v této textarea, ale princip by tak mohl být.
1<?php
2If($_POST['odeslano']) {
3if (Empty($_POST['jmeno'])) $chyba[1]="chybí jméno";
4if  (Empty($_POST['prijmeni'])) $chyba[2]="chybí přijmení";
5if  (Empty($_POST['email']))  $chyba[3]="chybí e-mail";
6if  (Empty($_POST['mesto'])) $chyba[4]="chybí město";
7if  (Empty($_POST['ulice'])) $chyba[5]="chybí ulice";
8if  (Empty($_POST['psc'])) $chyba[6]="chybí psč";
9 
10if(isset($chyba)){
11echo '<div class="chybovehlasky">'.implode("<br />", $chyba).'</div>';
12include "formular.php";
13}
14else{
15 
16    $zprava = htmlspecialchars($_POST['zprava']);
17    $zprava .= "\n\n Jméno:".htmlspecialchars($_POST['jmeno']);
18    $zprava .= "\n Příjmení:".htmlspecialchars($_POST['prijmeni']);
19    $zprava .= "\n e-mail:".htmlspecialchars($_POST['email']);
20    $zprava .= "\n ulice a čp:".htmlspecialchars($_POST['ulice']);
21    $zprava .= "\n PSČ:".htmlspecialchars($_POST['psc']);
22    $zprava .= "\n Telefonní číslo:".htmlspecialchars($_POST['telefon']);
23    
24  // předmět s diakritikou
25  $encodedsubject = base64_encode ("Objednávka");
26  $predmet = "=?utf-8?B?$encodedsubject?=";
27  //nastavení mailu 
28  $headers = "MIME-Version: 1.0\r\n";
29  $headers.= "Content-Type: text/plain; charset=UTF-8\r\n";
30  $headers.= "Content-Transfer-Encoding: 8bit\r\n";
31  $headers.= "From: $_POST['email']\r\n";
32  
33  If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)){
34  header("Location: odeslano.php?hotovo");
35  }
36  else{
37  echo '<div class="chybovehlasky">Chyba odeslání E-mailu</div>';
38  include "formular.php";
39  }
40}  
41  
42}
43else{
44include "formular.php";
45}
46   
47?>
<?php
If($_POST['odeslano']) {
if (Empty($_POST['jmeno'])) $chyba[1]="chybí jméno";
if  (Empty($_POST['prijmeni'])) $chyba[2]="chybí přijmení";
if  (Empty($_POST['email']))  $chyba[3]="chybí e-mail";
if  (Empty($_POST['mesto'])) $chyba[4]="chybí město";
if  (Empty($_POST['ulice'])) $chyba[5]="chybí ulice";
if  (Empty($_POST['psc'])) $chyba[6]="chybí psč";
 
if(isset($chyba)){
echo '<div class="chybovehlasky">'.implode("<br />"$chyba).'</div>';
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 PSČ:".htmlspecialchars($_POST['psc']);
    $zprava .= "\n Telefonní číslo:".htmlspecialchars($_POST['telefon']);
    
  // 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: $_POST['email']\r\n";
  
  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";
  }
}  
  
}
else{
include "formular.php";
}
   
?>
akali
Profil *
Hází mi to chybu na řádku, kde je přesměrování

  If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)){
  header("Location: odeslano.php?hotovo");
  }
  If(Mail("kittlerpeta@centrua.cz"$predmet$zprava$headers)){
  header("Location: odeslano.php?hotovo");
  }
test
Profil
akali:
Jakou chybu to píše?
panther
Profil
akali:
Jakou chybu? Headers already sent? Tak tuto chybu hledej, co znamená (např. ve FAQ této sekce).

Nikdo tu za tebe nebude všechno psát, musíš projevit trochu vlastní snahy. Máš chybovou hlášku a místo, aby sis zjistil, co znamená, raději napíšeš sem, ať to za tebe někdo opraví. Špatný přístup jsi zvolil.
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0