Autor | Zpráva | ||
---|---|---|---|
MaxDJs Profil |
#1 · Zasláno: 22. 1. 2012, 19:43:04
Zdravím,
potřeboval bych poradit s jedním problémem. Ve skriptu používám funkci header(), která přesměruje uživatele zpět na formulář, pokud nevyplní nějáké údaje. Ale i když nezadám nějáké údaje, tak mě to pustí dál k nahrání dat do databáze, ale pokud tu část ve které se data nahrávájí do databáze zakomentuji, tak mi ta funkce funguje a normálně mě přesměruje zpět na formulář. Byl by někdo ochotný mi poradit? Děkuji za odpověď Zde je skript <?php if(isset($_POST["uzivJm"]) && ($_POST["uzivJm"] != "")){ $uzivJm = $_POST["uzivJm"]; } else{ Header("Location: vytvorit-uzivatele.php?zprava=nevyplneneudaje"); } if(isset($_POST["uzivHeslo"]) && ($_POST["uzivHeslo"] != "")){ $uzivHeslo = $_POST["uzivHeslo"]; } else{ Header("Location: vytvorit-uzivatele.php?zprava=nevyplneneudaje"); } if(isset($_POST["opravneni"]) && ($_POST["opravneni"] != "")){ $opravneni = (int)$_POST["opravneni"]; } else{ Header("Location: vytvorit-uzivatele.php?zprava=nevyplneneudaje"); } echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-language" content="cs" /> <title>XHTML stránka</title> </head> <body> <?php $databaze_pripoj = mysql_connect("localhost","root","databaseroot"); $databaze = mysql_select_db("prihlaseni"); $vysledek = mysql_query("SET CHARACTER SET utf8",$databaze_pripoj); //dotaz MySQL $dotaz = "INSERT INTO `uzivatele` (`id`, `uzjm`, `uzhe`, `opravneni`) VALUES (NULL, '$uzivJm', PASSWORD('$uzivHeslo'), '$opravneni')"; $vysledek = mysql_query($dotaz); echo mysql_error(); if($vysledek){ header("Location: index.php?zprava=uzivatelvytvoren"); } else{ header("Location: index.php?zprava=uzivatelnevytvoren"); } ?> </body> </html> |
||
DoubleThink Profil * |
#2 · Zasláno: 22. 1. 2012, 20:30:29
Funkce
header na řádcích 42 a 45 skončí chybou.
Jinak případný problém s vykonáním dotazu do databáze za tebe nikdo nevyřeší, protože jsi trouba a nenapsal jsi sem žádnou chybovou hlášku. |
||
MaxDJs Profil |
#3 · Zasláno: 22. 1. 2012, 20:36:35
DoubleThink:
„Jinak případný problém s vykonáním dotazu do databáze za tebe nikdo nevyřeší, protože jsi trouba a nenapsal jsi sem žádnou chybovou hlášku.“ Data do databáze se zapíšou, ale pouze prázdné řetězce, protože se skript nezastaví na řádcí 6,13 nebo 20, ačkoliv mi žádný data v $_POST nepřišly. |
||
DoubleThink Profil * |
#4 · Zasláno: 22. 1. 2012, 20:41:26
A tak. Header neukončuje běh skriptu. Dokonce ani jeho výstup. Tedy s jednou výjimkou.
|
||
MaxDJs Profil |
#5 · Zasláno: 22. 1. 2012, 21:01:43
Ale když zakomentuju tuhle část
<?php $databaze_pripoj = mysql_connect("localhost","root","databaseroot"); $databaze = mysql_select_db("prihlaseni"); $vysledek = mysql_query("SET CHARACTER SET utf8",$databaze_pripoj); //dotaz MySQL $dotaz = "INSERT INTO `uzivatele` (`id`, `uzjm`, `uzhe`, `opravneni`) VALUES (NULL, '$uzivJm', PASSWORD('$uzivHeslo'), '$opravneni')"; $vysledek = mysql_query($dotaz); echo mysql_error(); if($vysledek){ header("Location: index.php?zprava=uzivatelvytvoren"); } else{ header("Location: index.php?zprava=uzivatelnevytvoren"); } ?> tak ten header běh skriptu ukončí |
||
Keeehi Profil |
#6 · Zasláno: 22. 1. 2012, 21:10:34
Ale neukončí, jen si toho nevšimnete, protože prohlížeč provede přesměrování. Pokud byste v prohlížeči přesměrování zakázal, tak by se ten html kód zobrazil. V tomto případě prázdná stránka, ale s titulkem.
|
||
MaxDJs Profil |
no a o to mi jde, aby se to přesměrovalo, ale mě se to přesměrování provede jen, když mám zakomentovanou tu část kódu
|
||
Ugo Profil |
#8 · Zasláno: 23. 1. 2012, 10:55:00
jen dodám to co tě asi i trápí - hlavičky bez zapnutého bufferu (většinou tedy) nelze posílat po jejich odeslání a k jejich odeslání dojde při prvním výstupu, takže tvé html před kódem odešle hlavičky a fce. header() potom skončí warningem u kterejch asi nemáš zaplý zobrazování, přesuň provedení před výstupy (html)
|
||
Časová prodleva: 12 let
|
0