• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Logowanie Cookies

0 głosów
205 wizyt
pytanie zadane 29 listopada 2019 w PHP przez manager96 Bywalec (2,010 p.)

Cześć, mam pytanie, zaczynamy poznawać ciasteczka coockies, zadaniem jest stworzenie skryptu logowania, tym razem zupełnie bez korzystania z sesji. Mam pytanie jak przerobić ten skrypt:


<?php
if($_COOKIE['login'] == 'zalogowany') echo '<font color=#D7D700>Już jestes zalogowany!</font>';
else
{
    if(isset($_POST['ok']))
    {
        $nick = $_POST['nick'];
        $pass = $_POST['pass'];
        if(empty($nick) || empty($pass)) echo '<font color=#E10000>Wpisz wszystkie pola!</font><br/>';
        else
        {  
            if($nick == LOGIN && $pass == HASLO)
            {
                $czas = time();
                setcookie("user", "$nick", $czas+3600);
                setcookie("haslo", "$pass ", $czas+3600);
                setcookie("login", "zalogowany", $czas+3600);
                echo '<font color=#00BB00>Zostałes poprawnie zalogowany!</font> Możesz teraz przejsć na <a href="index.php">stronę główna</a><br/>';
            } 
            else
            {
            echo '<font color=#aeb30d>Niestety podałes niepoprawne dane!</font><br/>';
            }
            
        }
    }
    else
    {
        echo '<form action="login.php" method="POST">
        Nick: <br />
        <input type="text" name="nick"><br />
        Hasło: <br />
        <input type="password" name="pass"><br />
        <input type="submit" name="ok" value="Zaloguj">
        </form><br/>';
    }
}
?>

Żeby zamiast LOGIN i HASLO każdy wpisywał swoje dane użyte podczas rejestracji? 

komentarz 29 listopada 2019 przez Arkadiusz Waluk Ekspert (279,760 p.)
A skąd te dane logowania mają się wziąć? Gdzie trafiają po rejestracji? Z tego miejsca musisz je odczytać i tu sprawdzić.

Poza tym to logowanie jest wadliwe, takich danych jak hasło nie trzyma się w ciasteczku, tym bardziej nie trzyma się w formie plain textu. Trzymanie w ciasteczku informacji, że ktoś jest zalogowany, też nie ma sensu, bo można to zmanipulować bez większego problemu. Nawet jeśli to tylko zadanie do nauki to po co uczyć się czegoś, czego się absolutnie nie robi.
komentarz 29 listopada 2019 przez manager96 Bywalec (2,010 p.)

Po to że potem będziemy musieli ładnie opisać czemu sesja jest bezpieczniejsza. I łatwiejsza kurczę, zmienne sesyjne wiadomo co robią, a jak odczytać (skąd) te wartości z coockies ? Jak to działa? 

W index.php mam jeszcze :

<?php
if($_COOKIE['login'] == 'zalogowany')
{
    echo 'Twój login: '.$_COOKIE['user'].'';
    echo '<br/>';
    echo 'Twoje hasło: '.$_COOKIE['haslo'].'';
    echo '<br/>';    
    echo 'Akcja: '.$_COOKIE['login'].'';
    echo '<br/>';
    echo '<a href="logout.php">Wyloguj</a>';        
}
else{
    echo 'Niezalogowany!!  <a href="login.php">zaloguj</a>';
}
?>

 

komentarz 29 listopada 2019 przez Arkadiusz Waluk Ekspert (279,760 p.)
To ja już nie bardzo rozumiem, czym jest plik pokazany na początku? Wygląda z jednej strony jak logowanie, bo sprawdza dane, z drugiej strony jak rejestracja, bo je zapisuje.

Jeżeli założenie jest takie, że w rejestracji zapiszesz to przez setcookie(), to później w momencie logowania możesz odczytać z $_COOKIE wartości.
komentarz 29 listopada 2019 przez manager96 Bywalec (2,010 p.)
plik na początku to plik login.php który służy do okodowania funkcji logowania wraz z formularze. Index.php wyświetla jedynie status czy jesteś zalogowany czy nie. Aktualnie co bym nie wpisał walidacja jest udana (nie wiem czemu) i zawsze mnie loguje nawet jeśli passy są błędne.
komentarz 29 listopada 2019 przez Arkadiusz Waluk Ekspert (279,760 p.)
A jak wygląda rejestracja? Dane zarejestrowanego po rejestracji są zapisywane do ciasteczka?
komentarz 29 listopada 2019 przez manager96 Bywalec (2,010 p.)
niestety nie, nie mam jeszcze formularzu rejestracji. Mam utworzonego na sztywno użytkownika w bazie danych.
komentarz 29 listopada 2019 przez Arkadiusz Waluk Ekspert (279,760 p.)
Czyli na formularzu logowania trzeba sprawdzić czy podane dane użytkownika pasują do któregoś rekordu z bazy? Wykonaj więc zapytanie do bazy z odpowiednim warunkiem i zobacz czy dane się zgadzają. Jeżeli tak to loguj, jeśli nie zwracaj błąd.

1 odpowiedź

0 głosów
odpowiedź 29 listopada 2019 przez Ehlert Ekspert (205,650 p.)

Przecież gdzieś sesję trzeba trzymać. Inaczej owa sesja nie może trwać. Bo gdzie zapiszesz że użytkownik jest zalogowany?

Mam wrażenie że próbujesz wymyślać jakieś metody, ale zaufaj mi. Wszystkie tematy związane z logowaniem po http zostały wyczerpane. Najlepsze metody i podejścia zostały opisane, więc warto z nich korzystać jeśli nie chcesz być developerem, który naraża tworzony produkt na wyciek danych.

Btw coockies to niepoprawny zapis, co więcej może się źle kojarzyć indecision

Podobne pytania

0 głosów
1 odpowiedź 145 wizyt
pytanie zadane 20 października 2016 w PHP przez MatiiTv Gaduła (3,790 p.)
+1 głos
2 odpowiedzi 126 wizyt
pytanie zadane 30 lipca 2016 w Sieci komputerowe, internet przez Paweł123 Nałogowiec (33,580 p.)
0 głosów
1 odpowiedź 84 wizyt
pytanie zadane 21 sierpnia 2020 w PHP przez Bakkit Mądrala (7,020 p.)

86,460 zapytań

135,216 odpowiedzi

300,377 komentarzy

57,209 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...