NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 5 - NERS - Registrace uživatelů v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Bugy
Tomáš Novotný:4.4.2019 9:36

Tak třeba je problém dále v souboru administrace.php.. možná máš v nějakém selectu špatně FROM... chyba prostě říká, že v dané tabulce tento sloupec není..

Editováno 4.4.2019 9:37
Odpovědět
4.4.2019 9:36
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Bugy
Člen
Avatar
Odpovídá na Tomáš Novotný
Bugy:4.4.2019 9:39

administrace.php vypada takto:

<?php
session_start();
if (!isset($_SESSION['uzivatel_id']))
{
        header('Location: prihlaseni.php');
        exit();
}

if (isset($_GET['odhlasit']))
{
        session_destroy();
        header('Location: prihlaseni.php');
        exit();
}
?>

<!DOCTYPE html>
<html lang="cs-cz">
<head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="styl.css" type="text/css" />
        <title>Administrace</title>
</head>

<body>
<article>
        <div id="centrovac">
                <header>
                        <h1>Administrace</h1>
                </header>
                <section>
                        <p>Vítejte v administraci, jste přihlášeni jako <?= htmlspecialchars($_SESSION['uzivatel_jmeno']) ?></p>
                        <?php
                                if (!$_SESSION['uzivatel_admin'])
                                        echo('Nemáte administrátorská oprávnění, požádejte administrátora webu, aby vám je přidělil.');
                        ?>
                        <h2><a href="editor.php">Editor článků</a></h2>
                        <h2><a href="clanky.php">Seznam článků</a></h2>
                        <h2><a href="administrace.php?odhlasit">Odhlásit</a></h2>
                </section>
                <div class="cistic"></div>
        </div>
</article>
</body>
</html>
 
Odpovědět
4.4.2019 9:39
Avatar
Odpovídá na Bugy
Tomáš Novotný:4.4.2019 9:44

Tak tu také nic... tak dej ještě export aaa databáze do sql...

Odpovědět
4.4.2019 9:44
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Bugy
Člen
Avatar
Odpovídá na Tomáš Novotný
Bugy:4.4.2019 9:55

Zde sql:

-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- Vytvořeno: Čtv 04. dub 2019, 09:51
-- Verze serveru: 5.5.62-0+deb8u1-log
-- Verze PHP: 5.6.40-0+deb8u2

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Databáze: `aaa`
--

-- --------------------------------------------------------

--
-- Struktura tabulky `clanky`
--

CREATE TABLE `clanky` (
  `clanky_id` int(11) NOT NULL,
  `titulek` varchar(255) NOT NULL,
  `obsah` text NOT NULL,
  `url` varchar(255) NOT NULL,
  `popisek` varchar(255) NOT NULL,
  `klicova_slova` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struktura tabulky `uzivatele`
--

CREATE TABLE `uzivatele` (
  `id_uzivatele` int(11) NOT NULL,
  `jmeno` varchar(255) NOT NULL,
  `heslo` varchar(255) NOT NULL,
  `admin` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Vypisuji data pro tabulku `uzivatele`
--

INSERT INTO `uzivatele` (`id_uzivatele`, `jmeno`, `heslo`, `admin`) VALUES
(0, 'admin', '$2y$10$hCUgpLrX267Vbva2dGAKu.2AMJ1NTnouRM6OTVBPRwnt3eJ4uFydq', 1);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
Odpovědět
4.4.2019 9:55
Avatar
Odpovídá na Bugy
Tomáš Novotný:4.4.2019 9:58

No už je to jasné ;-) sloupec id_uzivatele a v dotazech máš 'SELECT uzivatele_id, admin, heslo'
ono už to bylo vidět i z toho obrázku... ale nevšiml jsem si

Editováno 4.4.2019 10:00
Odpovědět
4.4.2019 9:58
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Bugy
Člen
Avatar
Odpovídá na Tomáš Novotný
Bugy:4.4.2019 10:06

Moc díky ...taková blbinka a tolik nervů :-D Už to funguje :-)

 
Odpovědět
4.4.2019 10:06
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na Bugy
Jaroslav Smrž:4.4.2019 10:40

Přesně, jak jsem ti psal hned v 1. odpověďi:

Chyba není v db.php, ale ve zpracování dotazu. Máš buď špatně pojmenovaný sloupec v databázi nebo input ve formu. Někde budeš mít pravděpodobně jen překlep v uzivatele_id.

Odpovědět
4.4.2019 10:40
/* Life runs on code */
Avatar
Matěj Kábrt:27.8.2019 19:51

Ahoj všem, mám problém s administrace.php po přidání:

<?php
session_start();
$_SESSION
if (!isset($_SESSION['uzivatel_id']))
{
        header('Location: prihlaseni.php');
        exit();
}

if (isset($_GET['odhlasit']))
{
        session_destroy();
        header('Location: prihlaseni.php');
        exit();
}
?>

Jsem ihned přesměrovaný na prihlaseni.php, místo požadovaného administrace.php a při odstranění a ponechání jen: session_start(); je sice zobrazeno administrace.php ale vypisuje tyto chyby..
**Notice: Undefined index: uzivatel_jmeno in C:\xampp\htdoc­s\NERS\adminis­trace.php on line 30

Notice: Undefined index: uzivatel_admin in C:\xampp\htdoc­s\NERS\adminis­trace.php on line 32**

celý kód můj administrace.php:

<?php
session_start(); //Spustíme používání $_SESSION
if (!isset($_SESSION['uzivatel_id']))
{
        header('Location: prihlaseni.php');
        exit();
}

if (isset($_GET['odhlasit']))
{
        session_destroy();
        header('Location: prihlaseni.php');
        exit();
}
?>
<html lang="cs-cz">
<head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="styl.css" type="text/css" />
        <title>Administrace</title>
</head>

<body>
<header>
        <div id="logo"><h1>HoBi</h1></div>
            <nav>
                <ul>
                    <li><a href="editor.php">Editor článků</a></li>
                    <li><a href="clanky.php">Seznam článků</a></li>
                    <li><a href="administrace.php?odhlasit">Odhlásit</a></li>
                </ul>
            </nav>
</header>
<article>
        <div id="centrovac">
            <header>
                <h1>Administrace</h1>
            </header>
                <section>
                        <p>Vítejte v administraci, jste přihlášeni jako <?= htmlspecialchars($_SESSION['uzivatel_jmeno']) ?></p>
                        <?php
                                if (!$_SESSION['uzivatel_admin'])
                                        echo('Nemáte administrátorská oprávnění, požádejte administrátora webu, aby vám je přidělil.');
                        ?>
                </section>
                <div class="cistic"></div>
        </div>
</article>
</body>

Díky moc za každou pomoc :-)

Editováno 27.8.2019 19:53
 
Odpovědět
27.8.2019 19:51
Avatar
Odpovídá na Matěj Kábrt
Matěj Kábrt:27.8.2019 20:05

Vyřešeno O:-) , měl jsem soubor prihlaseni.php v jiné složce :-|

 
Odpovědět
27.8.2019 20:05
Avatar
Václav Vomáčka:29.3.2020 21:25

Ahoj, asi před týdnem jsem narazil na tento web a líbí se mi, jak se zde všechno polopatě vysvětlené. Zkouším momentálně ověřování, zda tabulka obsahuje určitý výraz:

setlocale(LC_CTYPE, 'cs_CZ');
$url = str_replace(' ', '_', $_POST['url']);
$url = iconv("utf-8", "ascii//TRANSLIT", $url);
$url = strtolower($url);

$existuje = Db::querySingle('
                SELECT COUNT(*)
                FROM rs_uzivatele
                WHERE url=?
                LIMIT 1
                ', $url);

Na začátku mám ošetření, že URL adresa bude v mnou požadovaném formátu a pak v DB hledám, zda už se někde ve sloupci url nevyskytuje. Bohužel mi script stále háže chybu někde v Db.php:

Warning: PDO::prepare(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'url' in 'where clause' in /data/web/vir­tuals/136957/vir­tual/www/subdom/blog/Db­.php on line 60

Fatal error: Call to a member function execute() on boolean in /data/web/vir­tuals/136957/vir­tual/www/subdom/blog/Db­.php on line 61

V Db.php je na tomto místě:

/**
 * Spustí dotaz a vrátí PDO statement
 * @param array $params Pole, kde je prvním prvkem dotaz a dalšími jsou parametry
 * @return \PDOStatement PDO statement
 */
private static function executeStatement($params)
{
        $query = array_shift($params);
        $statement = self::$connection->prepare($query);
        $statement->execute($params);
        return $statement;
}

Čemuž samozřejmě zatím moc nerozumím.
Díky za rady, jak se s tím vypořádat :-)

 
Odpovědět
29.3.2020 21:25
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 10 zpráv z 138.