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
Max Damage
post
Post #2





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

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


To, że działa nie znaczy że jest dobrze : )
Przede wszystkim nie bardzo wiem jak mam zliczać ilość zwróconych wierszy w zapytaniu. Fakt, że w tamtym kodzie to działało i pokazywało, że np. taki nick jest już zajęty. Ale np. w tym fragmencie kodu już działa źle. Loguje każdego jak leci : )
  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. }
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: 13.10.2025 - 19:29