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

Forum PHP


 logowanie....
Autor: stan. (---.krakow.cvx.ppp.tpnet.pl)
Data:   03.12.00 14:18

Robie teraz cos w rodzaju Menadzera NEWSow na strone.. i doszedlem do punktu logowania sie do tego "systemu", po tym jak "system" zidentyfikuje uzytkownika jeszcze wiele razy bedzie sie musial odwolywac do jego danych (np. e-mail itp.).
Tak wiec.. jak zrobic by "system" wiedziel przez caly czas z kim ma do czynienie... hmm.. cookies, sesja ?
czy jeszcze cos innego ?

Pozdrawiam wszystkich i z gory dzienkuje za wszyskie podpowiedzi
stan.

 RE: logowanie....
Autor: Hamster (---.gabo.pl)
Data:   03.12.00 17:19

Mysle, ze chyba najlepszym, a raczej optymalnym jest uzycie 'ciasteczek'. Pozwala to na dlugie przechowywanie danych, tworzenie gadzetow jak zapamietaj moj email czy haslo czy nick'a.

Podstawa w takim systemie zawsze jest pozostawienie jakiejs informacji po stronie klienta by mozna go identyfikowac.

Najpewniejszy system to przekazywanie w URL lub przez formularz zmiennych, jednakze kazdy link musialby byc zmieniony a to jest dosc pracachlonne, choc mozna to zautomatyzowac.

To tyle.

Hamster.

 RE: logowanie....
Autor: stan. (---.krakow.cvx.ppp.tpnet.pl)
Data:   04.12.00 18:39

Dzienki :)
Skrocilo to troche moje gdybania i odrazu wziolem sie do pracy..
Zaczynam...

switch($dane_z_formularza) {
case('SPRAWDZAMY'):
if($nick != '' or $haslo != ''){
$zapytanie = "SELECT * FROM profile WHERE nick='$nick'";
$wynik = mysql_query($zapytanie);
$rekord = mysql_fetch_array($wynik);
if($rekord['nick'] == $nick and $rekord['haslo'] == $haslo){
//Wchodzimy do systemu! Najpierw trza Cookies ustawic wiedz idziemy do znajomego kucharza ;)
header( "Location: kucharz.php3?login=$nick&passwd=$haslo");


No i tu pojawia sie problem...
Warning: Cannot add header information - headers already sent by......

Co z tym fantem zrobic !?

stan.

 RE: logowanie....
Autor: marcinB (---.tpi.pl)
Data:   05.12.00 11:12

Jest problem.
Header musi byc wyslany przed wszystkim. Najlepiej zrob kolejny plik php-owy, w ktorym bedziesz ustawial cookies.
Plik ten musisz wywolac z pliku, w ktorym "mieszales" w bazie np. przy pomocy javascript.

ciekawe czy pojdzie ;)

pozdrawiam.

PS: w javie chyba cos takiego "location.change('tarata.php');" ale nie jestem do konca pewien.

 RE: logowanie....
Autor: Piotr (---.gdynia.ppp.tpnet.pl)
Data:   05.12.00 23:42

I wpisz znacznik <? w pierwszej linii i w pierwszym polu - zerknij też kilka postów w stec zdaje się, że "ratujcie koszyk" czy jakoś tak...

 RE: logowanie....
Autor: Poncki (---.polbox.pl)
Data:   06.12.00 14:09

A czemu tak od d*** strony? ;-)

W dokumentacji do PHP4 jest ładny przykład (http://pl.php.net/manual/features.http-auth.php) na przeprowadzenie PEWNEJ autentykacji (niezależnie od włączonych czy nie cookies, javascriptów etc).

A co do komunikatu "Warning: Cannot add header information - headers already sent by......" - Wyglada na to, że próbujesz ustawić cookie już po tym, jak coś zostało wysłane do przeglądarki. Rozpocznij plik .php od razu od "<?php", usuń wszystkie spacje znajdujące się poza zasięgiem <?php ?> a przed wystąpieniem SetCookie. Innymi słowy, SetCookie musi zostać wywołane zanim wyślesz cokolwiek do przeglądarki.

 RE: logowanie.... (odp. Poncki)
Autor: stan. (---.krakow.cvx.ppp.tpnet.pl)
Data:   06.12.00 18:15

Ale w takim razie pozniej (jak klient przejdzie juz na nastepna strone "systemu" niusowego) nie mam mozliwosci zidentyfikowac danego kolesia... Tym samym nie wiem czy ma on wogule prawo tam przebywania.. itd.

No chyba ze jestem w bledzie ;-)
stan. Pozdrowienia

 RE: logowanie.... (odp. Poncki)
Autor: Poncki (---.polbox.pl)
Data:   06.12.00 19:51

Wykład będzie ;-)

Autentykacja (czy jak wolą językowi puryści)
odbywa się w mniej więcej taki sposób:

Przeglądarka wysyła zlecenie pobrania jakiegoś pliku
Serwer odpowiada, że najpierw należy się autoryzować.
Przeglądarka sprawdza, czy zna użytkownika i hasło dla danego realmu (czyli strefy 'chronionej') i jeśli tak, to je wysyła do servera. Jeśli nie zna, wyświetla
użytkownikowi okienko z polami do wprowadzenia tych informacji, po czym przesyła je do servera. Jeśli server odpowie że wszystko się zgadza (para użytkownik hasło jest poprawna) wtedy przeglądarka wrzuca te dane do pamięci podręczniej i używa za każdym razem kiedy server poprosi o autoryzacje w tym realmie.

Stąd wynika wniosek, że jeśli chcesz coś chronić, to musisz zwracać nagłówek WWW-Authenticate za każdym razem, podobnie sprawdzać czy PHP_AUTH_USER i PHP_AUTH_PASS pasują. Oczywiście można to zrobić jedną fukncja i "include'ować" do każdego dokumentu.

Można też pomóc sobie Apachem (hint: plik .htaccess).

HTH, Poncki

 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