Cavte. Mam takyto problem. MAm stranku na ktoru je treba prihlasenie uzivatelov. Mam tam zobrazovanie, kto je online amaterskym sposobom. Po prihlaseni odosle do databazy 1 pre daneho uzivatela a nalsedne vypis uzivatelov s 1-kou. Chcel by som vsak spravit COOKIES, aby sa nemuselo stale prihlasovat, proste, aby si pamatala stranka uzivatela a prihlasila ho automaticky. Neviem vsak ako na to. Cital som o Cookies vela clankov, ale vobec mi to nefunguje. Dalsia vec je, ako spravim, aby mi zobrazovalo iba uzivatelov, ktori su online, ked sa nikdy neodhlasia. Dakujem vopred za navrhy. :smile2:
Fórum › PHP
Cookies
To tomi86 :
Ahoj takže nejprve k těm cookie. Cookie zašleš uživateli pomocí:
setcookie(nazev_cookie,hodnota,zivotnost);
za nazev_cookie dosaď třeba prihlasen
za hodnotu dosaď 1
za zivotnost dosaď například time() + 60*60*24
takže ti vznikne následující řešení:
setcookie("prihlase",1,time() + 60*60*24);
tato cookie bude mít platnost jeden den, kdyby si ji chtěl naměsíc tak za 24 dáš ještě *31
No a teď jenom při vstupu na stránku budeš ověřovat zda je přihlášen:
if($_COOKIE["prihlasen"]==1){
print "je přihlášen";
}else{
print "není přihlášen";
}
a to je vše. S tím odhlášením. Do databaze ukladej údaj o poslední činosti, a pak napiš script, ktery bude ověřovat zda údaj s poslední čiností není delší než třeba 15 minut. Tento scirpt volej přes cron třeba každou minutu.
A to je celé. Přeji hodně zdaru
takze, ak som to spravne pochopil...tak pri prihlaseni pouzijem toto: setcookie(nazev_cookie,hodnota,zivotnost);
a vsade tam, kde mam kontrolu, ci je user prihlaseny
<?
if (empty($_SESSION['myusername'])){
echo " Pre vstup musíš byť prihlásený.";
exit;
}
?>
napisem toto:
<?
if(empty($_COOKIE["prihlasen"]))
echo " Pre vstup musíš byť prihlásený.";
?>
pochopil som spravne???
To tomi86 : Jo, tak se dívej :-)
udělej soubor, třeba uzivatel_cron.php
do tohoto souboru umisti tento kod(uvadím příklad, musíš si sám implementovat):
<?php
//zde načtu připojení na mysql
include "config_mysql.php";
//výběr z tabulky users
$sql = "SELECT * FROM users ORDER BY id ASC";
//provedu dotaz
$res = mysql_query($sql);
//Teď nastavím maximální dobu nečinosti, předpokládám že do MySQL ukládáš poslední akci pomocí time()
$necinost = 60*60; //toto mi za jistí že uživatel může být nečiný maximálně hodinu
//zpracuji data
while($zaz = mysql_fetch_object($res)){
//teď uložím aktuální čas
$ted = time();
//tohle je rozdíl časů
$rozdíl = $ted - $posledni_akce;
if($rozdil >= $necinost){
//ude provedes odhlášení,prostě update sloupce prihlasen kde más 1 tak na 0
}
}
?>
tak tohle je celý, snad ti to pomůže, kód jsem netestoval
To tomi86 :
to máš jednoduchý:
//tohle dáš do každé stránky za proměnou $id si ziskas tak ze do session nebo cookie ulozis pri loginu id uzivatele ktere se ziska z databaze
<?
if($_COOKIE['prihlasen'] == 1){
mysql_query("UPDATE uzivatel SET posledni_akce =".time()." WHERE uzivatel_id = $id");
}
?>
pointa je v tom, ze ja som mal na stranke povodne spravene prihlasenie uzivatela cez sessions a pri prihlaseni odoslalo do databazyhodnotu 1 a v tabulke, kde mam KTO JE ONLINE filtrovalo uzivatelov s 1-kou. Pri odhlaseni zase odoslalo do databazy 0. Potom som sa vsak rozhodol, ze spravim automaticke prihlasenie cez COOKIES, ak si uzivatel zvoli automaticke prihlasenie pri dalsej navsteve. Problem vsak je v tom, ze ked sa prihlasi, do databazy sa odosle 1-ka, ale uzivatel sa viac neodhlasi. CoOKIES mam nastavene na 1 mesiac. Takze teraz mi tam svieti, ze kazdy, kto si nastavil automaticke prihlasenie je online.
To tomi86 :
no takto>
da sa to vyriesit tak ze zistis kde sa uzivatel nachdza podla toho naco klikne
a ked bude neaktivny napr viac ako 5min tak sa automaticky prepise 1 na 0
vacsina pocitadiel je takto robena aj to co ma phpBB
skus to vyriesit takto :-D
To tomi86 :
to cookie s hodnotou jedna tam je proto, že když uživatel nebude přihlášen nebudu ukládat poslední činost, ale když bude přihlášen a tohle budeš mít ve všech stránkách tak se při každém naštívení stránky aktualizuje i příslušný údaj.
To netman92 : jasný, ze svý skušenosti vým že začátečnikový pomůže někdy když mu dáš pod nos hotový řešení, ale jestli to s tím COOKIE nepochopil hned, tak nevím jestli má vlohy na to aby programoval...třeba si to jen neuvědomil :smile1:
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze