Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z logowaniem do systemu
Czesław
post 23.11.2009, 22:06:48
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 12.11.2009

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


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!!
Go to the top of the page
+Quote Post
Lejto
post 23.11.2009, 22:19:35
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


oprzyj się o sesje i zapytania do bazy, poczytaj o tym
np where user = $_SESSION['login'];


--------------------
Go to the top of the page
+Quote Post
Czesław
post 24.11.2009, 22:25:49
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 12.11.2009

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


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. ?>
Go to the top of the page
+Quote Post
Lejto
post 24.11.2009, 22:35:42
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


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


--------------------
Go to the top of the page
+Quote Post
Czesław
post 25.11.2009, 22:06:16
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 12.11.2009

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


  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??
Go to the top of the page
+Quote Post
darko
post 25.11.2009, 22:10:30
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


przenieś

<?php
session_start();

na samą górę jeszcze przed

<HTML>


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Czesław
post 25.11.2009, 22:41:44
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 12.11.2009

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


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
Go to the top of the page
+Quote Post
darko
post 25.11.2009, 22:58:51
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


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.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Czesław
post 25.11.2009, 23:36:25
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 12.11.2009

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


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...
Go to the top of the page
+Quote Post
darko
post 26.11.2009, 00:13:57
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


<?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>
...
...
...

Ten post edytował darko 26.11.2009, 00:28:41


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Czesław
post 26.11.2009, 22:50:46
Post #11





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 12.11.2009

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


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

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 08:00