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();
?>
php - trvalé přihlášení uživatele
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: php - trvalé přihlášení uživatele
já používám COOKIE, ale bacha na ně 
pokud znáš CoolJabko tak čerpám odtamtud
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
)

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

PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
- Stene
- Level 6
- Příspěvky: 3124
- Registrován: únor 09
- Bydliště: Jihlava
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: php - trvalé přihlášení uživatele
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();
?>
- 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();
?>
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: php - trvalé přihlášení uživatele
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?
tabulka s uživatelema má ty sloupce, který jsem tam dal na ukázku?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
- Stene
- Level 6
- Příspěvky: 3124
- Registrován: únor 09
- Bydliště: Jihlava
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: php - trvalé přihlášení uživatele
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.
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.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: php - trvalé přihlášení uživatele
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):
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();
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
- Stene
- Level 6
- Příspěvky: 3124
- Registrován: únor 09
- Bydliště: Jihlava
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: php - trvalé přihlášení uživatele
Tak pořád nic..
První přihlášení provádím takto
a v autologin.php (který volám na každý stránce)
Když ale autologin.php zavolám na každý stránce, nic se nevypíše, pouze pozadí.. Žádný obrázky, text, 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..
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: php - trvalé přihlášení uživatele
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..
To nastaveni cookie a ulozeni dodb dej pryc to je blbost
Vse v autologinu..
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
-
Problém s načítáním stránek - bílá blikající obrazovka po přihlášení
od linkinlot9 » 31 pro 2024 15:36 » v Programování a tvorba webu - 1
- 1599
-
od kecalek
Zobrazit poslední příspěvek
31 pro 2024 16:27
-
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti