Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][PDO] Rejestracja
Max Damage
post
Post #1





Grupa: Zarejestrowani
Postów: 246
Pomógł: 19
Dołączył: 14.06.2007

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


Cześć, czytałem trochę dziś o PDO i postanowiłem użyć go w skryptach. Nie jestem jednak pewny czy dobrze wszystko zrozumiałem i napisałem, więc dobrze by było gdyby ktoś to sprawdził i poprawił, bądź pokazał jak napisać to lepiej. Przykładowy kod: rejestracja.
  1. function rejestruj($nick,$haslo,$haslo2,$email){
  2. $lacz=lacz();
  3. if(strlen($nick)<6)
  4. throw new Exception('Za krotki nick.');
  5. $wynik=$lacz->prepare("SELECT nick FROM user WHERE nick=:nick");
  6. $wynik->bindValue(':nick',$nick,PDO::PARAM_STR);
  7. $ilosc=$wynik->execute();
  8. if(count($ilosc) > 0)
  9. throw new Exception('podany nick juz istnieje.');
  10. if(strlen($haslo)<6)
  11. throw new Exception('Za krotkie haslo.');
  12. if($haslo!=$haslo2)
  13. throw new Exception('Hasla nie sa takie same.');
  14. if(!preg_match("/^[a-zA-Z0-9.-]+@[a-zA_Z0-9.-]+[a-zA-Z0-9.-]+$/",$email))
  15. throw new Exception('Adres email jest niepoprawny');
  16. $wynik=$lacz->prepare("SELECT email FROM user WHERE email=:email");
  17. $wynik->bindValue(':email',$email,PDO::PARAM_STR);
  18. $ilosc=$wynik->execute();
  19. if(count($ilosc) > 0)
  20. throw new Exception('podany email juz istnieje.');
  21. $sql="INSERT INTO user (nick,haslo,email) VALUES (:nick,:haslo,:email)";
  22. $wynik=$lacz->prepare($sql);
  23. $wynik->bindValue(':nick',$nick,PDO::PARAM_STR);
  24. $wynik->bindValue(':haslo',$haslo,PDO::PARAM_STR);
  25. $wynik->bindValue(':email',$email,PDO::PARAM_STR);
  26. $wynik->execute();
  27. if($wynik)
  28. echo 'Rejestracja pomyslna.';
  29. }

Z tego co wyczytałem używając bindValue nie muszę już używać na zmiennych innych funkcji typu: stripslashes itp., ponieważ ona sama przed tym zabezpiecza. Może ktoś dokładniej sprecyzować jak to jest?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(Max Damage @ 19.08.2009, 20:59:38 ) *
  1. function logowanie($nick,$haslo)
  2. {
  3. $lacz=lacz();
  4. $sql="SELECT * FROM user WHERE nick=:nick AND haslo=:haslo";
  5. $wynik=$lacz->prepare($sql);
  6. $wynik->bindValue(':nick',$nick,PDO::PARAM_STR);
  7. $wynik->bindValue(':haslo',$haslo,PDO::PARAM_STR);
  8. $ilosc=$wynik->execute();
  9. if(count($ilosc)>0)
  10. return true;
  11. else
  12. return false;
  13. }

w zapytaniu daj jeszcze limit 1 to szybciej zwróci wynik jeśli znajdzie takiego urzytkownika a i tak ma być jeden...
po wykonaniu zapytania [$wynik->execute();] obiekt $wynik ma w odpowiedzi jakiś wynik...
i np.:
$wynik=$wynik->fetch(); jeśli bedziesz miał zalogowanego urzytkownika zwróci Ci tablicę asocjacyjną oraz odpowiednio pola numeryczne kolejno do asocjacyjnej - ja u siebie akurat mam na tablicy asocjacyjnej ale patrząc na Twoje zapytanie bedzie lepiej skożystać z numerycznej i wracając do tego co napisałem wcześniej:
  1. $wynik->execute();
  2. $wynik=$wynik->fetch();
  3. return isset($wynik[0])?true:false;

Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 13:12