

Problém s přihlášením do databáze
Dobrý den,
tentokrát mám patálie s administrací WEBU. Snažím se postupovat podle tutoriálu z IT Network - je to můj první databázový systém a nějak se začít musí... Bohužel tam nikdo můj problém v komentářích neřešil, a já mám strach že bych se nemusel dočkat brzké odpovědi.
Všechno mi funguje až do okamžiku když se chci se zaregistrovaným uživatelem přihlásit. Pokaždé dostanu chybovou hlášku i přesto, že uživatel je vytvořený v databázi správně.
Útržek registrace:
if ($_POST)
{
if ($_POST['rok'] != date('Y'))
$zprava = 'Chybně vyplněný antispam.';
else if ($_POST['heslo'] != $_POST['heslo_znovu'])
$zprava = 'Hesla nesouhlasí';
else
{
$existuje = Db::querySingle('
SELECT COUNT(*)
FROM uzivatele
WHERE jmeno=?
LIMIT 1
', $_POST['jmeno']);
if ($existuje)
$zprava = 'Uživatel s touto přezdívkou je již v databázi obsažen.';
else
{
Db::query('
INSERT INTO uzivatele (jmeno, heslo)
VALUES (?, SHA1(?))
', $_POST['jmeno'], $_POST['heslo'] . "t&#ssdf54gh");
$_SESSION['uzivatel_id'] = Db::getLastId();
$_SESSION['uzivatel_jmeno'] = $_POST['jmeno'];
$_SESSION['uzivatel_admin'] = 0;
header('Location: administrace.php');
exit();
}
}
}
?>
<!DOCTYPE html>
<html lang="cs-cz">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
<title>Registrace</title>
</head>
<body>
<article>
<div id="centrovac">
<header>
<h1>Registrace</h1>
</header>
<section>
<?php
if (isset($zprava))
echo('<p>' . $zprava . '</p>');
?>
<form method="post"><input type="hidden" name="PHPSESSID" value="IJL9Dye9jaOXkvjAfiChGz7LZxb" />
Jméno<br />
<input type="text" name="jmeno" /><br />
Heslo<br />
<input type="password" name="heslo" /><br />
Heslo znovu<br />
<input type="password" name="heslo_znovu" /><br />
Zadejte aktuální rok (antispam)<br />
<input type="text" name="rok" /><br />
<input type="submit" value="Registrovat" />
</form>
</section>
<div class="cistic"></div>
</div>
</article>
</body>
Útržky funkcí:
public static function querySingle($query) {
$statement = self::executeStatement(func_get_args());
$data = $statement->fetch();
return $data[0];
}
public static function query($query) {
$statement = self::executeStatement(func_get_args());
return $statement->rowCount();
}
public static function getLastId()
{
return self::$connection->lastInsertId();
}
public static function queryOne($query) {
$statement = self::executeStatement(func_get_args());
return $statement->fetch(PDO::FETCH_ASSOC);
}
Útržek prihlášení:
if (isset($_SESSION['uzivatel_id']))
{
header('Location: administrace.php');
exit();
}
if ($_POST)
{
$uzivatel = Db::queryOne('SELECT uzivatele_id, admin FROM uzivatele WHERE jmeno=? AND heslo=SHA1(?)', $_POST['jmeno'], $_POST['heslo'] . "t&#ssdf54gh");
if (!$uzivatel)
$zprava = 'Neplatné uživatelské jméno nebo heslo';
else
{
$_SESSION['uzivatel_id'] = $uzivatel['uzivatele_id'];
$_SESSION['uzivatel_jmeno'] = $_POST['jmeno'];
$_SESSION['uzivatel_admin'] = $uzivatel['admin'];
header('Location: administrace.php');
exit();
}
}
Omlouvám se za nepřehlednost, ale jsem už docela zoufalý. Snad to bude jenom nějaká banalita kterou přehlížím.Mnohokrát předem děkuji člověku který by se mi rozhodl pomoci v mém donquichotském boji s PHP. :D
Zdrojové kódy vkládejte do tagu Code (Kurt)