Cytat
Na wstepie musze powiedziec ze drugi link ktory podales to nie jest niestety " klasa do rejestracji " tylko implementacja scrollowanej textArea w Swingu

. Ale to szczegol .
Dodalem EDIT do pi
Cytat
Klasa logowania powinna realizowac mechanizm autentyfikacji usera ale niekoniecznie musi posiadac pola takie jak nick czy password zwiazane bezposrednio z userem.
Generalnie jej zadaniem jest proba zalogowania i stwierdzenie czy logowanie sie powiodlo czy nie.
Czy moglbys rozwinac twoja odpowiedz bo nie bardzo rozumiem.
Cytat
Do implementacji danych usera uzylbym jakiegos modelu dziedziny z polami zwiazanymi typowo z userem a samego sprawdzenie przy probie logowania
dokonalbym raczej jakos
Tego tez nie bardzo rozumiem.
Cytat
propos przekazywania zmiennych do funkcji/constuctora vs ustawianiu pol w instancji to uwazam ze dobrze jest dac mozliwosc wyboru uzywajacemu twoja klase. Czyli generalnie fajnie jest jezeli klasa posiada obie mozliwosci.
To kumam chodz ci np o taka implementacje klasy Login i jej funkcji AuthLogin() i robienie nowej instancji:
<?php
include_once('mysqlDriver.php');
interface TAuth {
public function login($login, $password);
}
//tu taka sama implementacja klas MySqlAuth i FileAuth
class Login {
// zostawiam pola co byly wczesniej i dodaje 2 pola publiczne:
public $name;
public $pwd;
private $nick;
private $auth;
public function __construct($auth) {
$this -> auth = $auth;
}
//metody statyczne LoginAuth i LogOut zostaja takie same.
public function AuthLogin() {
$this -> name = '';
$this -> pwd = '';
$usr = $_POST['login'];
$haslo = $_POST['pass']
if($this -> name == '' && $this -> pwd == '') $user = $this -> auth -> login($usr, $haslo);
else if($this -> != '' && $this -> pwd != '') $user = $this -> auth -> login($this -> name, $this -> pwd);
if($user) {
$this -> nick = $user['login'];
$_SESSION['login'] = true;
$_SESSION['name'] = $this -> nick;
}
else return '<div style="margin:auto;padding:5px;width:25%;border:solid 1px #FF0000;background-color:#FFFFFF;color:#FF0000;text-align:center;">Podano zle dane.</div>';
}
public function __destruct() {
}
}
//Instancja klasy Login wygladala by tak jesli nie ustawiam pola name i pola pwd:
include('form.php');
include('classAuth.php');
if(isset($_POST['login']) && isset($_POST['pass'])) {
if(TYPE == 'SQL') $user = new Login(new MySqlAuth(new MySqlDriver('85.17.1.175', 'marcios', 'marciniak15', 'marcios')));
else $user = new Login(new FileAuth('users.txt'));
echo($user -> AuthLogin());
}
//Z ustawieniem pola name i pola pwd:
include('form.php');
include('classAuth.php');
if(isset($_POST['login']) && isset($_POST['pass'])) {
if(TYPE == 'SQL') $user = new Login(new MySqlAuth(new MySqlDriver('85.17.1.175', 'marcios', 'marciniak15', 'marcios')));
else $user = new Login(new FileAuth('users.txt'));
$user -> name = $_POST['login'];
$user -> pwd = $_POST['pass'];
echo($user -> AuthLogin());
}
?>
Tylko nie wiem czy to zadziala bo nie sprawdzalem jak sprawdze to dopiero wieczorem bo glownie chodzi o to czy te warubki zadzialaja:
<?php
if($this -> name == '' && $this -> pwd == '') $user = $this -> auth -> login($usr, $haslo);
else if($this -> != '' && $this -> pwd != '') $user = $this -> auth -> login($this -> name, $this -> pwd);
?>
Poniewaz nie jestem znawca to jesli nie ustawie pol namei pwd czyli 1 przyklad tworzenia instacnji to powinno wywolac sie to:
Kod
$user = $this -> auth -> login($usr, $haslo);
Jesli ustawie:
Kod
$user = $this -> auth -> login($this -> name, $this -> pwd);
Tylko nie wiem czy jak nie ustawie pol name i pwd to beda one empty czyli == '' lub beda null i nie wiem czy dobry jest warunek i czy na tej zasadzie ma to dzialac lub macie jakies inne sposoby na to bo w teorii powinno to dzialac.