Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Autoryzacja i logowanie uzytkownika.
Bibop
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.12.2005

Ostrzeżenie: (0%)
-----


Witam,
mam taki problem. Pisze forum w php z wykorzystaniem mysql'a i utknalem w miejscu autoryzacji. Otoz, udalo mi sie wkoncu zrobic skrypty do logowania i rejestracji uzytkownikow i teraz mam problem jak zrobic, zeby po kliknieciu w przycisk "zaloguj" zamiast formularza do logowania pojawilo sie np. "witaj xxx". Mam dwa pliki do autoryzacji i jeden to zwykly formularz, a drugi skrypt (loguj.php) do sprawdzania danych w bazie. Wszystko jest ok, wyskakuje powitanie i ew. bledy, ale na nowej stronie, czyli nastepuje przekierowanie do skryptu obslugujacego logowanie.
Strona glowna to trzy includowane pliki naglowek.tpl, tekst.tpl (gdzie jest includowany formularz form_log.php) i stopka.tpl.
Powiem szczerze, ze juz powoli sie poddaje, bo nie moge wymyslec jak zrobic, zeby nie pisac kolejnych stron dla zalogowanych i niezalogowanych.
Pomysl jest taki, ze zalogowany moze pisac i odpowiadac na posty, a niezalogowany tylko czytac. Narazie wymyslilem zeby zrobic inna strone dla zalogowanych (z linkami do pisania nowego posta i do odpowiadania), ale moze da sie to zrobic inaczej (linki caly czas sa widoczne, ale po kliknieciu przez niezalogowanego wyskakuje komunikat "Jezeli chcesz napisac nowy temat...... itd")?
Formularz i skrypt znajdziecie tu.
Pozdrawiam,
Bibop
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Jotek
post
Post #2





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 13.12.2005

Ostrzeżenie: (0%)
-----


Błąd znajduje się w pliku form_log.php. Niezależnie czy jesteś zalogowany czy nie wyświtla on formularz logowania.

Przykład rozwiązania:

dodaj na początku plików tekst.tpl, loguj.php:
  1. <?
  2. ?>



następnie dodaj zmienną sesyjną przetrzymującą wartość zmiennej $login w pliku loguj.php:
  1. <?php
  2.  
  3. // ....
  4.  
  5. # Jezeli wszystko jest poprawne, wyswietlane jest powitanie
  6. else
  7. {
  8. session_start();  // <------------- usuń to
  9.  
  10. $_SESSION['userid'] = $login; // <---------------- dodaj to 
  11.  
  12. print ("witaj $login<BR>");
  13.  
  14. # Dodanie numeru sesji do bazy danych
  15. $session = session_id();
  16. $sesja = "UPDATE $tabela SET SESID='$session' WHERE login='$login'"; 
  17. @mysql_query($sesja);
  18. include ("form_wyloguj.php"); // <-------------- usuń to 
  19. }
  20.  
  21. // .....
  22.  
  23. ?>


teraz zmodyfikuj plik form_log.php:

  1. <?php
  2.  
  3. $login= $_SESSION['userid']; //zmienna pomocnicza
  4.  
  5. if($login) {
  6.  echo("Witaj $login !<br>
  7.  <a href="wyloguj.php">wyloguj sie</a>");
  8. }
  9.  
  10. else
  11.  
  12. {
  13. <form action="loguj.php" method="POST">
  14. Login: <input type=text name="login" value=""><br>
  15. Haslo: <input type=password name="haslo" value=""><br>
  16. <input type=submit value="Zaloguj"><br>
  17. Jesli nie masz konta <a href="form_rej.php">zarejestruj sie</a>
  18. </form>");
  19. }
  20.  
  21. ?>



końcowa faza to modyfikacja wylogowania musisz zmienic nazwe form_wyloguj.php na wyloguj.php i wypełnić jego zawartość mniej więcej tak:

  1. <?
  2.  
  3. $_SESSION['userid'] = "";
  4.  
  5. echo("Zostales wylogowany!<br>
  6. <a href="tekst.tpl">Powrot</a>");
  7. ?>


Pamiętaj że każdy plik php odpalany bezpośrednio przez przeglądarke musi miec na początku:
  1. <?
  2. ?>

żeby działał mechanizm sesji. Każdy plik którego "inkludujesz" nie powinien mieć tego startu sesji. Na stronach w serwisie na początku weryfikujesz stan zmiennej sesyjnej $_SESSION['userid'] i jesli jest ustawiona zezwalasz na działania a jesli nie ustawiona blokujesz działania.


Aha i ostatnia rzecz w pliku loguj.php pozmieniaj:
  1. <?php
  2.  
  3. print ("Sprobuj ponownie <a href="form_log.php">Powrot</a>");
  4.  
  5. ?>

na
  1. <?php
  2.  
  3. print ("Sprobuj ponownie <a href="tekst.tpl">Powrot</a>");
  4.  
  5. ?>

gdzie tekst.tpl to główna strona.

Pozdrawiam.

(IMG:http://forum.php.pl/uwaga.gif)
poprawiam
---
nospor
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 13:28