Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

PLEASE HELP `SESSION`
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Subiectul anterior :: Subiectul următor  
Autor Mesaj
kmeleon



Data înscrierii: 14/Iun/2007
Mesaje: 35
Locație: vaslui

Trimis: Lun Aug 25, 2008 4:18 pm    Titlul subiectului: PLEASE HELP `SESSION`  

Ok baieti, eu unu nu mai stiu cum sa fac.Vreau sa transform un site web intrun site wap utilizand html simplu.Mai exact este vorba de un joc php destul de complex. El utilizeaza cookie insa mie imi trebuie session pentru a putea tine utilizatorii online deoarece telefoanele nu au cookie (o mare parte din ele) si daca nu imi detecteaza cookie ma scoate in pagina de logare cu toate ca am parola si userul corect.

acum problema este urmatoarea. Cum as putea transforma cat mai repede cu putinta di n cookie in session? Daca inlocuiesc in urmatorul cod :


<?php
ob_start();

function check_login() {
if(isset($_SESSION['login'],$_SESSION['IP']) && $_SESSION['IP'] == $_SERVER['REMOTE_ADDR']) {
if(! isset($_COOKIE['login'],$_COOKIE['validate'])) {
$validate = md5(rand(0,1000));
setcookie("login",$_SESSION['login'],time()+60*60*24,"/","");
setcookie("validate",$validate,time()+60*60*24,"/","");
}
else
$validate = $_COOKIE['validate'];
mysql_query("REPLACE INTO `[online]`(`time`,`IP`,`login`,`validate`) values(NOW(),'{$_SERVER['REMOTE_ADDR']}','{$_SESSION['login']}','$validate')");
return TRUE;
}
else {
if(isset($_COOKIE['login'],$_COOKIE['validate'])) {
$login = $_COOKIE['login'];
$validate = $_COOKIE['validate'];
$query = mysql_query("SELECT * FROM `[online]` WHERE `login`='$login' AND `validate`='$validate' AND `IP`='{$_SERVER['REMOTE_ADDR']}' AND UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(`time`) < 60*60*24");
if($user = mysql_fetch_object($query)) {
mysql_query("UPDATE `[online]` SET `time`=NOW() WHERE `login`='$login' AND `validate`='$validate' AND `IP`='{$_SERVER['REMOTE_ADDR']}' AND UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(`time`) < 60*60*24");
setcookie("login",$user->login,time()+60*60*24,"/","");
setcookie("validate",$validate,time()+60*60*24,"/","");

$_SESSION['login'] = $user->login;
$_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
return TRUE;
}
else {
unset($_SESSION['login']);
unset($_SESSION['IP']);
setcookie("login",'',time()-100,"/","");
setcookie("validate",'',time()-100,"/","");
return FALSE;
}
}
else {
unset($_SESSION['login']);
unset($_SESSION['IP']);
setcookie("login",'',time()-100,"/","");
setcookie("validate",'',time()-100,"/","");
return FALSE;
}
}
}

?>


cookie cu session va merge?
sau va trebui sa pun fiecare variabila in Session?
Va rog mult daca puteti sa ma ajutati.

Vreau sa specific ca acesta este fisierul _include-funcs.php si ca scripul este de o intindere cel putin colosala.si in tot scriptul se utilizeaza cookie.
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE

Trimis: Lun Aug 25, 2008 4:50 pm    Titlul subiectului:  

n-am fost prea atent la cod dar... un session_start() ai pus? 8O
Sus  
kmeleon



Data înscrierii: 14/Iun/2007
Mesaje: 35
Locație: vaslui

Trimis: Lun Aug 25, 2008 4:57 pm    Titlul subiectului:  

este deschis session dar in alt fisier, insa daca sunt de pe pc ma pastreaza online dar daca intru de pe telefon e problema. Ma arunca in pagina de logare. :((
Sus  
Birkoff



Data înscrierii: 18/Mar/2004
Mesaje: 2607
Locație: Bucuresti

Trimis: Lun Aug 25, 2008 5:06 pm    Titlul subiectului:  

da si tu un echo la o variabila de sesiune sa vezi daca se pierde la trecerea dintr-o pagina in alta si eventual da si la cookie... si verifica ce se intampla pe pc si ce se intampla pe telefon... daca pe telefon se pierde valoarea acelei variabile la trecerea dintr-o pagina in alta inseamna ca problema e din cod...
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 620

Trimis: Lun Aug 25, 2008 5:21 pm    Titlul subiectului:  

kmeleon a scris: ... El utilizeaza cookie insa mie imi trebuie session pentru a putea tine utilizatorii online deoarece telefoanele nu au cookie (o mare parte din ele)...

In mod normal PHP se foloseste de cookies pentru a pastra sesiunea, daca vrei sesiune fara cookies trebuie sa activezi trans-sid (nerecomandat din motive de securitate).

http://www.php.net/manual/en/session.configuration.php#ini.session.use-cookies

http://www.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid
Sus  
kmeleon



Data înscrierii: 14/Iun/2007
Mesaje: 35
Locație: vaslui

Trimis: Lun Aug 25, 2008 10:10 pm    Titlul subiectului:  

deci santeleg ca ar trebui sa se pastreze sesiunea?chiar daca folosesc cookie?daca doreste cineva sa ma ajute ii dau scriptul.este vorba de scriptul de la dark step un joc foarte dragalash online.daca este cineva care doreste dati add la idul de messenger "al_totty".
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1801
Locație: Sibiu

Trimis: Mar Aug 26, 2008 8:49 am    Titlul subiectului:  

Va trebui si modificat prin cod. Setarea unei variabile de sesiune se face cu $_SESSION['variabila'] = valoare sau cu session_register(), in timp ce valorile in cookie se introduc cu setcookie(). Toate apelurile la setcookie() vor trebui inlocuite corespunzator.
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE

Trimis: Mar Aug 26, 2008 9:30 am    Titlul subiectului:  

Amenthes a scris: In mod normal PHP se foloseste de cookies pentru a pastra sesiunea
sesiunea e pastrata pe server iar cookie-ul pe local...
session.use_cookies e doar o chestiune setata din php.ini si, nu stiu cat de recomandata e

kmeleon, daca vrei sa refaci toata afacerea pe sesiuni.... nu trebuie decat in loc de setcookie sa faci cum zice mihaita si, $_COOKIE se transforma in $_SESSION [asta dupa ce scrii inainte de toate un session_start()]

Citat: deci santeleg ca ar trebui sa se pastreze sesiunea?chiar daca folosesc cookie? deci... nu... e vorba de un session_id care se pastreaza dar trebuie sa intelegi ceva: cookie = fisier stocat pe masina clientului [poti sa-l pastrezi 7 luni, daca vrei], session = fisier stocat pe server si, il pastrezi o sesiune de browser sau... daca vrei tu, ca programator sa creezi un ses_id exact la fel cu un precedent, poti sa pastrezi cat este in configuratia serverului.
http://www.php.net/manual/en/function.session-start.php
Citat: session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie.
deci, poti sa pastrezi ID-ul de sesiune in cookie [adica pe local] si sa reiei sesiunea [de pe server]

daca am gresit cu ceva, sa ma contrazica un stiutor :)
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 620

Trimis: Mar Aug 26, 2008 9:50 am    Titlul subiectului:  

vectorialpx a scris:
sesiunea e pastrata pe server iar cookie-ul pe local...
session.use_cookies e doar o chestiune setata din php.ini si, nu stiu cat de recomandata e


PHP se foloseste in mod nativ de cookies pentru a pastra o sesiune, adica pentru a face legatura intre un browser si fisierele stocate pe server. Nu mai e nevoie sa setezi tu session_id cu $_COOKIE, e trimis automat de PHP. Daca n-ar fi un cookie n-ar mai fi sesiune, cu exceptia cazului in care setezi use_trans_sid in php.ini (off by default) sau concatenezi tu in URL.
De fapt e recomandat sa folosesti NUMAI cookies (use_only_cookies in php.ini), daca se poate cu flag-ul optional HTTP only, nesuportat insa de toate browserele dar nedaunator daca nu e.

Concluzia: Daca vrei sesiune pe platforme care nu suporta cookies trebuie sa propagi id-ul de sesiune in URL dar mare grija la securitate.
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE

Trimis: Mar Aug 26, 2008 12:11 pm    Titlul subiectului:  

Citat: Nu mai e nevoie sa setezi tu session_id cu $_COOKIE, e trimis automat de PHP. ses_id-ul este inlocuit cu unul nou de fiecare data, tocmai pentru ca este trimis automat de PHP

Citat: Daca n-ar fi un cookie n-ar mai fi sesiune, cu exceptia cazului in care setezi use_trans_sid in php.ini (off by default) sau concatenezi tu in URL de acord cu tine... asa se face legatura local-server


eu recomand cu caldura utilizarea sesiunilor [atat pentru securitate cat si pentru comoditate]
Sus  
kmeleon



Data înscrierii: 14/Iun/2007
Mesaje: 35
Locație: vaslui

Trimis: Mar Aug 26, 2008 2:15 pm    Titlul subiectului:  

baieti trebuie sa recunosc ca mati luat cam tare, sunt incepator, stiu php de baza.in majoritatea fisierelor apare unset session si imediat dupa aceea setcookie. deci unde este $_cookie trebui sa inlocuiesc cu $_session?
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE

Trimis: Mar Aug 26, 2008 2:21 pm    Titlul subiectului:  

pai, tu cum citesti o variabila cookie?

session_register('gigel', 'valoare variabila');
e aproximativ echivalent cu $_SESSION['gigel'] = 'valoare variabila';

la cookie, intai tre sa pui setcookie apoi citesti variabila cu $_COOKIE['variabila']
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 620

Trimis: Mar Aug 26, 2008 2:33 pm    Titlul subiectului:  

@kmeleon, verifica mai intai daca telefonul tau suporta cookies. Ba mai bine, fa o cercetare si vezi daca platformele targetate de tine suporta cookies si daca da, daca sunt active "by default".

De abia dupa aia poti sa te intrebi daca inlocuiesti cookie cu session.

Fa doua pagini wap. Pe prima setezi din PHP un cookie cu setcookie(), iar pe a doua faci print_r($_COOKIE);
Sus  
kmeleon



Data înscrierii: 14/Iun/2007
Mesaje: 35
Locație: vaslui

Trimis: Joi Aug 28, 2008 10:39 am    Titlul subiectului:  

baieti cea mai usoara varianta de pana acum mi se pare a fi a renunt de tot la cookie si sa bag toate variabilele in session si sar putea sa mearga.daca cineva vrea scriptul ma gasiti la id de mess de mai sus.va multumesc din suflet.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community