wolferin
4.12.2005, 10:33:42
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.
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
4.12.2005, 11:29:25
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

, a tym bardziej ze mój system logowania jest dość złożony to jeszcze nieporadze sobie z tym
dr_bonzo
4.12.2005, 11:31:58
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
4.12.2005, 11:55:53
po wielu bólach zrobiłem coś takiego i nawet to chodzi, ale strasznie mi sie to niepodoba.
<?php
class system_autoryzacji{
private $login;
private $haslo;
private $link;
private $dbname;
private $query;
private $result;
private $dane;
private $wynik;
public function logowanie(){
$login = $_POST["login"];
$haslo = $_POST["haslo"];
if ($_GET["login"]=="koniec") { // wylogowanie
} else if ($login<>"" and $haslo<>"") {
$dbname ="moja_baza";
$query = "SELECT * FROM user WHERE login='$login' and haslo='$haslo' and status=5";
$_SESSION["zalogowany"]="tak";
$_SESSION["login"]=$dane["login"];
$_SESSION["imie"]=$dane["imie"];
$_SESSION["email"]=$dane["email"];
}
} else echo "Nie można połaczyc sie z baza"; }
}
}
public function formularz_logowanie (){
if ($_SESSION["zalogowany"]=="tak") {
echo "<p>Zalogowany : <b>".$_SESSION["login"]."</b></p>"; echo "<br><a href="klasa_logowanie
.php?login
=koniec
">wyloguj sie</a>"; echo "<br><a href="zmiany
.php
">zmien hasło</a>"; echo "<br><a href="index2
.php
">index2</a>"; } else {
<center>
<form action="klasa_logowanie.php" method="post">
<table>
<tr>
<td align="right">login: </td>
<td><input type="text" name="login" /></td>
</tr>
<tr>
<td align="right">hasło: </td>
<td><input type="password" name="haslo" /></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" value="zaloguj" /></td>
</tr>
</table>
</form>
<a href="rejestracja.php?opcja=przypomnij">PRZYPOMNIJ HASŁO</a></br />
<a href="rejestracja.php">ZAREJESTRUJ SI!</a>
</center>
KONIEC;
}
}
}
$logo = new system_autoryzacji();
$logo -> logowanie();
$logo -> formularz_logowanie();
?>
jakie macie propozycje zeby to poprawić i jak?
Diablos
4.12.2005, 13:04:40
Ja napisalem takie cos, tez nie wiem czy jest poprawne

<?php
class User
{
public $uLogin;
public $uPass;
public function __construct ( $userLogin, $userPass )
{
$this->uLogin = $userLogin;
$this->uPass = md5($userPass); }
public function Login ( )
{
$qTl = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM ' . $tb_users . ' WHERE login = '' . $this->uLogin . '' AND password = '' . $this->uPass . '' '));
if ( $qTl[0] !== 0 )
{
$_SESSION['aUser'] = $this->uLogin;
}
}
public function Logout ( )
{
unset($_SESSION['aUser']); }
}
?>
wolferin
4.12.2005, 13:18:47
ma ktos jeszcze jakieś propozycje co do mojego tworu?
----edit----
Proszę nie nabijać postów.
~mike_mech
bigu
15.12.2005, 00:29:26
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
15.12.2005, 21:57:24
sobstel
16.12.2005, 15:48:29
Cytat(Diablos @ 2005-12-04 13:04:40)
Ja napisalem takie cos, tez nie wiem czy jest poprawne

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
16.12.2005, 16:40:21
<?php
final class MemberLog {
private $user;
public function __construct( $u ) {
$this->user = $u;
}
public function in( $pass ) {
$q = mysql_query("SELECT pass FROM ". TBL_NAME
." WHERE name='".$this->user."'"); }
}
?>
index.php
<?php
$member = new MemberLog($_POST['nick']);
if($member->in($_POST['password'])) setcookie('in', 'in', time()+3600
); ?>
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.