NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: php login

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Ladislav Niderle:19.8.2017 9:06

Ahoj, tvořím stránku, kde bude použit MVC model, ale než se k ní dostanu, tak chci mít nějdříve stránku, kde se bude muset uživatel přihlásit. Popkud nebude přihlášen, tak ho to automaticky má hodit na tuto přihlašovací stránku. Mám tu několik problému i dotazů jestli to řeším správně nebo popřípadě bych prosil o radu jak by se to mělo správně dělat.
Momentálně mám přihlašování napsané v PHP, kde mám blok, kde používám metohu POST z formuláře. Zde nevím, zda je to vhodné či existuje lepší způsob. Kontrolu s DB si jsem schopen udělat, ale v čem mám problém jsou celkem nyní 2 věci:

  1. když se uživatel přihlásí a vše proběhne v pořádku, tak se má odskočit na index toho MVC modelu. Toto nevím jak bych to měl udělat ten odskok, tak jestli mi zde může někdo poradit jak se to dělá.
  2. když se nepodaří přihlásit, tak aby stránka s přihlášením zůstala, ale napsala se hláška o chybě při přihlašování nebo nesprávném heslu. To taky nevím jak bych toho mohl docílit, jelikož zatím metoda POST mi vždy jakoby otevře novou prázdnou stránku, kde je výsledek.

Moc bych Vám byl vděčný, kdyby mně mohl někdo nasměrovat, jak se toto má řešit.

Děkuji

 
Odpovědět
19.8.2017 9:06
Avatar
Lasvit
Člen
Avatar
Lasvit:19.8.2017 9:27

Ahoj, na tento problém ti můžu doporučit si pročíst https://www.itnetwork.cz/php/e-shop , asi nejlepší řešení :) protože tohle je jenom jeden z prvních problému co tě čeká :P :D

 
Nahoru Odpovědět
19.8.2017 9:27
Avatar
Odpovídá na Ladislav Niderle
Vladislav Domin:19.8.2017 9:57

Nechcem byt hnusny, ale ked nevies moc zaklady PHP, nemal by si zacinat s MVC este. Pretoze, to co potrebujes su naozaj zaklady...

1. Po uspesnom prihlaseni tj. po nastaveni COOKIES / SESSION uzivatela presmerujes na home (alebo ak mas oznacenu inak uvitaciu stranku) tj.

spravis si funkciu dajme tomu:

public function route($url, $time = 0) {
        $domainUrl = "http://" . $_SERVER['SERVER_NAME'] . '/';

        if($time = 0) {
            header("Location: $domainUrl/$url");
            header("Connection: close");
            exit;
        }
        else {
            header("refresh: $time ;url= $domainUrl/$url");
            header("Connection: close");
            exit;
        }
    }

$url = home napr.

2. Mozes to riesit notifikaciami cez SESSION, co mi pride asi najlahsie

/**
     * Nastaví notifikáciu do SESSIONU
     *
     * @param $message string Text notifikacie
     * @param $cssClass string Typ notifikacie
     *
     */
    public function setNotification($message, $cssClass) {
        $data = array(
            "text" => $message,
            "class" => $cssClass
        );

        if (isset($_SESSION['notifications']))
            $_SESSION['notifications'][] = $data;
        else
            $_SESSION['notifications'] = array($data);
    }
  • setNotification -> sluzi na nastavenie notifikacie tj. ak sa nepodari prihlasis, tak ulozis do SESSION text, popripadne triedu CSS (ak chces mat zelenu pre uspesne prihlasenie a cervenu pre neuspesne)
  • ak nepouzivas este MVC, tak funcia getNotification bude na kazdej podstranke (ak sa nachadza nejaky session s indexom notification, tak sa vypise a vymaze (aby sa nevypisovala stale)
/**
     * Vráti text a triedu zo SESSIONU a následne vymaže SESSION
     *
     * @return array string text a trieda notifikacie
     */
    public function getNotification() {
        if (isset($_SESSION['notifications']))
        {
            $notification = $_SESSION['notifications'];
            unset($_SESSION['notifications']);
            return $notification;
        }
        else
            return array();
    }
 
Nahoru Odpovědět
19.8.2017 9:57
Avatar
Odpovídá na Ladislav Niderle
Vladislav Domin:19.8.2017 13:58

Este som zabudol, vypis notifikacie by mohol vyzerat nasledovne

<?php if(!empty($notifications)): ?>
        <?php foreach ($notifications as $notification) : ?>
            <div class="notification notification-<?=$notification['class']?>">
                <?= $notification['text'] ?>
            </div>
        <?php endforeach ?>
    <?php endif; ?>
 
Nahoru Odpovědět
19.8.2017 13:58
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 4 zpráv z 4.