Próbuje napisać sprawny kod logowania z cookies opartym oczywiście o sesje i bazę danych mysql.
Jednak coś nie działa mi to w necie, bo lokalnie zdaję się że działa.
Mam jeszcze dodatkowe pytanie, czy da się jakoś sztucznie wydłużyć czas trwania SESSION? Typ serwera Home.pl, konto współdzielone, więc nie mam dostępu do php.ini
Oto zestaw plików odpowiedzialnych za logowanie u mnie.
Plik funkcje.php
<?php require_once 'sterownik.php'; //cache $host='localhost'; $user='xxxxxx'; $haslo='xxxxxx'; $baza='xxxxx'; //LOGOWANIE //logowanie_cookies(); function polaczenie() { } function wczytaj_ustawienia() { polaczenie(); return $ustawienia; } function generuj_id_sesji() { return $id_sesji; } function logowanie_cookies() { //echo 'Logowanie cookies<br>'; { //echo 'jest cookies<br>'; $id_sesji=$_COOKIE['tajnecookie']; $test_session=sprawdz_sesje($id_sesji); } else { //echo '<br>nie ma cookies<br>'; } } function sprawdz_sesje($id) { //echo '<br>sprawdzanie cookies<br>'; polaczenie(); $zapytanie = "select * from scms_sesje where session_id='".$id."'"; //echo $zapytanie; //echo "<br>Strona:".$_SERVER[HTTP_USER_AGENT].'<br>Baza:'.$dane['browser'].'<br>'; { //echo '<br>Sesja z bazy:'.$dane[session_id].'<br>'; //echo '<br>Jest taka sesja w bazie<br>'; $_SESSION['uwierzytelniony'] = $dane['login']; $_SESSION['user_poziom']=$dane['user_level']; $_SESSION['id']=$dane['user_id']; return $dane; } else { //echo '<br>Nie ma takiej sesji w bazie<br>'; return 0; } } function czyszczenie_tabeli_sesji() { { $sql='DELETE from scms_sesje where czas<"'.$czas.'"'; } } ?>
plik index.php
<?php require 'funkcje.php'; polaczenie(); $ustawienia=wczytaj_ustawienia(); if ($ustawienia[status]=="OFF") { } else { if (!$_SESSION['uwierzytelniony'] and !$_SESSION['user_poziom'] and !$_SESSION['id']) logowanie_cookies(); } ?>
Plik logout.php
<?php require 'funkcje.php'; function wyloguj($id) { polaczenie(); } wyloguj($_COOKIE['tajnecookie']); ?>
Plik logowanie.php
<?php { $iduzytkownika = $_POST['login']; require_once ('funkcje.php'); polaczenie(); $zapytanie = "select ID_MEMBER,memberName,ID_GROUP,passwd,emailAddress from smf_members where memberName='".$iduzytkownika."' and passwd='".sha1(strtolower($iduzytkownika).$_POST[haslo])."'"; if($jest_user > 0) { { } else { $_SESSION['uwierzytelniony'] = $dane[memberName]; $_SESSION['user_poziom']=$dane['ID_GROUP']; $_SESSION['id']=$dane['ID_MEMBER']; $wygenerowane_id=generuj_id_sesji(); $sql=mysql_query('Insert Into scms_sesje values (NULL,''.$wygenerowane_id.'',''.$dane[memberName].'','' czyszczenie_tabeli_sesji(); } } else { } } ?>
w nagłówku zaraz po body jest wywołanie funkcji:
<?php ?>
Skrypt pisałem jakiś czas temu, mam świadomość że jest trochę chaotyczny

Pozdrawiam