NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

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 michal.smatlak
Martin Konečný (pavelco1998):27.12.2015 20:50

zdar, použij funkci strlen()

Odpovědět
+1
27.12.2015 20:50
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
bonroykid
Člen
Avatar
bonroykid:20.1.2016 20:46

Ahoj,
po odeslání registrae administrace.php vypíše hášku:
Notice: Undefined variable: _SESSION in C:\wamp64\www\my-site\databaze­ProZacatecniky\NER­S\administrace­.php on line 30.
No a přestože $_SESSION vypsaný na konci registrace.php vypíše obsah tak po přepnutí do administrae.php je $_SESSION prázdná. Ve výpisu phpinfo() jsem našel, že se má ukládat do wamp64/tmp. Tam je soubor sess_cc3rf23oh­rqn8kpj0lknpn0fq4, který má obsah $_session zapsaný. Tak už nevím.

 
Odpovědět
20.1.2016 20:46
Avatar
Odpovídá na bonroykid
Johny Manuelli:20.1.2016 22:49

Zkontroluj si jestli máš zaplou session, taky mi to psalo tuhle chybu, když jsem zapomněl zapnout.

<?php session_start(); ?>
Editováno 20.1.2016 22:51
Odpovědět
+1
20.1.2016 22:49
there are 10 types of people in this world, those who understand binary and those who don't
Avatar
bonroykid
Člen
Avatar
Odpovídá na Johny Manuelli
bonroykid:21.1.2016 5:12

session_start tam mám:

<?php
session_start();
require('Db.php');
Db::connect('127.0.0.1', 'ners_db', 'root', '');

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']);
                                $existuje = NULL; //// ruší kontrou duplicitního uživatele smazat !!!!
                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;
                                echo '<br> ----------------------------------------------<br>';
                                                        var_dump($_SESSION);
                                                        var_dump($_POST);
                                                        echo '<br> ----------------------------------------------<br>';
                        header('Location: administrace.php');
                        exit();
                }
        }
}

?>

<!DOCTYPE html>
<html lang="cs-cz">

        <head>
                <meta charset="utf-8" />
                <meta name="description" content="NERS . registrace" />
                <meta name="author" content="bonroykid" />
                <link rel="shortcut icon" href="obrazky/ikona.ico" />
                <link rel="stylesheet" href="css/normalize.css" type="text/css" />
                <link rel="stylesheet" href="css/style.css" type="text/css" />
                <title>NERS</title>
        </head>

        <body>
                <header>
                        <h1>NEARS . (C)bonroykid</h1>
                </header>
                <nav>
                <?php
                require_once('menu.php') ?>
                <nav>
                <main>
                <?php require_once('vizitka.php') ?>

        <article>
                <h2>REGISTRACE</h2>
                <?php
                        if (isset($zprava))
                                echo('<p>' . $zprava . '</p>');
                ?>

                <form method="post">
                        Jméno<br />
                        <input type="text" name="jmeno" value="Evžen"/><br />
                        Heslo<br />
                        <input type="password" name="heslo" value="heslo" /><br />
                        Heslo znovu<br />
                        <input type="password" name="heslo_znovu" value="heslo" /><br />
                        Zadejte aktuální rok (antispam)<br />
                        <input type="text" name="rok" value="2016" /><br />
                        <input type="submit" value="Registrovat" />
                </form>

        </article>



                </main>


        </body>
</html>
<body>
                <header>
                        <h1>NERS . administrace . (C)bonroykid</h1>
                </header>
                <nav>
                <?php
                require_once('menu.php') ?>
                <nav>
                <main>
                <?php require_once('vizitka.php') ?>

        <article>
                <h2>administrace</h2>
                <p>Vítejte v administraci, jste přihlášeni jako
                <?php
                                                echo '<br> ----------------------------------------------<br>';
                                                                        var_dump($_SESSION);
                                                                        echo '<br> ----------------------------------------------<br>';


                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>

        </article>
 
Odpovědět
21.1.2016 5:12
Avatar
Odpovídá na bonroykid
Johny Manuelli:21.1.2016 15:22

Tak napadá mě ještě poslední věc, a to přidat do formu action tag jako například:

<form method="post" action="">
 Nebo:
<form method="post" action=" <?php $_SERVER['PHP_SELF'] ?> ">
Editováno 21.1.2016 15:22
Odpovědět
21.1.2016 15:22
there are 10 types of people in this world, those who understand binary and those who don't
Avatar
bonroykid
Člen
Avatar
Odpovídá na Johny Manuelli
bonroykid:22.1.2016 7:51

Díky, ale tohle nepomohlo. Zkusím spustit originální kód a pak to napíšu celé znova. To mi jen prospěje. Dám vědět, jak to dopadlo.

 
Odpovědět
22.1.2016 7:51
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na bonroykid
Tonda Kozák:22.1.2016 9:01

To druhé je kód administrace.php? I tam musíš mít zapnuté session (session_start()).

 
Odpovědět
22.1.2016 9:01
Avatar
bonroykid
Člen
Avatar
Odpovídá na Tonda Kozák
bonroykid:25.1.2016 14:35

Díky moc, tím to bylo.
Nějak jsem myslel, že když se session jednou spustí, tak běží a je přístupná odkudkoliv.

 
Odpovědět
25.1.2016 14:35
Avatar
Tereza -
Člen
Avatar
Tereza -:1.2.2016 13:17

Zdravím,
při registraci mi prohlížeč vypíše chybu:


Warning: PDO::prepare(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'jmeno' in 'where clause' in C:\xampp\htdoc­s\projekt\Db.php on line 60

Fatal error: Call to a member function execute() on boolean in C:\xampp\htdoc­s\projekt\Db.php on line 61


A do databáze se údaje nezapíši

Nevíte, jak zařídit, aby to fungovalo? :)
Předem děkuji za odpověď :)

 
Odpovědět
1.2.2016 13:17
Avatar
Tereza -
Člen
Avatar
Tereza -:1.2.2016 14:07

Problém vyřešen :)

 
Odpovědět
1.2.2016 14:07
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.