Diskuze: Při registraci uživatele Chyba => nekomunikace s databází
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= 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.
Chyba je pravdepodobne v tom, že funkcia prepare na riadku predtým (ak to je tak ako si to predstavujem) vracia boolean hodnotu (false). Z dokumentácie:
If the database server cannot successfully prepare the statement, PDO::prepare() returns FALSE
Ale čo spôsobuje chybu ti bez náhľadu do kódov povedať neviem
Níže je kód, bez přístupových údajů k databázi.
Omlouvám se, že ho jen takto vkládám, ale nemám nyní možnost ho
nahrát.
Prakticky je to úplně stejný kód co napsal David. Copy + paste...
Ale mým hlavním problémem je teď otázka proč to nekomunikuje s
databází.
Díky za případnou radu.
<?php
session_start();
require('Db.php');
Db::connect('', '','', '');
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
', array($_POST['jmeno']));
if ($existuje == true)
$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">
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>
</html>
Nenapadá ma takto čo by mohlo byť zle. Nekontroluješ či je vyplnené
napríklad meno, alebo heslo, ale to by nemalo spôsobovať chyby.
Trochu ma zaujalo, že pri DB::querySingle() predávaš parametre ako jedno pole
(array($_POST['jmeno'])) a potom pri DB::query() ich predávaš po jednom.
Ten kód je totožný s tím, který je zde na itnetworku...
Každopádně problém jsem již vyřešil.
Stejně Vám děkuji za reakce!
Zobrazeno 5 zpráv z 5.