Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] pobranie ID
Forum PHP.pl > Forum > Przedszkole
predator
Jak zrobić by pobierało id usera jeśli login i hasło wprowadzone w formularzu zgadza sie z tymi w bazie?

Mam taki kod:
  1. <?php
  2. if(mysql_num_rows(mysql_query("select * from users where user_login = '".mysql_real_escape_string($login)."' AND user_haslo = '".md5($haslo)."'")))
  3. {
  4. echo "Zalogowano poprawnie.";
  5. $_SESSION["zalogowany"]=1;
  6. $_SESSION['nick'] = $login;
  7. }
  8. ?>

Tutaj coś trzeba zmienić czy później coś dopisać?
Piniek
  1. <?php
  2. $result = mysql_query("SELECT * FROM users WHERE login='$login' AND haslo='$haslo'");
  3. $row = mysql_fetch_array($result);
  4. if($row){
  5. $_SESSION['login'] = $row['login'];
  6. $_SESSION['id'] = $row['id'];
  7. }
  8. else { 
  9. echo " nie ma takiego usera";
  10. }
  11. ?>

pozamieniaj na swoje dane i powinno działać.

Pozdrawiam
webdice
Poczytaj sobie jakie przyjmuje parametry i co robi funkcja mysql_num_rows" title="Zobacz w manualu PHP" target="_manual. Zrób sobie zapytanie, następnie za pomocą funkcji mysql_fetch_assoc" title="Zobacz w manualu PHP" target="_manual wyświetl rekord i będziesz miał ID.
predator
Robie tak i nie działa:
  1. <?php
  2. if($_GET["wyloguj"]=="tak"){
  3. $_SESSION["zalogowany"]=0;
  4.  }
  5. if($_SESSION["zalogowany"]!=1)
  6. {
  7. if(!empty($login) && !empty($haslo))
  8. {
  9. if(preg_match('#^[A-Za-z0-9_]+$#', $login))
  10. {
  11. if(preg_match('#^[A-Za-z0-9_]+$#', $haslo))
  12. {
  13.  
  14. $result = mysql_query("SELECT * FROM users WHERE user_login='".mysql_real_escape_string($login)."' AND user_haslo='".md5($haslo)."'");
  15. $row = mysql_fetch_array($result);
  16. if($row){
  17. $_SESSION['nick'] = $row['login'];
  18. $_SESSION['id'] = $row['id'];
  19. echo ($_SESSION['id']);
  20. }
  21. else { 
  22. echo " nie ma takiego usera";
  23. }
  24.  
  25.  
  26. } else echo ShowLogin("nie dozwolone znaki");
  27. } else echo ShowLogin("nie dozwolone znaki");
  28. } else echo ShowLogin("wprowadz login i haslo");
  29. }
  30. else{
  31. $login = $_SESSION['nick'];
  32. echo "Zalogowany jako: $login
  33. <br><a href='index.php?wyloguj=tak'>wyloguj się</a>";
  34. }
  35. ?>
Piniek
Było by łatwiej gdybyś powiedział co nie dziala questionmark.gif wywala jakiś bład ? jesli tak to jaki.

Pozdrawiam
predator
Nic sie nie dzieje, jakby żadnej sesji nie tworzyło:
http://www.3xori.yoyo.pl/pdf1b.php

wpisałem to
Kod
echo ($_SESSION['id']);

by zobaczyć czy pobierze id i nic sie nie pojawia

PS
login 777, haslo 777 i nic sie niedzieje po wpisaniu a powinno pojawić sie id
MMPrime
Pamiętaj iż niektóre serwery wymagają stworzenia folderu tmp i nadanie ma uprawnień zapisu, dodatkowo warto na samym początku umieścić session_start();

Nigdzie nie ustawiasz też $_SESSION[ 'zalogowany' ] na 1 a używasz tego w warunku.
predator
Wszystko działa z logowaniem itd ale teraz jak próbuje wyciągnąc id to nie działa.
Jest session_start(); , wszystko jest, podam cały kod:

  1. <?
  2. $login = $_POST["login"];
  3. $haslo = $_POST["haslo"];
  4.  
  5. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  6.  
  7. // laczenie z baza danych
  8.  
  9. function ShowLogin($komunikat="")
  10. {
  11. echo "<form action='pdf1b.php' method=post>
  12. <table bolder='0px' border-collapse: collapse>
  13. <tr><td colspan='3' align='center' height='25px'>$komunikat
  14. // tu dalsza czesc formularza
  15. }
  16. ?>
  17. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
  18. <html><head><title>logowanie</title>
  19. <link rel="Stylesheet" type="text/css" href="style.css" /></head>
  20. <body>
  21. <?php
  22. if($_GET["wyloguj"]=="tak"){
  23. $_SESSION["zalogowany"]=0;
  24.  }
  25. if($_SESSION["zalogowany"]!=1)
  26. {
  27. if(!empty($login) && !empty($haslo))
  28. {
  29. if(preg_match('#^[A-Za-z0-9_]+$#', $login))
  30. {
  31. if(preg_match('#^[A-Za-z0-9_]+$#', $haslo))
  32. {
  33.  
  34. $result = mysql_query("SELECT * FROM users WHERE user_login='".mysql_real_escape_string($login)."' AND user_haslo='".md5($haslo)."'");
  35. $row = mysql_fetch_array($result);
  36. if($row){
  37. $_SESSION['nick'] = $row['login'];
  38. $_SESSION['id'] = $row['id'];
  39. echo ($_SESSION['id']);
  40. }
  41. else { 
  42. echo " nie ma takiego usera";
  43. }
  44.  
  45.  
  46. } else echo ShowLogin("nie dozwolone znaki");
  47. } else echo ShowLogin("nie dozwolone znaki");
  48. } else echo ShowLogin("wprowadz login i haslo");
  49. }
  50. else{
  51. $login = $_SESSION['nick'];
  52. echo "Zalogowany jako: $login
  53. <br><a href='index.php?wyloguj=tak'>wyloguj się</a>";
  54. }
  55. ?>
  56. </body></html>


po zalogowaniu (login 777, haslo 777) pusto jest a powinien byc wypisany id i jak przejde jeszcze raz pod tem sam adres to jest znów formularz tak jakbym sie nie zalogował

P.S. W bazie danych id są w kolumnie user_id, może trzeba gdzies wywolac user_id...
MMPrime
Kod
$_SESSION['nick'] = $row['login'];
$_SESSION['id'] = $row['id'];

Skoro nazwy kolumn zaczynają się od user_ to i kluczę w tablicach zaczynają się od user_.
predator
Poprawiłem i pobiera id smile.gif
Ale troche dziwne dlaczego np login trzeba selectem sprawdzic a id sie samo sprawdza...

No to ładnie po zalogowaniu jako 777 i haśle 777 wypisuje że id to 51, odświezę strone to jeszcze jest tak jak było ale przejde ponownie pod ten sam adres to widze znów formularz. Czyżby sesja znikała?
MMPrime
Sesje musisz przedłużać, inaczej po każdym F5 będzie wygasła.
Skoro masz już id użytkownika to pobieraj informację o nim za każdym razem i zapisuj je do sesji.
predator
Już działa jak powinno. Jak bede mial jakies pytania co do tego to bede pisal.

Ale troche nie rozumiem tego kodu zaproponowanego przez Piniek. Ta funkcja $row jest odpowiedzialna ze wyszukanie id? Dziwne to troche.
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.