Autor Zpráva
Fury
Profil *
Zdravím,

narazil jsem na jeden problém, přepisoval jsem web pro vyšší verzi PHP a stává se mi následující příklad.

Mám index.php, kde mám na začátku následující:
ob_start();
session_start();
include_once('../db.php');
include_once('../funkce.php');

if(empty($_SESSION['UserLogged']))header("Location: login.php");

overit();

V souboru funkce.php jsem dal hned na první místo funkci overit(), před všechny ostatní funkce:
function overit(){
 $uzivatele = mysqli_query($db, ("
 SELECT 
    *,
    CONCAT(jmeno, ' ',prijmeni) celejmeno
 FROM uzivatele 
 WHERE email = '$_SESSION[UserEmail]' AND heslo = '$_SESSION[UserPass]' AND smazano = 0"));
  if(mysqli_num_rows($uzivatele))   // ŘÁDEK 9
  {
   $u = mysqli_fetch_array($uzivatele);   
    $_SESSION['UserId'] = $u['id'];
    $_SESSION['UserName'] = $u['jmeno'];
    $_SESSION['UserEmail'] = $u['email'];
    $_SESSION['UserPass'] = $u['heslo'];
    
    for ($i = 1; $i <= 30; $i++) {
        unset($_SESSION['prava_'.$i]);
    }
    $prava = mysqli_query($db, ("SELECT * FROM admin_prava WHERE uzivatel_id = $_SESSION[UserId]"));
     while($p = mysqli_fetch_array($prava))
     {
      $_SESSION['prava_'.$p['modul_id']] = 1;
     }      
  }
}

V tuto chvíli se mi začne zobrazovat chyba:
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /beta/funkce.php on line 8 Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /beta/funkce.php on line 9

Pokud ovšem v index.php nahradím řádek overit(); funkcí ověřit, tedy obsahem z funkce.php, tak mi vše funguje správně:
ob_start();
session_start();
include_once('../db.php');
include_once('../funkce.php');

if(empty($_SESSION['UserLogged']))header("Location: login.php");

 $uzivatele = mysqli_query($db, ("
 SELECT 
    *,
    CONCAT(jmeno, ' ',prijmeni) celejmeno
 FROM uzivatele 
 WHERE email = '$_SESSION[UserEmail]' AND heslo = '$_SESSION[UserPass]' AND smazano = 0"));
  if(mysqli_num_rows($uzivatele))
  {
   $u = mysqli_fetch_array($uzivatele);   
    $_SESSION['UserId'] = $u['id'];
    $_SESSION['UserName'] = $u['jmeno'];
    $_SESSION['UserEmail'] = $u['email'];
    $_SESSION['UserPass'] = $u['heslo'];
    
    for ($i = 1; $i <= 30; $i++) {
        unset($_SESSION['prava_'.$i]);
    }
    $prava = mysqli_query($db, ("SELECT * FROM admin_prava WHERE uzivatel_id = $_SESSION[UserId]"));
     while($p = mysqli_fetch_array($prava))
     {
      $_SESSION['prava_'.$p['modul_id']] = 1;
     }      
  }

Netušíte prosím kde by mohl být zakopaný pes? Už si doopravdy nevím rady.

Díky moc
Keeehi
Profil
Do funkce si nepředáváš spojení na databázi. Proměnná $db je v kontextu funkce úplně jiná proměnná. Musíš si ji předat jako parametr funkce overit.
//include ...

overit($db);

A v definici funkce
function overit($db){
...
Fury
Profil *
Ah, jsem kokot :).

Díky!

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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