Autor Zpráva
Johaness
Profil *
Dobrý večer,
mám problém s přihlášením uživatele - Vypisuje se mi chybová hláška Deprecated: Function session_is_registered() is deprecated in .

Slyšel jsem, že v nové verzi php je tato fce odstraněna. Čím a jak ji nahradit? Kód pro kontrolu přihlášení je následující:
<?php

             include "config.php";

$uzivatel=$_POST['uzivatel'];
$heslo=($_POST['heslo']);
$heslo=MD5($heslo);

$uzivatel = stripslashes($uzivatel);
 $heslo = stripslashes($heslo);
 $uzivatel = mysql_real_escape_string($uzivatel);
 $heslo = mysql_real_escape_string($heslo);
 
$sql="SELECT * FROM uzivatele WHERE uzivatel='$uzivatel' and heslo='$heslo'";

$result=mysql_query($sql);
 $count=mysql_num_rows($result);

if($count==1){
session_register("uzivatel");
session_register("heslo"); 
 header("location: ../admin/index.php");
}

else {

echo "Špatné uživatelské jméno nebo heslo! Zkuste to prosím znova!";

}

?>
A oveření je následující:
session_start(); 
if (!session_is_registered(uzivatel))
{header("location:./login.php"); }
include "../config.php";
echo "přihlašeni úspěšné, admin zona"; ?>

Popřípadně, jak tento kód upravit, aby byl bezpečnější? Děkuji za tipy a rady.
panther
Profil
Johaness:
http://php.net/manual/en/function.session-is-registered.php
Johaness
Profil *
panther:
neumím moc dobře anlgicky, ale řekl bych, je třeba 'session_is_registered' nahradit $_SESSION('uzivatel'); a tak samo i v souboru pro kontrolu přihlášení?
panther
Profil
Johaness:
pochopil jsi to správně. Deprecated je i session_register, sessiony se dají plnit přímo, tedy $_SESSION['user'] = 'Pavel', kontrola existence pak probíhá přes isset($_SESSION['user']).
Johaness
Profil *
panther:
Ano našel jsem řešení na phpfreaks.com ... každopádně, jak můj kód převést do této podoby ( v případě že je správná?) Děkuji za trpělivost.
function get_session($param_name)
{
  $param_value = "";
  iif(!isset($_POST[$param_name]) && !isset($_GET[$param_name]) && isset($_SESSION[$param_name]))  
    $param_value = $_SESSION[$param_name];

  return $param_value;
}
Johaness
Profil *
Tak jsem své řešení upravil a rád bych se zeptal, jetli je to správně:
Soubor pro kontrolu ( ř. 19 - 24 viz kod #1 )
if($count==1){
$_SESSION['uzivatel'] = 'uzivatel';
$_SESSION['heslo'] = 'heslo';

 header("location: ../admin/index.php");
}
a v souboru který by měl být dostupný po přihlášení mám :

session_start(); 
if(!isset($_POST['uzivatel']) && !isset($_GET['uzivatel']) && !isset($_SESSION['uzivatel']))
{header("location:../login.php"); }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: