ďťż

[php] Logowanie na sesjach Na thc.net.pl dziala a na 60free juz nie

       

Podstrony


telcocafe

Witam.
Napisalem sobie prosciutki system logowania oparty na sesjach. Problem polega na tym ze na komercyjnym serwerze (thc.net.pl) dziala jak malina. Ale na darmowym http://60free.ovh.org/pl/index.html juz nie.
Kod wyglada tak:

1.Plik logowanie.php
<? if ( isset( $_POST['login'] ) && isset( $_POST['pass'] ) ){ if ($_POST['login'] == "test" && $_POST['pass'] == "test"){ $tmp = $_POST['login']; session_start(); session_register("tmp"); header("Location: log2.php?" . SID); exit(); } include 'include/info.php'; echo "$login_screen"; } else{ include 'include/info.php'; echo "$login_screen"; } ?>

2. Plik log2.php - do niego jest przekierowany user jesli podal poprawne dane.

<?php session_start(); if (!isset($_SESSION["tmp"])){ echo "nie jestes zalogowany"; exit(); } ?> <HTML> <HEAD> <TITLE>Tajne/poufne</TITLE> </HEAD> <BODY> <?php echo "Witaj " . $_SESSION["tmp"]; ?> </BODY> </HTML>

3. Plik include/info.php
<? // //Zmienna $login_screen przechowuje kod ekranu logowania // $login_screen=" <center><br><br> <img src=\"logowanie_naglowek.gif\" border=0><br><br> <table border=0 width=\"500\" cellspacing=0 > <tr> <td colspan=3 bgcolor=Black height=\"5\"></td></tr> <tr> <td width=\"2\" bgcolor=Black></td> <td valign=\"middle\"> <br> <center> <img src=\"logowanie.gif\" alt=\"(2kB)\" align=\"left\" border=0 height=49 width=40> Aby sie zalogować podaj swoj login i haslo. Jesli ich nie posiadasz skontaktuj sie z administratorem <FORM method=\"POST\" action=\"logowanie.php?\"><br /><br /> Login: <input type=\"text\" name=\"login\"><BR><br /><br /> Hasło: <input type=\"password\" name=\"pass\"><BR><br /><br /> <INPUT type=\"submit\" value=\"Zaloguj się\"><br /><br /> </FORM><br /> <br> </center> </td> <td width=\"2\" bgcolor=Black></td></tr> <tr> <td colspan=3 bgcolor=Black height=\"5\"></td></tr> </table></center>"; $blad="<center><br><br> <img src=\"error.gif\" border=0 height=50 width=429><br><br> <table border=0 width=\"500\" cellspacing=0 > <tr> <td colspan=3 bgcolor=Black height=\"5\"></td></tr> <tr> <td width=\"2\" bgcolor=Black></td> <td valign=\"middle\"> <br> <center> <img src=\"stop.gif\" alt=\"(2kB)\" align=\"absmiddle\" border=0 height=32 width=32> Uwaga, probowałes uzyskac nieautoryzowany dostep do zawartosci strony. Jesli chcesz sis zalogowac <a href=\"logowanie.php\">klikni tutaj</a> </center> <br> </td> <td width=\"2\" bgcolor=Black></td></tr> <tr> <td colspan=3 bgcolor=Black height=\"5\"></td></tr> </table></center>"; ?>
Sprawa wyglada tak ze jesli user poda bledne dane to plik login2.php wcale nie jest ladowny a sesja nie jest ustwiana. Jak juz wspomnialem na thc.net.pl dziala to bez problemu, ale na 60free.ovh.org po wpisaniu poprawnych danych nastepuje przekierowanie do log2.php ale plik ten wyswietla "nie jestes zalogowany" co oznacza ze wedlug niego sesja nie zostala ustawiona. Czy moze byc to wina serwera (nie przekazuje danych sesji?) ?



zamiast:
session_register("tmp");

daj:
$_SESSION['tmp']=$tmp;
Użytkownik Kodie edytował ten post 07 wrzesień 2005, 16:15
Po tej zmianie przekierowanie na log2.php dziala (na pasku pojawia sie identyfikator sesji: log2.php?PHPSESSID=fkr04ip6kfftd1feb6ko61jfq1) i nadal wsywiela info "nie jestes zalogowny".

//edit na friko.pl dziala bez zarzutu wiec to chyba cos z 60free.ovh.org musi byc nie tak, ciekawe tylko co
Użytkownik Poszukiwacz edytował ten post 07 wrzesień 2005, 18:50
Możesz inaczej rozwiązac problem sesji jesli ci tak zalezy na 60 costam
przy logowaniu zapisuj gdzies jakis klucz ktory wygeneruje ci php
ustaw zmienna timeout i jesli user nie wykona zadnej opercaji to go wywali i bedzie musial sie ponownie zalogowac
troche pisania z tym jest ale ja stosuje tylko to - jako ze nigdy nie palalem uczuciem specjalnym do obslugi sesji w php



Ja bez sesji zyc nie potrafie B) A tak serio to nie zalezy mi na tym 60free.ovh.org, poprostu bylem ciekaw czemu tam nie chce dzialc cos co na innych serwerach pogina az milo. No ale trudno widac tak to juz jest z tymi serwerami a free (nie placisz to i wymagac nie mozesz).


Witam.
Napisalem sobie prosciutki system logowania oparty na sesjach. Problem polega na tym ze na komercyjnym serwerze (thc.net.pl) dziala jak malina. Ale na darmowym http://60free.ovh.org/pl/index.html juz nie.
Kod wyglada tak:

1.Plik logowanie.php
<? session_start(); if ( isset( $_POST['login'] ) && isset( $_POST['pass'] ) ){ if ($_POST['login']  == "test" && $_POST['pass'] == "test"){ $tmp = $_POST['login']; session_register("tmp"); header("Location: log2.php?" . SID); exit(); } include 'include/info.php'; echo "$login_screen"; } else{ include 'include/info.php'; echo "$login_screen"; } ?>


Spróbuj dać sesion_start(); na sam początek !! skryptu. Tak jak ja to zrobiłem. :)
Użytkownik ArteK edytował ten post 09 wrzesień 2005, 09:00

Spróbuj dać sesion_start(); na sam początek !! skryptu. Tak jak ja to zrobiłem. :)
Niestety bez zmian. Nadal nie loguj poprawnie. Coz chyba musze sie z tym pogodzic ze na darmowych serwerach nie zawsze wszystko dziala tak jak powinno.

Mi nigdy nie udawalo się stosowanie tej samej sesji na kilku plikach :)

Radzę Ci napisać własny mechanizm obsługi sesji, tzn. coś podobnego jak na phpbb by przemo! Ja zrobiłem coś takiego jakiś czas temu, ale ze względu na brak czasu projekt nie jest do końca skończony, ale opisze co zrobiłem:

Była sobie tabela session i zmienna $session_end_time która wynosiła chyba 60*60*2, czyli inaczej 2 godziny w sekundach i:

Na samym początku skypt sprawdzał czy w tabeli session istnieje sesja, która została zarejestrowana więcej niż $session_end_time temu (2 godziny temu), jeżeli taka sesja istniała to zostawała usunięta z bazy danych

Potem skrypt sprawdza indentyfikator sesji jeżeli został podany. Jeżeli się zgadzał to podtrzymywał zalogowanie.

Podczas logowania po weryfikacji wprowadzonych danych dana sesja zostawała zapisana w bazie danych i potem w zależności od okoliczności pętla zataczała się (skrypt znowu kasował sesje, potem sprawdzał etc.)

:) :) :)


Mi nigdy nie udawalo się stosowanie tej samej sesji na kilku plikach :)
A na tym wlasnie polega idea sesji (raz zarejestrowana zmienna sesji mozna stosowac do kilku plikow). Twoj pomysl tez jest ciekawy ale niestety dosc klopotliwy w impelmentacji. Coz zostane wiec przy komercyinych serwerach (tam wszystko jak na razie dziala bez problemu).

Temat mozna zamknac.
Użytkownik Poszukiwacz edytował ten post 09 wrzesień 2005, 13:44

Niestety bez zmian. Nadal nie loguj poprawnie. Coz chyba musze sie z tym pogodzic ze na darmowych serwerach nie zawsze wszystko dziala tak jak powinno.

Łabędź, w 2 poście jest to napisane ;) Wydaje mi się, że po prostu tak jak na friko jest safemod, ale dodatkowo jeszcze jakieś funkcje wyłączone :/ To tak na chłopski rozum ;)


Łabędź, w 2 poście jest to napisane

Fakt, sorry.. Oczy już nie te ;)

W takim razie nie rozumiem co dalej nie działa. Testowałem i nie ma problemów.

pozdrawiam
Użytkownik Łabędź edytował ten post 26 wrzesień 2005, 10:41
<?php session_start(); if (!isset($_SESSION["tmp"])){ echo "nie jestes zalogowany"; exit(); } ?>

Jak na mój gust to powinno być:
if (!isset($_SESSION['tmp'])){...

obojętnie jest czy zastosujesz:

"

czy

'

bo chyba o to Ci chodziło :) można używać tego i tego, ale ja także polecam ' apostrofy B)

aha, Łabędź, spoko:P


obojętnie jest czy zastosujesz:

"

czy

'

bo chyba o to Ci chodziło :) można używać tego i tego, ale ja także polecam ' apostrofy B)

to to ja wiem, ale tam nie bylo przykładów z wywaleniem zawartości tylko zapis zmiennej, np. $_SESSION['kupa'] :P

Tak ogólnie, to: ludzie! Używajciej ak najczęściej apostrofu ' B)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.