Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]nie pobiera id uzytkownika
scroll
post 4.02.2014, 12:19:49
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 24.07.2013

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


witam
mam skryp logowania, mozna sie zalogować ale nie jest pobierane id_uzytkownika. nie mam pojęcia gdzie jest bład. z góry dziekuje za informacje

  1. include("check.php"); //dane do połączenia
  2. function filtruj($filtracja){
  3. $filtracja = stripslashes($filtracja); //usuwa slashe
  4. $filtracja = htmlspecialchars($filtracja); // usuwa spacje, tagi html oraz niebezpieczne znaki
  5. $filtracja = mysql_real_escape_string($filtracja); //zamienia nie bezpieczne znaki
  6. return $filtracja;
  7. }
  8. $login = filtruj($_POST['login']);
  9. $pass = md5(filtruj($_POST['pass']));
  10.  
  11. if (isset($_POST['zaloguj'])) //sprawdza czy użytkownik wcisną przycisk zaloguj
  12. if(!empty($_POST['login']) AND !empty($_POST['pass'])) //sprawdza czy użytkownik wypełnił wszystkie pola
  13. if (mysql_num_rows(mysql_query("SELECT id_uzytkownika, login, haslo FROM uzytkownicy WHERE login = '$login' AND haslo = '$pass' ")) > 0 ){ //sprawdza czy użytkownik o podanym loginie i haśle istnieje w bazie
  14. $zapytanie = "SELECT id_uzytkownika FROM uzytkownicy WHERE login = '$login' "; //pobiera dane o użytkowniku
  15. $idzzapytanie = mysql_query($zapytanie);
  16. while($pokaz = mysql_fetch_array($idzzapytanie)){
  17. $id = $pokaz[0];
  18. }
  19.  
  20. $_SESSION['login'] = $login;
  21. $_SESSION['id'] = $id;
  22. $_SESSION['online'] = '1';
  23. echo "Zostałeś zalogowany jako: $login. Możesz teraz przejść do swojego <a href=\"konto.php\">konta</a>";
  24. header("Location: konto.php");
  25. }
  26. else{
  27. echo "<p class=\"errorlog\">Nie ma takiego użytkownika!</a></p>";
  28. }
  29. else{
  30. echo "<p class=\"errorlog\">Wypełnij wszystkie pola!</a></p>";
  31. }
  32. ?>
Go to the top of the page
+Quote Post
Kshyhoo
post 4.02.2014, 12:23:00
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A w bazie masz id_uzytkownika?


--------------------
Go to the top of the page
+Quote Post
scroll
post 4.02.2014, 12:25:56
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 24.07.2013

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


tak, jest.
Go to the top of the page
+Quote Post
nospor
post 4.02.2014, 12:28:43
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pomijajac juz bez sens tego kodu, bo najpierw wykonujesz zapytanie pobierajace id uzytkownika, login i haslo pasujace do podanego loginu i hasla, i jesli cos zwroci to na nowo wykonujesz to samo zapytanie, ale tym razem pobierasz juz tylko id uzytkownika... zero sensu i optymalnosci. Robisz dwa razy niepotrzebnie to samo.

Zas do problemu:
Temat: Jak poprawnie zada pytanie
Masz tam pare cennych wskazowek na szukanie bledow w skypcie. Zastosuj sie, a wszystko bedzie jasne


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
scroll
post 4.02.2014, 13:10:04
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 24.07.2013

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


to może podacie przykład prostego logowania? bo ten nie jest mojego autorstwa
Go to the top of the page
+Quote Post
tomxx
post 4.02.2014, 13:29:04
Post #6





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


  1. <?php
  2. #Poniżej podano przykładowe nazwy użytkownika, najlepiej je zastąpić tablicą z danymi z bazy
  3. $użytkownicy = [
  4. ['uzytkownik', 'bbeee'],
  5. ['hhh', 'ooooab'],
  6. ['cccdd', 'dededeb2'],
  7. ];
  8.  
  9. if(!isset($_SESSION['zalogowany']))
  10. {
  11. ?>
  12. <form action="<?php echo $_SERVER['SCRIPT_NAME'] ?>" method="post">
  13. <p>Nazwa użytkownika: <input name="nazwa"></p>
  14. <p>Hasło: <input type="password" name="hasło"></p>
  15. <p><input type="submit" name="submit" value="Zaloguj się!"></p>
  16. </form>
  17. <?php
  18. if(isset($_POST['submit']))
  19. {
  20. foreach($użytkownicy as $dane)
  21. if( ($dane[0] == $_POST['nazwa']) && ($dane[1] == $_POST['hasło']) )
  22. {
  23. $_SESSION['zalogowany'] = $_POST['nazwa'];
  24. echo '<script>location.href="'.$_SERVER['SCRIPT_NAME'].'"</script>';
  25. }
  26. if(!isset($_SESSION['zalogowany'])) echo "Błędne dane!";
  27. }
  28. }
  29. else
  30. echo "Witaj! Jesteś zalogowany jako {$_SESSION['zalogowany']}";
  31. ?>
Zmienna $_SESSION['zalogowany'] będzie przechowywała aktualną nazwę zalogowanego użytkownika.

Ten post edytował tomxx 4.02.2014, 13:31:01
Go to the top of the page
+Quote Post
scroll
post 4.02.2014, 13:32:36
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 24.07.2013

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


ale mi potrzebne jest id
do tego mojego skryptu jest jeszcze taka klasa

  1. <?php
  2. /**
  3.  * Klasa wykonująca wszystkie podstawowe operacje
  4.  * @author Sobak
  5.  * @package User System
  6.  */
  7.  
  8. class user {
  9.  
  10. public static $user = array();
  11.  
  12. /**
  13.   * Zwraca tablicę ze wszystkimi danymi o użytkowniku.
  14.   * Indeksy tablicy odpowiadają nazwom pól w bazie danych (login, pass etc...)
  15.   * @param string $login
  16.   * @param string $pass
  17.   * @return array
  18.   */
  19. public function getData ($login, $pass) {
  20. if ($login == '') $login = $_SESSION['login'];
  21. if ($pass == '') $pass = $_SESSION['pass'];
  22.  
  23. self::$user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE login='$login' AND haslo='$pass';"));
  24. return self::$user;
  25. }
  26.  
  27.  
  28. /**
  29.   * Zwraca tablicę ze wszystkimi danymi o użytkowniku, tak jak powyższa metoda klasy,
  30.   * ale rozpoznaje użytkownika nie po podaniu loginu i hasła tylko po podaniu ID.
  31.   * Używana np. do wyświetlania strony profilu.
  32.   * @param int $id
  33.   * @return array
  34.   */
  35. public function getDataById ($id) {
  36. $user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE id_uzytkownika='$id';"));
  37. return $user;
  38. }
  39.  
  40. /**
  41.   * Jeśli użytkownik jest zalogowany - zwraca true, w przeciwnym wypadku - false
  42.   * @return bool
  43.   */
  44. public function isLogged () {
  45. if (empty($_SESSION['login']) || empty($_SESSION['pass'])) {
  46. return false;
  47. }
  48.  
  49. else {
  50. return true;
  51. }
  52. }
  53.  
  54. /**
  55.   * "Soli" hasło przed jego zahashowaniem funkcją md5()
  56.   * @param string $pass
  57.   * @return string
  58.   */
  59. public function passSalter ($pass) {
  60. $pass = '$@@#$#@$'.$pass.'q2#$3$%##@';
  61. return md5($pass);
  62. }
  63.  
  64. }
Go to the top of the page
+Quote Post
nospor
post 4.02.2014, 13:34:41
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@tomxx twoj skrypt jest jeszcze gorszy od tego co ma scroll..... Wyobraz sobie ze w bazie masz 1000000 uzytkownikow. Twoje logowanie bedzie trwac i trwac.... o ile w ogole skrypt sie nie wylozy wpierw :/ Tak, wiem, 1000000 malo prawdopodobne. Chce ci tylko pokazac kiepskosc tego kodu.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tomxx
post 4.02.2014, 13:45:15
Post #9





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


Cytat(nospor @ 4.02.2014, 13:34:41 ) *
@tomxx twoj skrypt jest jeszcze gorszy od tego co ma scroll..... Wyobraz sobie ze w bazie masz 1000000 uzytkownikow. Twoje logowanie bedzie trwac i trwac.... o ile w ogole skrypt sie nie wylozy wpierw :/ Tak, wiem, 1000000 malo prawdopodobne. Chce ci tylko pokazac kiepskosc tego kodu.
To sobie zmieni na SELECT * FROM ... WHERE. Napisałem tylko zarys skryptu, bo przecież to nie forum gotowe rozwiązania. wink.gif
Go to the top of the page
+Quote Post
nospor
post 4.02.2014, 13:49:04
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@tomxx poprostu odnosze sie do tego:
  1. #Poniżej podano przykładowe nazwy użytkownika, najlepiej je zastąpić tablicą z danymi z bazy
  2.  
  3. $użytkownicy = [
  4.  
  5. ['uzytkownik', 'bbeee'],
  6.  
  7. ['hhh', 'ooooab'],
  8.  
  9. ['cccdd', 'dededeb2'],
  10.  
  11. ];

Gdzie sugerujesz, by tablice w php budowac wszystkimi danymi z bazy. Ciut nieoptymalne wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tomxx
post 4.02.2014, 13:59:39
Post #11





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


Ok, z tą tablicą to trochę nietrafiony pomysł, więc zamiast tablicy niech będzie
  1. SELECT `haslo` FROM `tablica` WHERE `nazwa` = '{$_POST['nazwa']}'
i później sprawdza czy hasło wybrane z bazy jest identyczne z tym w formularzu.
Cytat
ale mi potrzebne jest id
A do czego Ci ten id?
Go to the top of the page
+Quote Post
nospor
post 4.02.2014, 14:03:33
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
A do czego Ci ten id?
Id uzytkownika w sesji to bardzo wazna informacja, wiec nie rozumiem Twojego zdziwienia.
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
scroll
post 4.02.2014, 14:08:52
Post #13





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 24.07.2013

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


do tej pory mialem na sztywno po wyszukiwaniu loginu. teraz chche po id. ale kurde nie moge sobie sam poradzic z tym
Go to the top of the page
+Quote Post
tomxx
post 4.02.2014, 14:09:31
Post #14





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


Cytat
to może podacie przykład prostego logowania? bo ten nie jest mojego autorstwa
W takim razie zdecyduj, czy chcesz naprawić tamten skrypt, czy chcesz napisać własny od podstaw (a raczej czekasz na gotowca). Wykonaj zapytanie z "nie Twojego" skryptu np. w phpMyAdmin, może dowiesz się do jest nie tak.
Go to the top of the page
+Quote Post
scroll
post 4.02.2014, 14:12:21
Post #15





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 24.07.2013

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


w php my admin działają zapytania wyszukując po id
Go to the top of the page
+Quote Post
tomxx
post 4.02.2014, 14:45:19
Post #16





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


Jeżeli w PMA działa, to znaczy, że coś źle jest w skrypcie. Zrób print_r zmiennych $id czy $pokaz i sprawdź, co te zmienne zawierają.
Go to the top of the page
+Quote Post
markuz
post 4.02.2014, 14:48:39
Post #17





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


zamiast print_r polecam var_dump smile.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post 4.02.2014, 14:55:15
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jeżeli w PMA działa, to znaczy, że coś źle jest w skrypcie. Zrób print_r zmiennych $id czy $pokaz i sprawdź, co te zmienne zawierają.
Pisalem o tym w pierwszym poscie, a nawet podalem wiecej rzeczy do zrobienia, ale zostalem olany... Moze ty bedziesz mial na niego wiekszy wplyw wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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.07.2025 - 23:34