Otóż napisałem sobie klasę rejestrującą userów, jak i logującą.
Logowanie działa, ale:
mam formularz logowania i menu w jednym divie. Drugi div to treść. Jeżeli zaloguje się to w divie z treścią napisze mi 'zalogowano usera ...' , natomiast w divie, w którym jest formularz, nic się nie zmienia. Dopiero, kiedy odświeże stronę to mi wyświetli 'Zalogowano jako ...'. To samo jest z wylogowywaniem.
Nie wiem czy napisałem to dostatecznie zrozumiale.
Wszystko mozna zobaczyc
TUTAJ Login : test
Hasło : test11
klasa logowania
<?php
class login {
public function __construct(){
if (!empty($_GET['ac'])){ $this->actions = $_GET['ac'];
}
else{
$this->actions = '';
}
$this->action = array ('loguj' => 'loguj'); if ($this->actions == $this->action['loguj']) $this->loguj();
else $this->content();
}
function content(){
if (isset($_SESSION['username'])){ echo "Zalogowany jako ".$_SESSION['username']."<br />"; echo "<a href='?action=mod&mod=logout'>wyloguj</a>"; }
else{
echo "<form action='?action=mod&mod=login&ac=loguj' method='post'> <fieldset>
<legend>Logowanie</legend>
<label for='pyt1'>login:</label><br />
<input type='text' name='login' id='pyt1' /><br />
<label for='pyt2'>haslo:</label><br />
<input type='password' name='pass' id='pyt2' /><br />
<input type='submit' value='loguj' />
</fieldset>
</form>";
}
}
function loguj(){
if (isset($_POST['login']) AND
isset($_POST['pass'])) { $login = $_POST['login'];
$pass = $_POST['pass'];
}
$pass = sha1($pass);
$query = "SELECT * FROM users where user='$login' and pass='$pass'";
echo '<p>Błąd logowania</p>'; $this->content();
}
$active = $row['active'];
}
if ($active=='1'){
$_SESSION['username'] = $login;
echo "Zalogowano usera $login"; }
else{
echo "Nie aktywowales jeszcze konta"; }
}
else {
echo "Błędny login albo haslo"; }
}
else {
echo 'Nie wypepełniono wszystkich pól<br />'; $this->content();
}
}
}
}
new login;
?>
i klasa ktora jest w tym divie pod menu
<?php
class loginpanel {
public function __construct(){
if (isset($_SESSION['username'])){ $username = $_SESSION['username'];
$query = "SELECT avatar FROM users WHERE user='$username'";
$av = $row[0];
}
echo "<img src='./img/avatars/$av' /><br />"; echo "Zalogowany jako ".$_SESSION['username']."<br />"; echo "<a href='?action=mod&mod=logout'>Wyloguj się</a>"; }
else{
echo "<form action='?action=mod&mod=login&ac=loguj' method='post'> <fieldset>
<legend>Logowanie</legend>
<label for='pyt1'>login:</label><br />
<input type='text' name='login' id='pyt1' /><br />
<label for='pyt2'>haslo:</label><br />
<input type='password' name='pass' id='pyt2' /><br />
<input type='submit' value='loguj' />
</fieldset>
</form>
<a href='?action=mod&mod=new_password'>Zapomniałeś hasło ?</a>
<a href='?action=mod&mod=register'>Zarejestruj się</a>";
}
}
}
?>
Ogólnie klasa do dopracowania.
session_start(); mam w pliku z szablonem.
Jak trzeba to dam ten plik.
Jak sama nazwa działu wskazuje jestem początkujący więc proszę o wyrozumiałość.
edit: Sorry, musialo mi sie odhaczyć przypadkiem. Już jest tag.
edit2: Poradzilem sobie, mozna zamknac.
Ten post edytował daker 16.07.2008, 13:12:53