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

PHP - użytkownik zalogowany na wielu podstronach

+1 głos
557 wizyt
pytanie zadane 23 listopada 2021 w PHP przez BarSki13 Obywatel (1,270 p.)

Witam,

W PHP chciałbym zrobić, że użytkownik jest zalogowany na wielu podstronach. Na każdej można się wylogować przyciskiem. W programowaniu PHP jestem świerzakiem, nie mam zbyt dużej wiedzy o pisaniu w PHP. Będą to operacje na sesjach ale nie wiem jak je wykorzystać do wielu podstron z takim właśnie zalogowanym użytkownikiem.

Macie jakieś porady czy linki do stron które mogą mi pokazać coś na ten temat.

Z góry dziękuję za odpowiedź

 

Kod PHP logowanie

<?php
            include('connect.php');

            session_start();
            
            if(!empty($_POST['username']) && !empty($_POST['username2']))
            {
                $dane1 = 'admin';
                $dane2 = '1234';
                if($_POST['username'] == $dane1 && $_POST["username2"] == $dane2)
                {
                    header('Location: http://localhost/shop/index.html');
                }
                else
                {
                    echo "Nieprawidłowe dane logowania";
                }
            }
?>

Kod PHP wylogowanie

<?php
    session_start();

    session_destroy();

    header('Location: http://localhost/shop/zaloguj.php');
?>

 

5 odpowiedzi

+4 głosów
odpowiedź 23 listopada 2021 przez qax Dyskutant (8,180 p.)
Nie ma potrzeby zmieniać headera odpowiedzi http, który ma wskazywać na aktualną lokalizację użytkownika - przecież każdy może sobie go podglądnąć i wejść na tą stronę bez uprawnień. Lepiej raz stworzyć sesję podczas logowania i w niej przechowywać login i hasło, a na wszystkich stronach przedtem sprawdzać poprawność tych danych i wyświetlać aktualny status użytkownika (czyli w razie konieczności wyświetlać panel do logowania lub przycisk do wylogowywania).

Jeśli napisałem coś niezrozumiale pytaj śmiało. ;)
1
komentarz 23 listopada 2021 przez Wiciorny Ekspert (283,440 p.)

tylko żeby kolega zrozumiał dobrze, to utrzymywanie danych sesji 

Never store any kind of sensitive data anywhere except the database you should generally avoid using MD5 and SHA family directly.

dlatego trzeba odp. zaimplementować System uwierzytelniania, który  porównywać  będzie  informacje o kliencie (tutaj np. nazwę użytkownika i hasło), a następnie stworzy np. specjalny token, zapisując go w sesji lub w pliku cookie.

komentarz 23 listopada 2021 przez qax Dyskutant (8,180 p.)

Zgadza się. smiley

+2 głosów
odpowiedź 23 listopada 2021 przez wizarddos Nałogowiec (28,110 p.)

W takim przypadku pomogą zmienne sesyjne

W twoim przypadku można by było np. stworzyć taką zmienną ze statusem zalogowania, ewentualnie jakimś tokenem zabezpieczającym. Coś w rodzaju tego

$_SESSION['is loged'] = true;

I na każdej podstronie sprawdzać czy taka zmienna jest ustawiona

 

a aby korzystać z sesji wystarczy session_start() na początku pliku

+2 głosów
odpowiedź 24 listopada 2021 przez Ehlert Ekspert (215,210 p.)
+1 głos
odpowiedź 24 listopada 2021 przez mateusz45 Gaduła (3,300 p.)
Utwórz w php ciasteczko które będzie przetrzymywało tokien i najlepiej jeszcze 2 które Będzie zawierało cokolwiek ale żeby było bo to bardziej będzie chroniło przed xss ale chociaż troszke
0 głosów

Podobne pytania

0 głosów
1 odpowiedź 328 wizyt
pytanie zadane 12 lipca 2018 w PHP przez Vxid Functixn Bywalec (2,720 p.)
0 głosów
0 odpowiedzi 523 wizyt
0 głosów
2 odpowiedzi 1,683 wizyt
pytanie zadane 17 lutego 2016 w PHP przez Kubala94 Początkujący (360 p.)

93,765 zapytań

142,721 odpowiedzi

323,372 komentarzy

63,359 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...