Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z logowaniem do systemu
Forum PHP.pl > Forum > PHP
Czesław
Witam! Od razu chciałbym zaznaczyc że jestem raczej mało zaawansowanym użytkownikiem więc prosiłbym o wyrozumiałośc :-)

Tworzę właśnie wirtualny system obsługi pracownika, który opiera się na Bazie Danych w phpMyAdmin, ma on między innymi wyślwietlac takie rzeczy jak miesięczne wynagrodzenie, grafik pracy, dane pracownika itp. W sumie to te rzeczy już mam zrobione i teraz mam problem z logowaniem, bo to ma wyglądac tak, że stroną początkową ma byc panel logowania i wewnątrz strony mają się wyświetlac wyżej wymienione informacje tej osoby która się zalogowała... Jak napisac taki skrypt, no i jak zrobic żeby on był przestrzegany dla tego konkretnego pracownika przez każdą podstronę??

Będę bardzo wdzięczny za wszelkie podpowiedzi!!
Lejto
oprzyj się o sesje i zapytania do bazy, poczytaj o tym
np where user = $_SESSION['login'];
Czesław
Poczytałem trochę o tym co wspominałeś, ale bardzo topornie mi to idzie... zrobiłem panel do logowania i działa tak jak tego chciałem tzn. sprawdza nick i hasło pracownika i wpuszcza na stroną główną. Może mi ktoś podpowiedziec jak tam wkleic najprościej tą sesję?? Bo nic mi się nie trzyma kupy sad.gif



  1. <?php
  2.  
  3. mysql_connect("localhost", "root", "")
  4. or die("Could not connect");
  5.  
  6. or die("Could not select database");
  7.  
  8.  
  9.  
  10. <center>
  11.  
  12. <form action="index.php" method="POST">
  13. Login:<input type="text" name="login"><br/>
  14. Haslo:<input type="password" name="pass"><br/>
  15. <input type="submit" name="submit" value="Loguj"></form>;
  16.  
  17. </center> ';
  18.  
  19. $_SESSION['login'] = $_POST['login'] ;
  20.  
  21.  
  22. $log =($_POST['login']);
  23. $haslo = ($_POST['pass']);
  24.  
  25. $zapytanie = mysql_query("SELECT Pracownik_Nick, Pracownik_Haslo FROM PRACOWNIK WHERE Pracownik_Nick = '$log'"); //pobranie rekordow
  26.  
  27.  
  28.  
  29. $row = mysql_fetch_array($zapytanie);
  30.  
  31. if(($_POST['login']) && ($_POST['pass']))
  32. { if ($log ==''.$row['Pracownik_Nick'].'' && $haslo ==''.$row['Pracownik_Haslo'].'')
  33. { header("Location: glowna.php");}
  34. else { echo 'Błędne hasło lub login' ;}
  35. }
  36. ?>
Lejto
nie mam za dużo czasu więc daje linka:
http://ylk.net.pl/php/system-logowania-z-u...em-sesji-w-php/
przeanalizuj to co tam jest
Czesław
  1. <HTML>
  2.  
  3. <center>
  4.  
  5. <form action="index.php" method="POST">
  6. Login:<input type="text" name="login"><br/>
  7. Haslo:<input type="password" name="pass"><br/>
  8. <button type="submit" >Loguj</button>
  9. </form>
  10.  
  11. </center>
  12. </HTML>
  13.  
  14. <?php
  15.  
  16. mysql_connect("localhost", "root", "")
  17. or die("Could not connect");
  18.  
  19. or die("Could not select database");
  20.  
  21. $log =($_POST['login']);
  22. $haslo = ($_POST['pass']);
  23.  
  24. $zapytanie = mysql_query("SELECT Pracownik_Nick, Pracownik_Haslo FROM PRACOWNIK WHERE Pracownik_Nick = '$log'");
  25.  
  26.  
  27.  
  28. $row = mysql_fetch_array($zapytanie);
  29.  
  30. if(isset($_POST['login']) && isset($_POST['pass']))
  31. { if ($log ==''.$row['Pracownik_Nick'].'' && $haslo ==''.$row['Pracownik_Haslo'].'')
  32. {
  33. $_SESSION['zalogowany']=true;
  34. $_SESSION['login']=$_POST['login'];
  35.  
  36. header("Location: glowna.php");}
  37.  
  38. else { echo 'Błędne hasło lub login' ;}
  39. }
  40.  
  41. if (1==$_GET['logout'])
  42. {
  43. }
  44.  
  45. ?>


Sorki, że jestem upierdliwy ale bardzo mi zależy żeby w sobotę na zajęciach pokazac już ten system razem z panelem logowania, a przerobiłem mój panel według tego schematu co mi podesłałeś i teraz to już wcale nie działa sadsmiley02.gif

Pod napisem loguj są takie komunikaty:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\WebServ\httpd\Gery\index.php:14) in C:\Program Files\WebServ\httpd\Gery\index.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\WebServ\httpd\Gery\index.php:14) in C:\Program Files\WebServ\httpd\Gery\index.php on line 39

Pomożecie coś poprawic??
darko
przenieś

<?php
session_start();

na samą górę jeszcze przed

<HTML>
Czesław
Pierwsze ostrzeżenie zniknęło, teraz jak wpiszę błędny login i hasło albo nic nie wpiszę i wciskam zaloguj to jest ok, ale jak wpiszę prawidłowy to nie wchodzi strona oznaczona u mnie jako "glowna.php" tylko wyskakuje ten drugi komunikat:

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\WebServ\httpd\Gery\index.php:15) in C:\Program Files\WebServ\httpd\Gery\index.php on line 41
darko
To dlatego, że w linii 39 ( header("Location: glowna.php");} ) wysyłasz nagłówek do przekierowania po uprzednim "wyprintowaniu" kodu html. Nagłówek musi iść w pierwszej kolejności (podobnie jak sesja). Spróbuj tak przerobić skrypt, żeby logika sterująca była na samym początku, dopiero na końcu wyświetl kod html.
Czesław
Dzięki bardzo smile.gif

Teraz miałbym jeszcze jedno pytanie odnośnie tych sesji. Zalogowałem się i teraz dajmy na to przykład przechodzę ręcznie w podstronę wynagrodzenie.php, z tego co zrozumiałem czytając o tych sesjach to na tej podstronie też umieszczam session_start() questionmark.gif. Powiedzmy że strona ma taki układ:

<html>
<head>
...
...
...

<?php

zapytania sql...
wywołanie z bazy danych SELECT Pracownik_Nick, Pracownik_Imie .... ble ble ble FROM PRACOWNIK (i teraz chciałbym zrobic tak: )
WHERE Pracownik_Nick = login z zapamiętanej sesji

Co i gdzie musiałbym umieścic odnosząc się do tej sesji?? Bo resztę podstron systemu mam analogicznie do tej tylko inne zapytania więc już bym sobie poradził do końca z tym całym bałaganem...
darko
<?php
session_start();
zapytania sql...
wywołanie z bazy danych SELECT Pracownik_Nick, Pracownik_Imie .... ble ble ble FROM PRACOWNIK
WHERE Pracownik_Nick = $_SESSION['login']


<html>
<head>
...
...
...
Czesław
Dzięki za pomoc!! Wszystko ładnie śmiga smile.gif


Ale jest tam jeden mankament z którym sobie poradziłem po godzinie główkowania. Zapytanie SQL nie chciało przyjąc warunku WHERE Pracownik_Nick= $_SESSION['login'] ponieważ wołał w tym miejscu zmienną tekstową a tego tak nie traktował nawet po wstawieniu ' ' . Dopiero po podstawieniu :

session_start();

$login=$_SESSION['login'];

....
...

WHERE Pracownik_Nick = '$login'

Przepuścił warunek.

Napisałem to z tego względu że może kiedyś komuś się ten skrypt przydac i po co ma się męczyc tak jak ja rolleyes.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.