Autor Zpráva
Majkelju
Profil
Zdravím!

Používám wkhtmltopdf k převodu html do pdf. Využívám možnosti --header-html, takže k pdf připojuju ještě soubor, co vytvoří hlavičky. V hlavičce vypisuji různé údaje, jako např. datum a e-mail uživatele. A právě ten se mi nechce vypsat. Dotaz je správně, ověřoval jsem ho. A když do prohlížeče zadám přímo adresu hlavičkového souboru s parametrem, tak to ten mail vypisuje bez problémů. Je možné, že to nějak neumí přechroustat wkhtml, když si pak volá ten soubor? Tady náhled, jak vypisuju ten e-mail:
<?
require_once("../safe/autentizace.class.php");
                session_start();
                $auth = new autentizace($db);
                
    $result = $db->query("
    SELECT `email`
    FROM `uzivatele` 
    WHERE `id` = '". $auth->uid ."'
    LIMIT 1");
    $row = $result->fetch_assoc(); 
echo '<div style="padding-bottom:50px; background:white;">
<div style="float:left; width:695px; text-align:center; font-size:20px;">DSP - Podskupiny včetně opisu atributů<br />
<span style="font-size:12px">Sestava 5.4</span>
</div>
<div style="float:left; width:180px; text-align:right;">Dne '. Date("d.m.Y").'<br />'.$row['email'].'</div></div>';
?>
Davex
Profil
Při provedení základního troubleshootingu je v proměnných přesně co?

var_dump($result);
var_dump($row);
var_dump($db->error); // pokud používáš mysqli
Majkelju
Profil
object(mysqli_result)#3 (0) { }
NULL
string(0) ""

Vypisuje to tohle...což nechápu... Když se stránka zavolá přímo, tak se to všechno natáhne v pohodě :/
Keeehi
Profil
Řekl bych, že problém bude s tímto:
var_dump($auth->uid)
Jak ale funguje třída autentizace to tu není. Navíc $db není nikde definovaná. Možná v tom includovaném scriptu, ale to se mi nezdá pravděpodobné.
Majkelju
Profil
$db je definovaná v include('../_mysql.php');, tenhle řádek jsem tam zapomněl uvést :) var_dump($auth->uid) hlásí taktéž NULL. Tady je třída autentizace:

<?php
    define ('SESSIONNAME','session');
    define ('SERVER','localhost');
    define ('USERNAME','mojestranky');
    define ('USERPASS','heslicko');
    define ('DBNAME','dbs');
 
    class autentizace {
        public $uid;
        public $demo;
        public $admin;
        public $username;
        private $fullname;
        private $group;
        private $db;
        private $externaldb;
        private $session;
  
        public function __construct ($dbase = NULL) {
            if ($dbase == NULL) {
                $this->db = new mysqli(SERVER,USERNAME,USERPASS,DBNAME);
                $this->db->set_charset('utf-8');
                $this->externaldb = false;
            } else {
                $this->db = $dbase;
                $this->externaldb = true;
            }
            $this->session = session_id();
            if (isset($_SESSION[SESSIONNAME])) {
                $this->zkontrolujSession();
                //$this->zkontrolujPrava();
            } 
        }
  
        public function __destruct() {
            if ($this->db && !$this->externaldb)
                $this->db->close();
        }
  
        public function availible($jmeno, $heslo){
            if (!empty($jmeno) && !empty($heslo)) {
                $vysledek = $this->db->query("SELECT * FROM uzivatele WHERE email = '$jmeno' AND heslo = SHA1('$heslo')");
                if ($vysledek->num_rows == 1) {
                    return true;
                } else {
                    return false;
                }
            }
        }
  
        public function login($jmeno, $heslo) {
            if (!empty($jmeno) && !empty($heslo)) {
                $vysledek = $this->db->query("SELECT * FROM uzivatele WHERE email = '$jmeno' AND heslo = SHA1('$heslo')");
                if ($vysledek->num_rows == 1) {
                    $radek = $vysledek->fetch_assoc();
                    $this->username = $radek['email'];
                    $this->uid = $radek['id'];
                    $this->demo = $radek['demo'];
                    $this->admin = $radek['k_admin'];
                } else {
                    $this->uid = false;
                    $this->username = false;
                    $this->fullname = false; 
                    $this->demo = false;
                    $this->admin = false;
                }
                $this->nastavSession();  
            }
        }
  
        public function getSess() {
            return $this->session;
        }
  
        private function zkontrolujSession() {
            $user = $_SESSION[SESSIONNAME];
            $sess = $this->session;
            if ($result = $this->db->query("SELECT * FROM uzivatele WHERE email = '$user' AND session = '$sess'")) {
                if ($result->num_rows == 1) {
                    $radek = $result->fetch_assoc();
                    $this->uid = $radek['id'];
                    $this->demo = $radek['demo'];
                    $this->admin = $radek['k_admin'];
                    $this->username = $radek['email'];
                    $this->fullname = $radek['jmeno'].' '.$radek['prijmeni'];
                } else {
                    $this->uid = false;
                    $this->demo = false;
                    $this->admin = false;
                    $this->username = false;
                    $this->fullname = false;      
                }
            }
            if ($this->logged()) $this->nastavSession(); 
        }
  
        private function nastavSession() {
            $_SESSION[SESSIONNAME] = $this->username;
            $this->db->query("UPDATE uzivatele SET session = '".$this->session ."', prihlaseni = NOW() WHERE email = '".$this->username ."'");
        }
  
        public function logout() {
            $this->db->query("UPDATE uzivatele SET session = NULL, prihlaseni = NOW() WHERE email = '" . $this->username . "'");
            $this->uid = false;
            $this->username = false;
            $this->fullname = false;  
            $this->demo = false;
            $this->admin = false;
            unset ($_SESSION[SESSIONNAME]);
            unset($_SESSION["ER_login"]);
            unset($_SESSION["ER_id"]);
            unset($_SESSION['ER_jmeno']);
            unset($_SESSION['ER_prijmeni']);
            unset($_SESSION['ER_uziv_jmeno']);
            unset($_SESSION["vychozi_uroven"]);
            unset($_SESSION["vychozi_zakladna"]); 
            unset($_SESSION["navstiveny_stavba"]);
            unset($_SESSION["oddelovac_tisicu"]);
            unset($_SESSION["vlastni_zakladna"]);
            unset($_SESSION["vlastni_zakladna_uroven"]);
            unset($_SESSION["ER_rezim"]);
            unset($_SESSION["ER_uzivatel"]);
        }
  
        public function logged() {
            if ($this->uid) 
                return true; 
            else 
                return false;
        } 
  
        public function isdemo() {
            if ($this->get_pristup_modul_stavby()) {
                return false;
            } else {
                return strtotime($this->demo) > strtotime(date("Y-m-d")) ? true : false;
            }
        }
        
        public function isadmin() {
            return $this->admin == null ? true : false;
        }
        
        public function getadmin() {
            return $this->admin;
        }
        
        public function get_prava_stavby($IdStavba, $operace) {
            if($operace == 'r' || $operace == 'w' || $operace == 'e' || $operace == 'd') {
                $result = $this->db->query("
                SELECT * FROM `stavby_uzivatele`
                WHERE `k_stavby` = '$IdStavba'
                AND `k_uzivatele` = '". $this->uid ."'");
                if ($result->num_rows == 1) {
                    $radek = $result->fetch_assoc();
                    return $radek[$operace];
                }
            }
            return false;
        }
        
        private function get_pristup_modul_stavby() { // vrati true pokud ma uzivatel prava pro pristup do mudulu staveb
            $result = $this->db->query("
            SELECT * FROM `pravaUzivatelu` 
            WHERE `k_uzivatele` = '". $this->uid ."' 
            AND (
                (`k_prava` = 5 AND `platnostDo` >= NOW()) OR 
                (`k_prava` = 6 AND `platnostDo` >= NOW()) OR 
                (`k_prava` = 7 AND `platnostDo` >= NOW()) OR 
                (`k_prava` = 8 AND `platnostDo` >= NOW())
            )");
            return $result->num_rows ? true : false;
        }
        
        public function PlatnostDemoRezimu(){//86400 sec per day
            $dni = (int)(((strtotime($this->demo) - strtotime(date("Y-m-d")))+43190)/86400);
            return 'vyprší za ' . $dni . ' dní';
        }
        
    }
?>
Keeehi
Profil
Majkelju:
var_dump($auth->uid) hlásí taktéž NULL
Což přece znamená neznámého/nepřihlášeného uživatele. V té identifikaci se využívá session, ta je většinou vázaná na cookies. Jen tipuji, trochu zapojte mozek a zpětně debugujte. var_dump je velký kamarád. Prostě kontrolujte jestli v těch proměnných je to co tam má být a pokud ne, tak odkud se to tam vzalo.

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: