Stránka 1 z 1
php - trvalé přihlášení uživatele
Napsal: 01 črc 2011 11:12
od Stene
Zdravím, jak řešíte trvalé přihlášení uživatele? Zatím ukládám data o přihlášení do session, ale po vypnutí/zapnutí jsem zamozřejmě odhlášen..
login zpracovávám takto:
<?php
ob_start();
session_start();
if(isset($_POST['jmeno'])){
require_once './db_registrace.php';
$name = $_POST['jmeno'];
$pass = md5($_POST['heslo']);
$query = mysql_query("SELECT * FROM `uzivatele` WHERE `prezdivka` = '$name' and `heslo` = '$pass'") or die (mysql_error());
$Vysledek = mysql_fetch_array($query);
if($Vysledek['prezdivka']){
$_SESSION['prihlasen'] = 1;
$_SESSION['login'] = $Vysledek['prezdivka'];
$_SESSION['UserId'] = $Vysledek['id'];
$_SESSION['UserWeb'] = $Vysledek['web'];
$_SESSION['UserMail'] = $Vysledek['mail'];
$_SESSION['Prava'] = $Vysledek['prava'];
$bl="".$_SERVER['HTTP_REFERER']."?login=yes";
header("location: $bl");
exit;
}else{
$bl="".$_SERVER['HTTP_REFERER']."?login=no";
header("location: $bl");
exit;
}
mysql_free_result($query);
}else{
echo "Zde nic není.";
}
ob_end_flush();
?>
Re: php - trvalé přihlášení uživatele
Napsal: 01 črc 2011 12:15
od CZechBoY
já používám COOKIE, ale bacha na ně

pokud znáš CoolJabko tak čerpám odtamtud
při přihlašování píše:$xxx=Sha1($nick).time()*60;
MySQL_Query("UPDATE registracni_tabulka SET cook='$xxx',IP='{$_SERVER['REMOTE_ADDR']}' WHERE nick='$nick' LIMIT 1");
@SetCookie('xxxx',$xxx,time()+720*60*60);
při kontrole přihlášení píše:If(!Empty($_COOKIE['xxx'])){
/// zde je přesunutí hodnot z DataBáze do $_SESSION, nezapomeň zkontrolovat IP
$resLogin=@MySQL_Query($sql="SELECT id,jmeno,nick,jazyk FROM registracni_tabulka WHERE cook='{$_COOKIE['xxx']}' AND IP='{$_SERVER['REMOTE_ADDR']}' LIMIT 1") Or Die(MySQL_Error());
//následuje fetch_assoc a naházení do $_SESSION
}
snad to pochopíš takhle zkráceně
edit: koukám, že tam máš asi SQL injection (teda pokud před timhle scriptem samozřejmě nemáš ještě něco jinýho

)
Re: php - trvalé přihlášení uživatele
Napsal: 06 črc 2011 17:40
od Stene
Tak jsem se v tom absolutně ztratil.. Nevím na čem v tom kódu jsem, ani nevím, jestli se to do cookies ukládá.. Ale spíš je špatný kód
- login_zpracuj.php
<?php
ob_start();
session_start();
if(isset($_POST['jmeno'])){
require_once './db_registrace.php';
$name = $_POST['jmeno'];
$pass = md5($_POST['heslo']);
$query = mysql_query("SELECT * FROM `uzivatele` WHERE `prezdivka` = '$name' and `heslo` = '$pass'") or die (mysql_error());
$Vysledek = mysql_fetch_array($query);
if($Vysledek['prezdivka']){
$xxx=Sha1($name).time()*60;
MySQL_Query("UPDATE uzivatele SET cook='$xxx',ip='{$_SERVER['REMOTE_ADDR']}' WHERE prezdivka='$name' LIMIT 1");
@SetCookie('xxx',$xxx,time()+720*60*60);
If(!Empty($_COOKIE['xxx'])){
/// zde je přesunutí hodnot z DataBáze do $_SESSION, nezapomeň zkontrolovat IP
$resLogin=@MySQL_Query($sql="SELECT id FROM uzivatele WHERE cook='{$_COOKIE['xxx']}' AND ip='{$_SERVER['REMOTE_ADDR']}' LIMIT 1") Or Die(MySQL_Error());
$_SESSION['prihlasen'] = 1;
$_SESSION['login'] = $Vysledek['prezdivka'];
$_SESSION['UserId'] = $Vysledek['id'];
$_SESSION['UserWeb'] = $Vysledek['web'];
$_SESSION['UserMail'] = $Vysledek['mail'];
$_SESSION['Prava'] = $Vysledek['prava'];
$bl="".$_SERVER['HTTP_REFERER']."?login=yes";
header("location: $bl");
}
If(Empty($_COOKIE['xxx'])){
$_SESSION['prihlasen'] = 1;
$_SESSION['login'] = $Vysledek['prezdivka'];
$_SESSION['UserId'] = $Vysledek['id'];
$_SESSION['UserWeb'] = $Vysledek['web'];
$_SESSION['UserMail'] = $Vysledek['mail'];
$_SESSION['Prava'] = $Vysledek['prava'];
$bl="".$_SERVER['HTTP_REFERER']."?login=yes";
header("location: $bl");
exit;
}}else{
$bl="".$_SERVER['HTTP_REFERER']."?login=no";
header("location: $bl");
exit;
}
mysql_free_result($query);
}else{
echo "Zde nic není.";
}
ob_end_flush();
?>
Re: php - trvalé přihlášení uživatele
Napsal: 07 črc 2011 11:24
od CZechBoY
to cookie musíš kontrolovat na každý stránce, takhle by to kontrolovalo jen při vstupu na stránku login_zpracuj.php
tabulka s uživatelema má ty sloupce, který jsem tam dal na ukázku?
Re: php - trvalé přihlášení uživatele
Napsal: 07 črc 2011 14:33
od Stene
Má trochu jiný.. ale vůbec si nedokážu představit jak toho uživatele mám přihlásit, když nikde nemám uložený jeho heslo?
Proč vůbec mám kontrolovat id, jméno, nick a jazyk?
$resLogin=@MySQL_Query($sql="SELECT id,jmeno,nick,jazyk FROM registracni_tabulka WHERE cook='{$_COOKIE['xxx']}' AND IP='{$_SERVER['REMOTE_ADDR']}' LIMIT 1") Or Die(MySQL_Error());
Bohužel se v tom naprosto ztrácím.
Re: php - trvalé přihlášení uživatele
Napsal: 09 črc 2011 23:30
od CZechBoY
nekontroluješ, ale vybíráš, asi jsi trochu pozapoměl SQL ale nevadí
ty si poslal přihlašovací skript, ten vypadá u mě takto:
vyberu z DB údaje které chci uložit do session, cookie nekontroluju, ale uložím tam údaje, které potom kontorluju případně na každé další "zaheslované" stránce v hlavičce, nebo někde prostě
v
hlavičce mám něco na způsob (okopírováno ze shora):
hlavicka/každá stránka píše:<?php
@ob_start();
@session_start();
If($_SESSION['prihlasen']!==1){ // v SESSION je špatná hodnota - např. vypršela a celá SESSION je prázdná
If(!Empty($_COOKIE['xxx'])){ //v COOKIE máme nějaká data, musíme zkontrolovat
/// zde je přesunutí hodnot z DataBáze do $_SESSION, nezapomeň zkontrolovat IP
$resLogin=@MySQL_Query($sql="SELECT id,prezdivka,web,mail,prava FROM uzivatele WHERE cook='{$_COOKIE['xxx']}' AND ip='{$_SERVER['REMOTE_ADDR']}' LIMIT 1") Or Die(MySQL_Error());
$Vysledek=@MySQL_Fetch_Assoc($resLogin) Or Die(MySQL_Error());
// následuje přiřazení hodnot z DB do SESSION
$_SESSION['prihlasen'] = 1;
$_SESSION['login'] = $Vysledek['prezdivka'];
$_SESSION['UserId'] = $Vysledek['id'];
$_SESSION['UserWeb'] = $Vysledek['web'];
$_SESSION['UserMail'] = $Vysledek['mail'];
$_SESSION['Prava'] = $Vysledek['prava'];
}
Else{ // v COOKIE nic není, přesměrovat uživatele na přihlašovací formulář
Header("Location: prihlasovaci_formular.html");
exit;
}
}
echo "<div class='menu'>Přihlášen:<strong>{$_SESSION['login']}</strong></div>";
ob_end_flush();
Re: php - trvalé přihlášení uživatele
Napsal: 10 črc 2011 20:16
od Stene
Tak pořád nic..
První přihlášení provádím takto
<?php
ob_start();
session_start();
if(isset($_POST['jmeno'])){
require_once './db_registrace.php';
$name = $_POST['jmeno'];
$pass = md5($_POST['heslo']);
$query = mysql_query("SELECT * FROM `uzivatele` WHERE `prezdivka` = '$name' and `heslo` = '$pass'") or die (mysql_error());
$Vysledek = mysql_fetch_array($query);
if($Vysledek['prezdivka']){
$_SESSION['prihlasen'] = 1;
$_SESSION['login'] = $Vysledek['prezdivka'];
$_SESSION['UserId'] = $Vysledek['id'];
$_SESSION['UserWeb'] = $Vysledek['web'];
$_SESSION['UserMail'] = $Vysledek['mail'];
$_SESSION['Prava'] = $Vysledek['prava'];
$bl="".$_SERVER['HTTP_REFERER']."?login=yes";
header("location: $bl");
$xxx=Sha1($nick).time()*60;
MySQL_Query("UPDATE uzivatele SET cook='$xxx',IP=".$_SERVER['REMOTE_ADDR']." WHERE nick='$nick' LIMIT 1");
@SetCookie('xxx',$xxx,time()+720*60*60);
exit;
}else{
$bl="".$_SERVER['HTTP_REFERER']."?login=no";
header("location: $bl");
exit;
}
ob_end_flush();
}
?>
a v autologin.php (který volám na každý stránce)
<?php
@ob_start();
@session_start();
include 'db_registrace.php';
if($_SESSION['prihlasen']!==1){ // v SESSION je špatná hodnota - např. vypršela a celá SESSION je prázdná
If(!Empty($_COOKIE['xxx'])){ //v COOKIE máme nějaká data, musíme zkontrolovat
/// zde je přesunutí hodnot z DataBáze do $_SESSION, nezapomeň zkontrolovat IP
$resLogin=@MySQL_Query($sql="SELECT id,prezdivka,web,mail,prava FROM uzivatele WHERE cook='".$_COOKIE['xxx']."' AND ip='".$_SERVER['REMOTE_ADDR']."' LIMIT 1") Or Die(MySQL_Error());
$Vysledek=@MySQL_Fetch_Assoc($resLogin) Or Die(MySQL_Error());
// následuje přiřazení hodnot z DB do SESSION
$_SESSION['prihlasen'] = 1;
$_SESSION['login'] = $Vysledek['prezdivka'];
$_SESSION['UserId'] = $Vysledek['id'];
$_SESSION['UserWeb'] = $Vysledek['web'];
$_SESSION['UserMail'] = $Vysledek['mail'];
$_SESSION['Prava'] = $Vysledek['prava'];
$xxx=Sha1($name).time()*60;
MySQL_Query("UPDATE uzivatele SET cook=".$xxx.",IP=".$_SERVER['REMOTE_ADDR']." WHERE nick=".$name." LIMIT 1");
@SetCookie('xxxx',$xxx,time()+720*60*60);
}
}
ob_end_flush();
?>
Když ale autologin.php zavolám na každý stránce, nic se nevypíše, pouze pozadí.. Žádný obrázky, text, nic..
Re: php - trvalé přihlášení uživatele
Napsal: 12 črc 2011 00:41
od CZechBoY
Tak tam dej jeste Else jako neprihlasen a Else jako bez cookie
To nastaveni cookie a ulozeni dodb dej pryc to je blbost
Vse v autologinu..