Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.
Avatar
Tomáš Kala
Člen
Avatar
Tomáš Kala:30. května 9:40

Zdravím,
vytvořil jsem si jednoduchý redakční systém (podle tutoriálu zde na síti) s registrací/přih­lašováním a psaním článků.
Do databáze se mi ovšem zapíše pouze jeden uživatel a jeden článek
vždy se v pohodě vytvoří, ale už se nezapíše do databáze

dokázal by mi někdo pomoci? :D

 
Odpovědět  -2 30. května 9:40
Avatar

Člen
Avatar
:30. května 10:19

Počkej, vytáhnu si křišťalovou kouli abych nahlédl to tvého kódu.

Editováno 30. května 10:19
 
Nahoru Odpovědět  +2 30. května 10:19
Avatar
Tomáš Kala
Člen
Avatar
Tomáš Kala:30. května 10:21

zdroják registrace, předtím se mi to neposlalo

<?php
session_start();
require('Db.php');
Db::connect('127­.0.0.1', 'rs', 'root', '');

if ($_POST)
{
if ($_POST['rok'] != date('Y'))
$zprava = 'Chybně vyplněný rok.';
else if ($_POST['heslo'] != $_POST['heslo_zno­vu'])
$zprava = 'Hesla se neshodují';
else
{
$existuje = Db::querySingle('
SELECT COUNT(*)
FROM uzivatele
WHERE jmeno=?
LIMIT 1
', $_POST['jmeno']);
if ($existuje)
$zprava = 'Uživatel s touto přezdívkou již existuje.';
else
{
$heslo = password_hash($_POS­T['heslo'], PASSWORD_DEFAULT);
Db::query('
INSERT INTO uzivatele (jmeno, heslo)
VALUES (?, ?)
', $_POST['jmeno'], $heslo);
$_SESSION['uzi­vatel_id'] = Db::getLastId();
$_SESSION['uzi­vatel_jmeno'] = $_POST['jmeno'];
$_SESSION['uzi­vatel_admin'] = 0;
header('Location: administrace.php');
exit();
}
}
}
?>
<!DOCTYPE html>
<html lang="cs-cz">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl clanky2.css" type="text/css" />
<title>Registra­ce</title>
</head>

<body>
<div id="centrovac"></div>
<header>
<div id="logo"><h1>IT Tipy a triky</h1></div>

<nav>
<ul>
<li id="aktivni">Do­mů</li>
<li>Články</li>
<li>Kontakt</li>

</ul>
</nav>
</header>
<article>

<header>
<h2>Registrace</h2>
</header>
<section>
<?php
if (isset($zprava))
echo('<p>' . $zprava . '</p>');
?>

<form method="post">
Jméno

<input type="text" name="jmeno" />

Heslo

<input type="password" name="heslo" />

Heslo znovu

<input type="password" name="heslo_znovu" />

Zadejte aktuální rok (antispam)

<input type="text" name="rok" />

<input type="submit" value="Registrovat" />
</form>
</section>
<div class="cistic"></div>

</article>
<footer>
Vytvořil Tomáš Kala 2018 podle návodu na ITnetwork.cz
</footer>
</body>
</html>

 
Nahoru Odpovědět  -4 30. května 10:21
Avatar

Člen
Avatar
:30. května 10:28

Kód snad vypadá dobře.
Vždy se vytvoří uživatel se stejným ID? Když už tam je uživatel 1x, vyhodí to nějaký error? Máš v databázi nastaven AUTO_INCREMENT na ID?

Příště to dávej do
<code]

</code]

Editováno 30. května 10:28
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 30. května 10:28
Avatar
Tomáš Kala
Člen
Avatar
Odpovídá na
Tomáš Kala:30. května 10:39

ano mám auto increment
nikdy mi to žádnou chybu nevyhodí, dokonce mi to uživatele po registraci přihlásí, ale po odhlášení už ho nepřihlásím (není v databázi)

 
Nahoru Odpovědět 30. května 10:39
Avatar
Tomáš Kala
Člen
Avatar
Tomáš Kala:30. května 11:33

už jsem to vyřešil. celou databázi jsem předělal

u článků mi chybělo AUTO INCREMENT, měl jsem je jen u členů

 
Nahoru Odpovědět  -1 30. května 11:33
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30. května 11:44
error_reporting(E_ALL); // tam mas?
// + vypis sql chyb tam mas?

Jakou chybu to pise? Treba mas spatne pripojeni k db. Nebo spatnou tabulku? Nebo tabulka vubec neexistuje

  • if ($_POST) - zbytecna podminka, pole $_POST existuje vzdy
  • $_POST['jmeno'] - nedavej udaje z post primo do sql prikazu (jestli to tady v clanku je v nejakem navodu, apk je clanek spatne)
  • Zkus dat var_dump($_SES­SION), jestli je uzivatel prihlasen a zda je prihlasen, kdyz klikne na nejaky dalsi odkaz na strance

Jinak, to vypada, ze by to mohlo fungovat.

  • Jestli chces, muzes do tabulky pridat treba pres php-my-admina nejaky radek a zkus jej v php nejdriv zobrazit. Az pak zkousej slozitejsi veci, jako prihlasovani, kdyz mas jistotu, ze sql funguje spravne.

Aha, uz nic, uz jsi to vyresil :)

Editováno 30. května 11:45
 
Nahoru Odpovědět  +1 30. května 11:44
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:31. května 8:47

Jeste mne napadlo, ze tohle by se dalo resit treba tak, ze si vypises sql prikaz na obrazovku. Oznacis. das ctrl+c ctrl+v do jineho okna, kde mas spustemy phpmyadmin, zalozku sql, vybranou tvou databazi. A spustits to tam. Phpmyadmin vypisuje sql chyby, takze by to pindalo nejsip na ten autoinkrement.

 
Nahoru Odpovědět  +1 31. května 8:47
Avatar
Tomáš Kala
Člen
Avatar
Odpovídá na Peter Mlich
Tomáš Kala:31. května 9:22

ok, díky :D
budu pro příště vědět :D

 
Nahoru Odpovědět 31. května 9:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.