Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesje - na localu działają na serwie nie.
Forum PHP.pl > Forum > PHP
patrycjusz
HEJ.
Mam problemik moze najpierw opisze.
Napisałem funkcję odpowiedzialną za logowanie... zawarta jest w klasie "klasa" teraz moze kodzik...
najpierw funkcja
[php:1:22a2200753]<?php
function logowanie()
{
if(isset($_POST['wyslij']) && isset($_POST['login']) && isset($_POST['haslo']))
{
$zapytanie="SELECT * from uzytkownicy where login='".$_POST['login']."'";
$wynik=mysql_query($zapytanie);
$row=mysql_fetch_array($wynik);
if (md5($_POST['haslo'])==$row['haslo'])
{
session_register('login');
header("Location: pokaz.php");
exit;
}
else
{
echo '<h6>Zły login lub hasło</h6>';
}
}
else
{
$this->formularz();
}
}
?>[/php:1:22a2200753]
teraz pliczek zabespieczony
[php:1:22a2200753]<?php
<?php
session_start();
if(!isset($_SESSION['login']))
{
header("Location: login.php");
exit;
}
echo '<h6>WITAJ&nbsp;&nbsp;'.$_SESSION['login'].'</h6>';
?>
<a href="logout.php">Wyloguj</a>
?>[/php:1:22a2200753]
pliczek login.php
[php:1:22a2200753]<?php
<?
include "klasa.php";
$class = new klasa;
$class->sprawdz_usera();
?>
?>[/php:1:22a2200753]
no i skrawek pokaz.php
[php:1:22a2200753]<?php
<?
session_start();
?>
<h6>WITAJ</h6>
<?
echo $_SESSION['login'];
?>
?>[/php:1:22a2200753]
Wszystko u mnie na localhost działa (php 4.3.2. RC1)
a na serwerze działa samo logowanie ale tak jak by mi nie rejestrowało sesji... :cry: oczywiście w każdym pliku jest session_start();
Z góry dzieki za wszelkie wskazówki. :wink:
rzseattle
a wyproboj zamiast
session_register('login');
wstaw $_SESSION['login']=$_POST['login'];
patrycjusz
za moment spróbuję ale dlaczego działa u mnie na localu a na serwie nie chce działać... na bank cosik ustawieniach konta ale co albo zle jest u mnie na localu albo na serwie....
patrycjusz
no i działa... czyli to oznacza nie mniej nie wiecej że tak zarejstrowana zmienna
session_register('zmienna');
nie moge odczytać
echo $_SESSION['zmienna'];
questionmark.gif
No i jeszcze jedno planuje wzbogacić ten swoj system m.in o poziom dostępu,czas logowania i wylogowania (tu przychodzą mi na mysl tylko ciasteczka), ip wejscia,nie udane logowania(pobieranie systemowo ale co jak uzytkownik wchodzi przez proxy?)itp.
Prosiłbym o wskazówki... i pomysły jak by tu odpowiednio to zabezpieczyc i jeszcze wypasic....
Z góry dzieki za podsuniete koncepcje :wink:
patrycjusz
heah już prawie wszystko mam oprócz...
Użytkownik w trakcje rozpoczyniania funkcji jest dopisywany do bazy ze sie zalogował wtedy i wtedy ... a chciałbym jeszcze dopisywać czas zamnkiecia sesji czyli w momencie kiedy sie uzytwkownik wyloguje to spoks dopisuje czas w okreslone miejsce ale co jezeli uzytkownik zamknie przegladarke? jak wtedy pobrac godzine?
I jeszcze jedno co z uzytkownikami którzy używaja proxy jest jakas mozliwosc obejscia tego?
patrycjusz
jeszcze moje jedno pytanie... do jakiego typu pola w bazie zapisywac IP?
menic
Cytat
jeszcze moje jedno pytanie... do jakiego typu pola w bazie zapisywac IP?

varchar 16 lub char 16
rzseattle
Cytat
no i działa... czyli to oznacza nie mniej nie wiecej że tak zarejstrowana zmienna
session_register('zmienna');
nie moge odczytać
echo $_SESSION['zmienna'];
questionmark.gif

Cytat
UWAGA !!!!
Przy użyciu $_SESSION (lub $HTTP_SESSION_VARS) nie powinno się używać
session_register(), session_is_registered() i session_unregister().
patrycjusz
heah system juz skonczylem ale tez niefunkcjonuje w pelni sprawny..
- w momencie kiedy wszystkie dane sie zgadzaja -> goscia (jego login,idsesji,IP,godzina wejscia)dodaje do tabeli zalogowany..
-kazdy kto prubuje z tego samego ip , czy tym samymy loginem dostaje komunikacik i koniec..
ale moj problem pojawia sie tu....
Jak rozwiazac problem kiedy koles zamknie przegladarke lub zerwie sie mu polaczenie? jak wtedy usunac z bazy ten wpis?
rzseattle
musisz dac jakis czas na 'zywotnosc' wpisu logowania do tabeli

czyli dodajesz dotabeli wpis ze sie zalogowal i pop przejsciu na kazda podstrone twojego servisu uaktualniasz czas
jednoczesnie dodajesz kod ktory kontroluje czy wpis w polu godziny nie jest starszy niz np 30 min - jesli tak to go usuwasz
patrycjusz
no tak ale co jezeli koles sobie zamknie przegladarke lub nagle zerwie sie mu polaczenie to co ma czekac 30 min?
BzikOS
Hmmm jeśli trzymasz sesje w bazie, to możesz wyrzucać je po określonym czasie "nieaktywności".

Update: heh rzseattle mnie uprzedził smile.gif
rzseattle
Cytat
no tak ale co jezeli koles sobie zamknie przegladarke lub nagle zerwie sie mu polaczenie to co ma czekac 30 min?


jesli chcesz to mozesz go wyzucac po 2.75 minuty, innego sposobunie ma chyba ze chceszwykozystywac js i unload ale to sie nie sprawdzi gdy np zerwie polaczenie albo poprostu zmienistronke
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.