Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie + PHP + MySQL
Forum PHP.pl > Forum > PHP
darophp
Hejka mam taki problem tiredsmiley.gif , otóż mam skrypt logowania oparty na sesjach w PHP + MySQL (login + hasło md5). Ma on za zadanie bronić wejścia przed niepożądanym osobami do panelu admina. Jest wszystko super ... po wpisaniu byle jakiej nazwy nie loguje się więc jest dobrze ... gdy wpisze poprawna zalogowywuje mnie i wyświetla, Witaj dariusz ..itd. i mam tez funkcję wylogowania przez:



Ale załóżmy, że mnie zalogowało i przy odświeżaniu strony nic się nie dzieje. Gdy kliknę w pasek adresu i kliknę Enter to powraca mi do formularza gdzie się logowałem, czy coś zrobiłem nie tak ? Dodam że korzystałem ze skryptu z tego forum: http://forum.php.pl/index.php?showtopic=64512 trochę go zmodyfikowałem i dodałem to polacz.php i wyloguj.php

Jestem początkujący .. od 2lat* zajmuję się PHP + MySQL, ale nie ćwiczyłemz rok... laugh.gif

Dodam, że potzrebuje to do głównego katalogu ... więc w index.php mam tak:

  1.  
  2. <?php
  3. include("logowanie.php");
  4.  
  5. if (isset($_SESSION['nazwa_uzytkownika'])) {
  6. echo $print;
  7. } else {
  8. echo $print;
  9. }
  10.  
  11. if ($tworzenie_form==true){
  12. include("form.php");
  13. }
  14.  
  15. if ($_SESSION['nazwa_uzytkownika']=='nick użytkownika') {
  16. echo "Masz dostęp do tego katalogu";
  17. } else {
  18. echo "Brak uprawnień";
  19. }
  20. ?>
  21.  
  22.  


paBlas16
Ale pokaż cały kod bo masz problem z sesjami. Pewnie gdzieś źle coś zapisałeś. A na początku masz session_start(); ?
darophp
logowanie.php

  1. <?php
  2.  
  3. if (isset($_POST['login']) && isset($_POST['haslo'])) {
  4. $login = $_POST['login'];
  5. $haslo = $_POST['haslo'];
  6.  
  7. //sprawdzamy czy mamy użytkownika w bazie
  8.  
  9. $mysql_host = "localhost";
  10. $mysql_login = "...";
  11. $mysql_haslo = "...";
  12. $mysql_baza = "...";
  13.  
  14. $link = mysql_connect($mysql_host, $mysql_login, $mysql_haslo);
  15. if (!$link) {
  16. die('Nie połączono : ' . mysql_error());
  17. }
  18.  
  19. $db_selected = mysql_select_db($mysql_baza, $link);
  20. if (!$db_selected) {
  21. die ('Nie można ustawić foo : ' . mysql_error());
  22. }
  23.  
  24. $md5 = md5($haslo);
  25. $zapytanie = "SELECT * FROM pa WHERE login='$login' AND haslo='$md5';";
  26. $wykonaj = mysql_query($zapytanie);
  27. $wiersz = mysql_fetch_array($wykonaj);
  28.  
  29. {
  30. $_SESSION['nazwa_uzytkownika']=$login; //zapisujemy kto się zalogował (później wykorzystamy do kontroli dostępu do katalogów)
  31. }
  32. }
  33.  
  34. if (isset($_SESSION['nazwa_uzytkownika']))
  35. {
  36. $print = "Zalogowany użytkownik.<br />Witaj :<strong>".$_SESSION['nazwa_uzytkownika']."</strong><a href="/wyloguj.php">Wyloguj</a>";
  37. }
  38. else
  39. {
  40. if (isset($login)) //jezeli proba lgogowania sie nie powiodla
  41. {
  42. $print = "<strong>Nieudane logowanie!</strong>";
  43. }
  44. else //nie bylo proby logowania lub nastapilo wylogowanie
  45. {
  46. $print = "Niezalogowany(a)</strong>";
  47. }
  48. //tworzenie formularza logowania
  49. $tworzenie_form=true;
  50. }
  51. ?>


index.php

  1. <?php
  2. include("logowanie.php");
  3.  
  4. if (isset($_SESSION['nazwa_uzytkownika'])) {
  5. echo $print;
  6. } else {
  7. echo $print;
  8. }
  9.  
  10. if ($tworzenie_form==true){
  11. include("form.php");
  12. }
  13.  
  14. if ($_SESSION['nazwa_uzytkownika']=='nick użytkownika') {
  15. echo "Masz dostęp do tego katalogu";
  16. } else {
  17. echo "Brak uprawnień";
  18. }
  19. ?>
  20.  
  21. + kod strony ...


form.php

  1. <form name="logowanie" method="post" action="index.php">
  2. <input type="text" name="login" title="Pole loginu"> <br />
  3. <input type="password" name="haslo" title="Pole hasła"> <br />
  4. <input type="submit" name="submit" value="Loguj" title="Zaloguj">
  5. </form>


wyloguj.php

  1. <?php
  2. $_SESSION = array();
  3.  
  4. if (isset($_COOKIE[session_name()])) {
  5. setcookie(session_name(), '', time()-42000, '/');
  6. }
  7.  
  8.  
  9. ?>
futura
Do każdego pliku na samym początku, jak korzystasz ze zmiennych sesyjnych, musisz dodać session_start();
darophp
Wielkie dzięki podziałało... ale mam jeszcze jedno pytanko, bo mam plik index.php i jest jakiś sposób, żeby rozdzielić formularz z loginem i hasłem a ta resztę stronki, która się pojawi po zalogowaniu. Można to np dać w

  1. echo <<<KONIEC
  2. ... tresc tej strony html i body
  3. KONIEC;


hmm ?
erix
Kurs PHP przeczytany? Samodzielnie spróbowałeś?

Chce Ci się do WC, najpierw nas zapytasz, czy opuścić deskę, czy po prostu sprawdzisz, czy się da?
futura
Generalnie schemat powinien wyglądać tak:

1) index.php -> formularz logowania (<form>)
2) Postem przesyłasz do pliku np: walidacja.php dane (login i hasło) i sprawdzasz czy zgadzają się z wpisem w bazie danych
3) Jeśli zgadza się to dajesz session_start(); $_SESSION["zalogowany"] = "zalogowany"; oraz header("Location: zalogowany.php");
4) W zalogowany.php na początku sprawdzasz czy jest ustawiona zmienna sesji, czyli: if(isset($_SESSION["zalogowany"])). Jeśli tak to wyświetlasz stronę z danymi a jeśli nie to dajesz jakiś komunikat i header("Refresh: 5;url=logowanie.php");

Jeśli pomogłem to daj "pomógł" winksmiley.jpg
korey
Rozumiem ze wyloguj.php nie działa tak jak powinno. ja bym zrobił tak:

zamienił tekst:
  1. $print = "Zalogowany użytkownik.<br />Witaj :<strong>".$_SESSION['nazwa_uzytkownika']."</strong><a href="/wyloguj.php">Wyloguj</a>";

na
  1.  
  2. echo 'Zalogowany użytkownik.<br />Witaj :<strong>".$_SESSION['nazwa_uzytkownika']."</strong>';
  3. echo '<br />';
  4. echo '<href="index.php?action=logof">wyloguj</a>';
  5. if($_GET['action'] == 'logog'){
  6.  
  7. sesion_unset();
  8. echo 'Zostałeś pomyślnie wylogowany';
  9. // ewentualnie funkcja wyswietlająca formularz logowania
  10. }
  11. else{
  12. echo 'dalsza treść';
  13. }
  14.  


Jeśli dobrze cie zrozumiałem to powyższy kod powinien byc odpowiedni.
darophp
Wielkie dzięki wszystkim za pomoc smile.gif Pokombinowałem trochę i udało się ... teraz dostrajam ją designersko biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.