WebDeveloper
 główna | forum manual | skrypty |  artykuły |  projekty | porady |  zasoby |  linki 

Forum PHP


 co robie zle z ta autoryzacja....
Autor: BiaLy (---.opole.cvx.ppp.tpnet.pl)
Data:   26.10.00 23:37

Najpier jest loguj.php... tam jest formularz z polem user i pass .... potem dane wysylane sa do loguj2.php, ktory wyglada tak....
<?php
$url = 'localhost';
$login = '';
$pass = '';
mysql_connect($url,$login,$pass);
mysql_select_db('usernews');
$zapytanie = "SELECT * FROM users";
$wynik = mysql_query($zapytanie);
while ($r = mysql_fetch_row($wynik)) {
$user = $r[0];
$pass = $r[1];
if($user_name==$user && $user_pass==$pass) {
$PHP_AUTH_USER=$user_name;
$PHP_AUTH_PW=$user_pass; }
header("location: admin.php");
}
?>

a w admin.php daje...
if (!$PHP_AUTH_USER) {.....}
i zawsze jest pusta ta zmienna
albo daje
echo $PHP_AUTH_USER i nic!!!

Czemu??
Co robie zle?
Moze zle ten caly system se wyobrazam??

BiaLy

 RE: co robie zle z ta autoryzacja....
Autor: pl (---.Szczecinek.Net.PL)
Data:   28.10.00 11:00

Czesc

A jaka jest struktura tabeli users ?
Moim zdaniem troche dziwne rozwiazanie ale czy ja sie znam ?
W miejscu w ktorym wyciagasz zapytaniem dane z tabeli users podstawiasz to pod $r i odwolujesz sie do pol poprzez index 0 i 1.
Mysle ze lepiej bedzie odwolywac sie poprzez nazwy $r["tu_nazwa_pola"] czyli jezeli masz w tabeli users pole urzytkownik to dochodzisz do niego $r["urzytkownik"] nie musisz myslec ktory numer ma to pole, tak chyba latwiej nie sadzisz ?
nie jestem pewien lini
if($user_name==$user && $user_pass==$pass) ale operator == to jest chyba porownanie wiec wychodzi ze porownujesz $user_name z wartoscia pola $user. To pierwsze jest puste albo ma przypadkowa wartosc to drugie pobrales sobie z bazy wiec chyba ten if cos nie tak jak chcesz dziala. Dlatego $PHP_AUTH_USER jest pusta (chyba ze sie myle). Kilka tygodni temu sam klepalem tu sposob autoryzacji i dostalem jako takie odpowidzi ale nie poskladalem tego jeszcze w jedna calosc nadajaca sie na gotowe rozwiazanie. Mysle ze prosciej bedzie zrobic tak:

<?php
if(!isset($php_auth_user)) {
header("WWW-Authenticate: Basic realm=\"realm\"");
header("http/1.0 401 unauthorized");
exit; }
else {
}
?>

Ta czesc kodu wymusza okno logowania
wtedy pod zmiennymi $php_auth_user i $PHP_AUTH_PW masz login i haselko zostaje tylko pobrac zapytaniem dane z bazy zeby sprawdzic czy taki user jest i czy ma poprawne haslo.

Duzo jest opisane pod adresem http://webdev.zone.pl/forum/read.php?f=1&i=458&t=458 tam Tomek sporo mi pomogl w rozwiazaniu.

Powodzenia w pracy Pawel.

 RE: co robie zle z ta autoryzacja....
Autor: BiaLy (---.opole.cvx.ppp.tpnet.pl)
Data:   29.10.00 20:13

dzieki.... teraz dopiero zrozumialem jak to wszystko dziala :-)

BiaLy

 RE: co robie zle z ta autoryzacja....
Autor: pl (---.Szczecinek.Net.PL)
Data:   30.10.00 10:16

Milo ze moglem pomoc

 RE: co robie zle z ta autoryzacja....
Autor: Grzesio (---.tigana.pl)
Data:   02.11.00 11:49

Najlepiej po prostu wziac i zamiast uzywac basic authorization wysylac cookies po zalogowaniu i potem te cookies sprawdzac.
np: (cookie o nazwie admin_login):


<? if($admin_login=="")
header("location: register.php?return=index.php\n\n");

?>

Jesli do tego dodamy obsluge sesji, to dostac mozemy bardzo eleganckie jesli chodzi o jakosc kodu rozwiazanie. W ten sposob jest to zrobione na mojej 1-szej powaznej witrynie -www.alloo.pl

 Odpowiedz na tę wiadomość
 Twoje Imię:
 Twój Email:
 Temat:
Odpowiedzi na tę wiadomość prześlij na powyższy adres email.
  




Manual | Skrypty | Artykuły | Projekty
Porady | Zasoby | Linki
Główna | Forum