Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 5. diel - Ners - Registrácia užívateľov v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá 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í..

Editované
Odpovedať
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Bugy
Člen
Avatar
Odpovedá 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>
Avatar
Odpovedá na Bugy
Tomáš Novotný:4.4.2019 9:44

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

Odpovedať
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Bugy
Člen
Avatar
Odpovedá 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 */;
Avatar
Odpovedá 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

Editované
Odpovedať
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Bugy
Člen
Avatar
Odpovedá na Tomáš Novotný
Bugy:4.4.2019 10:06

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

Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovedá 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.

Odpovedať
/* 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 :-)

Editované
Avatar
Odpovedá 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 :-|

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 :-)

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 138.