Diskuze: header
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Nedojde tam k nějaké chybě, která by se před tím zavoláním header()
vypsala?
Případně co je uvnitř funkcí selectUser?
Pokud to pořád nepomůže, zkusil bych prostě postupně kód odmazávat a zjistit, která část to způsobuje.
EDIT: Případně bych místo toho header() zkusil skript ukončit a kouknout se, jestli tam nebylo něco vypsáno (předpokládám, že zavoláním header() na špatném místě se ten původní obsah stránky přebije, takže bys tu případnou chybovou hlášku ani neviděl).
select user je jednoduché statické volání datábaze ve formátu
Db::query("SELECT * FROM users
WHERE login
= ?
AND password
= ?", array($login, $pass).
Nevím jestli jsem tě teď pochopil ale zavolám-li funkci header jak je tak se mi vypíše klasická hláška
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\e85\class\Login.php:35) in C:\wamp\www\e85\class\Login.php on line 42.
ale skusím postupně zakomentovat jednotlivé čáti skriptu
Co se stane, pokud před tím header něco vypíšeš - třeba takto:
echo "ahoj";
header("Location: admin.php");
zůstane tam to ahoj nebo na té stránce bude jen ten warning od header()?
ani jedno normálně se to přesměruje v případě že dám header před podmínkua v případě že je header v podmínce tak se vypíše ahoj ale i hláška
tak jo ted to funguje ale je to osekané o kontrolu toho zda je uživatel online
//if($_SESSION['login'] == false){
$log = $_POST['login'];
$pass = $_POST['password'];
$verification = $this->selectUser($log, $pass)->rowCount();
$row = $this->selectUser($log, $pass)->fetch();
if($verification == 1) {
$_SESSION['login'] = stripslashes($_POST['login']);
//$_SESSION['function'] = $row['function'];
header("Location: admin.php");
} else {
throw new UserException('Zadaná kombinace loginu a hesla je neplatná');
}
//} else {
// throw new UserException('Již jste přihlášn/a');
//}
Máš tam nějaké kontroly na ty proměnné, co používáš?
Něco jako.
if (isset($_SESSION['login']))
pokud myslíš platnost $_SESSION['login'] tak na to používám
if($_SESSION['login'] == true/false)
Ano,ale co když tam ta sešna vůbec není, co když jsi ji předtím ani nenastavil?
uch jak to teď myslíš jako že je prázdná jo?
Také jsi mohl zapomenout na session_start(). Mysli i na to, že SESSION ti za pár minut zmizí, všude musí být isset nebo !empty.
Jj, že by byla prázdná, pokud si to dobře pamatuju, tak PHP pak vyhodí výjimku?
session_start() mám. Bez toho by se mi to ani nepřihlásilo no teď ale aspoň vím co přesně to dělalo tak si s tim pohraju a snad na něco přijdu
ale to je účel té podmínky když se odhlašuju tak voláam session_destroy() což mi smaže všechny proměnné SESSION a když se přihlašuji tak musí být prázdná ne?
Pokud je prádzná, tak tuším není ani true ani false , myslím, že by tam mělo být něco jako
if (!isset($_SESSION['login']) || !$_SESSION['login'])
Zobrazeno 16 zpráv z 16.