Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Ustalenie id użytkownika
topgear
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 23.04.2009

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


Witam Napisałem sobie taki prosty skrypt logowania oparty na sesjach
  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. include('laczbaza.php');
  7.  
  8. $imie = $_POST['imie'];
  9. $nazwisko = $_POST['nazwisko'];
  10. $klasa = $_POST['klasa'];
  11. $haslo = $_POST['haslo'];
  12.  
  13.  
  14.  
  15. if($_SESSION["zalogowany"]!=1){
  16. $zaloguj_z1 = "SELECT imie, nazwisko, haslo, klasa klasa FROM uczniowie WHERE (imie = '" . $imie . "' and nazwisko = '" . $nazwisko . "'and klasa = '" . $klasa . "'and haslo = '" . $haslo . "') LIMIT 1;";
  17. $zaloguj_w1 = mysql_query($zaloguj_z1);
  18. if(mysql_num_rows($zaloguj_w1) == 0) {
  19. echo 'Dane niepoprawne';
  20. }else{
  21. $zaloguj_d1 = mysql_fetch_array($zaloguj_w1);
  22. if( ($zaloguj_d1['imie'] == $imie) && ($zaloguj_d1['nazwisko'] = $nazwisko) && ($zaloguj_d1['klasa'] = $klasa)&& ($zaloguj_d1['haslo'] = $haslo)) {
  23. echo 'Zalogowano';
  24. $_SESSION["zalogowany"]=1;
  25. }
  26. }
  27. }
  28.  
  29.  
  30.  
  31. ?>


Następnie mam w pliku kod który dodaje do bazy 1 pkt jeżeli się dobrze rozwiąże zadanie
  1. $dodaj = "UPDATE uczniowie SET punkty = punkty+1 WHERE id_uczen='32'";


Jak widać id_uczen jest ustawione na sztywno.

I mam pytanie jak tym skryptem logowania na podstawie tych 4 danych czyli: imie,nazwisko,klasa,haslo ustalać id_ucznia

Go to the top of the page
+Quote Post
Rysh
post
Post #2





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Musisz sobie ustawić $_SESSION['id'] id zalogowanego, a następnie wstawiać to podczas aktualizacji danych do mysql.

PS. Jeśli to jest Twój skrypt, to lepiej go zabezpiecz winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
DiH
post
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


1. Za trzymanie haseł w bazie w postaci niezaszyfrowanej powinno się wieszać
2. Jeżeli id jest liczbą, to nie traktuj go jako stringa. Powinno być WHERE id=x (bez apostrofów)
3. Po zalogowaniu użytkownika pobierz z bazy jego id do zmiennej, którą potem wykorzystasz w zapytaniu.

I to wszystko.
Edit: drugi ;

Ten post edytował DiH 22.03.2010, 18:16:46
Go to the top of the page
+Quote Post
topgear
post
Post #4





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 23.04.2009

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


Cytat(Rysh @ 22.03.2010, 18:05:32 ) *
Musisz sobie ustawić $_SESSION['id'] id zalogowanego, a następnie wstawiać to podczas aktualizacji danych do mysql.


Nie za bardzo rozumiem mógłbyś to przedstawić na podstawie jakiegoś przykładu rolleyes.gif a co do zabezpieczeń to aktualnie mi są niepotrzebne ponieważ te kody to jest tak jakby wstępne przygotowanie projektu smile.gif


Cytat(DiH @ 22.03.2010, 18:13:43 ) *
3. Po zalogowaniu użytkownika pobierz z bazy jego id do zmiennej, którą potem wykorzystasz w zapytaniu.


O tym sam myślałem tylko nie wiem jak ustalić przy logowaniu które id ma pobierać ( którego użytkownika)

np: jak loguje sie Jan Kowalski to żeby nie pobrało id Janna Kowalskiego

Ten post edytował topgear 22.03.2010, 18:19:44
Go to the top of the page
+Quote Post
DiH
post
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Nie przesadzasz? Czytanie manuala naprawdę nie boli. Każdy użytkownik w bazie powinien mieć w bazie swój id. Jeżeli tak nie jest, to zrób tak, żeby miał. Przy logowaniu pobierasz z bazy jego id i zapisujesz choćby do $_SESSION['uid']. Tą zmienną podstawić właśnie w zapytaniu: "...WHERE id=".$_SESSION['uid'];

Edit: Jak to nie wiesz jak pobrać id? A jak rozpoznajesz użytkownika? Sprawdzasz jego login i hasło zapytaniem mysql. W tym samym zapytaniu pobierz także id użytkownika, który się loguje. Skoro login i hasło wpisane w formularz pasują, to pobiera id z wiersza tego właśnie użytkownika, dla którego spełniony jest warunek poprawności hasła.

Ten post edytował DiH 22.03.2010, 18:24:09
Go to the top of the page
+Quote Post
topgear
post
Post #6





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 23.04.2009

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


Właśnie o to mi chodziło dzięki snitch.gif

Jednak znowu mam problem zrobiłem tak jak poradziłeś i wywala błąd o takiej treści

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/supromyk/ftp/iw/rozdzial_27/dodaj_zak.php on line 4

Kod mam taki

  1. <?php
  2.  
  3. $dodaj = "UPDATE `uzytkownik` SET `punkty` = punkty+1 WHERE nazwa_uz=.$_SESSION['uzyt'].";
  4. $wynik = mysql_query($dodaj);


Sesja jest raczej dobra bo po wstawieniu kodu
  1. f (isset($_SESSION['uzyt'])) {
  2. echo "Zalogowano jako ".$_SESSION['uzyt']."


Wyświetla "zalogowany jako (ta osoba na którą się zalogowałem)."

Ten post edytował topgear 22.03.2010, 21:03:17
Go to the top of the page
+Quote Post
DiH
post
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Czysta niekonsekwencja. Raz używasz ` a raz nie.
  1. $dodaj = "UPDATE uzytkownik SET punkty = punkty+1 WHERE nazwa_uz=".$_SESSION['uzyt'];

Edit: mój błąd - już poprawione

Ten post edytował DiH 22.03.2010, 21:19:33
Go to the top of the page
+Quote Post
topgear
post
Post #8





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 23.04.2009

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


Działa thx

Błędów nie ma ale niestety punktów dalej nie dodaje w sesji odczytuje mi, że jestem zalogowany jako "uzyt1" ale do niego nie dodaje
tak wygląda baza


Wpisałem echo $dodaj i wyświetliło się UPDATE uzytkownik SET punkty = punkty+1 WHERE nazwa_uz=uzyt1 wydaje mi sie, żę wszystko gra

Ten post edytował topgear 22.03.2010, 21:35:55
Go to the top of the page
+Quote Post
DiH
post
Post #9





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


  1. WHERE id = 1
  2. WHERE nazwa='wartosc'

Dla liczb nie potrzeba apostrofów. Dla stringów tak.
Go to the top of the page
+Quote Post
topgear
post
Post #10





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 23.04.2009

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


Jak próbuje dodać do .$_SESSION['uzyt'] apostrofy to wywalają błędy bo chyba właśnie to jest stringiem
Go to the top of the page
+Quote Post
Rysh
post
Post #11





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


co zwraca mysql_error()?


--------------------
Go to the top of the page
+Quote Post
topgear
post
Post #12





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 23.04.2009

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


Cytat(Rysh @ 22.03.2010, 22:49:33 ) *
co zwraca mysql_error()?


Unknown column 'uzyt1 in 'where clause'
Trochę mnie to dziwi bo "uzyt1" nie ma być kolumną tylko ma na podstawie tego wyszukiwać do którego uzytkownika dodać punkty

Ten post edytował topgear 22.03.2010, 23:10:39
Go to the top of the page
+Quote Post
topgear
post
Post #13





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 23.04.2009

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


Tak jest to kolumna nazwa_uz
Go to the top of the page
+Quote Post
Rysh
post
Post #14





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Sprawdziłeś co pisał DiH?


--------------------
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 Aktualny czas: 20.08.2025 - 15:42