Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasa ?
Forum PHP.pl > Forum > Przedszkole
wolferin
witam
mam system logowania oparty na MySQL który na moje potrzeby działa dobrze, ale niechce go przepisywac za każdym razem gdy robię nowy projekt.Chciałbym to upakowac w klase tylko nie bardzo wiem jak, moje OOP jest narazie na poziomie podstawowym.
Chodzi mi o pokazanie przykładu takiej klasy.
dtb
wstaw wszystkie funkcje i zmienne do klasy, dodaj na poczatku public/private/..., utworz deklaracje zmiennych i ewentualnie konstruktor, w ktorym przypiszesz do tych zmiennych wartosci.
wolferin
mniej wiecej wiem jak to zrobić , ale jednak juz tak namieszałem ze nie moge sie z tego wyplątać, tak jak mówiłem moje OOP jest narazie nędzne a klasy które pisze są na poziomie ala ma kota biggrin.gif , a tym bardziej ze mój system logowania jest dość złożony to jeszcze nieporadze sobie z tym
dr_bonzo
Rozpisz sobie (na kartce) jakich metod do obslugi bazy bedziesz potrzebowal - polaczenie, wykonanie zapytania, pobranie ilosci wierszy zwroconych, itd., zapisz ich parametry, zwracane wartosci, wrzuc do klasy i zaimplementuj te metody.
wolferin
po wielu bólach zrobiłem coś takiego i nawet to chodzi, ale strasznie mi sie to niepodoba.
  1. <?php
  2. class system_autoryzacji{
  3. private $login;
  4. private $haslo;
  5. private $link;
  6. private $dbname;
  7. private $query;
  8. private $result;
  9. private $dane;
  10. private $wynik;
  11.  
  12. public function logowanie(){
  13.  
  14. $login = $_POST["login"];
  15. $haslo = $_POST["haslo"];
  16. if ($_GET["login"]=="koniec") { // wylogowanie
  17. } else if ($login<>"" and $haslo<>"") {
  18. $haslo = md5($haslo);
  19. $dbname ="moja_baza";
  20. if ($link = mysql_connect('moj_host','moj_user','moj_pass')){
  21. if (mysql_select_db($dbname) or die (mysql_error())) {
  22. $query = "SELECT * FROM user WHERE login='$login' and haslo='$haslo' and status=5";
  23. $result = mysql_query ($query ,$link) or die (mysql_error());
  24. if (mysql_num_rows($result)==1) {
  25. $dane=mysql_fetch_array($result);
  26. $_SESSION["zalogowany"]="tak";
  27. $_SESSION["login"]=$dane["login"];
  28. $_SESSION["imie"]=$dane["imie"];
  29. $_SESSION["email"]=$dane["email"];
  30. }
  31. } else echo "Nie można połaczyc sie z baza";
  32. }
  33. }
  34. }
  35.  
  36. public function formularz_logowanie (){
  37. if ($_SESSION["zalogowany"]=="tak") {
  38. echo "<p>Zalogowany : <b>".$_SESSION["login"]."</b></p>";
  39. echo "<br><a href="klasa_logowanie.php?login=koniec">wyloguj sie</a>";
  40. echo "<br><a href="zmiany.php">zmien hasło</a>";
  41. echo "<br><a href="index2.php">index2</a>";
  42. } else {
  43. echo <<<KONIEC
  44. <center>
  45. <form action="klasa_logowanie.php" method="post">
  46. <table>
  47. <tr>
  48. <td align="right">login:&nbsp;</td>
  49. <td><input type="text" name="login" /></td>
  50. </tr>
  51. <tr>
  52. <td align="right">hasło:&nbsp;</td>
  53. <td><input type="password" name="haslo" /></td>
  54. </tr>
  55. <tr>
  56. <td colspan="2" align="right">
  57. <input type="submit" value="zaloguj" /></td>
  58. </tr>
  59. </table>
  60. </form>
  61. <a href="rejestracja.php?opcja=przypomnij">PRZYPOMNIJ HASŁO</a></br />
  62. <a href="rejestracja.php">ZAREJESTRUJ SI!</a>
  63. </center>
  64. KONIEC;
  65. }
  66. }
  67. }
  68.  
  69. $logo = new system_autoryzacji();
  70. $logo -> logowanie();
  71. $logo -> formularz_logowanie();
  72. ?>

jakie macie propozycje zeby to poprawić i jak?
Diablos
Ja napisalem takie cos, tez nie wiem czy jest poprawne smile.gif

  1. <?php
  2.  
  3. class User
  4. {
  5. public $uLogin;
  6. public $uPass;
  7.  
  8.  
  9. public function __construct ( $userLogin, $userPass )
  10. {
  11. $this->uLogin = $userLogin;
  12. $this->uPass = md5($userPass);
  13. }
  14.  
  15. public function Login ( )
  16. {
  17. global $db, $tb_users;
  18.  
  19. $qTl = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM ' . $tb_users . ' WHERE login = '' . $this->uLogin . '' AND password = '' . $this->uPass . '' '));
  20.  
  21.  
  22. if ( $qTl[0] !== 0 )
  23. {
  24. $_SESSION['aUser'] = $this->uLogin;
  25. }
  26. }
  27.  
  28. public function Logout ( )
  29. {
  30. unset($_SESSION['aUser']);
  31. }
  32.  
  33.  
  34. }
  35. ?>
wolferin
ma ktos jeszcze jakieś propozycje co do mojego tworu?questionmark.gif

----edit----
Proszę nie nabijać postów.
~mike_mech
bigu
wolferin:
tez sie dopiero ucze ale wydaje mi sie ze wyswietlanie formularza jako jedna z metod klasy to chyba cos nie tak - nie o to chodzi w obiektowce. Moim zdaniem, choc mylic sie moze, wiec moze ktos mnie poprawi?

Pozdro
Aloyzz
Access_user Class
sobstel
Cytat(Diablos @ 2005-12-04 13:04:40)
Ja napisalem takie cos, tez nie wiem czy jest poprawne smile.gif

osobiscie uwazam ze cos jest oprawne jesli dziala (bez bledow skladniowych i logicznych) i jest zgodne z jasno sprecyzowanymi poczatkowymi zalozeniami i oczekiwaniami. tak wiec wedlug tego sam ocen czy jest poprawne... ;-)
Ociu
  1. <?php
  2. final class MemberLog {
  3. private $user;
  4.  
  5. public function __construct( $u ) {
  6. $this->user = $u;
  7. }
  8.  
  9. public function in( $pass ) {
  10. $q = mysql_query("SELECT pass FROM ". TBL_NAME ." WHERE name='".$this->user."'");
  11. return (mysql_fetch_row($q) === $pass) ? true : false;
  12. }
  13. }
  14. ?>


index.php
  1. <?php
  2. $member = new MemberLog($_POST['nick']);
  3. if($member->in($_POST['password'])) setcookie('in', 'in', time()+3600);
  4. ?>


pozdrawiam
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.