escapování uvozovek při insertu
- JazeX
- Člen | 10
Zdravíčko, hledám cestu jak vložit HTTP hlavičku do databáze.
V databázi mám tabulku ‚clicks‘, která v podstatě loguje prokliky –
jelikož moje aplikace je v podstatě zkracovač URL.
Pokud se ale pokouším vložit hlavičku následovně, nejde to, protože
jednotlivé části pole jsou oddělené apostrofy, které mi pak rozbijí
SQL dotaz.
$cookies = $this->getHttpRequest()->getCookies();
$remoteAddress = $this->getHttpRequest()->getRemoteAddress();
$remoteHost = $this->getHttpRequest()->getRemoteHost();
//$referer = $this->getHttpRequest()->getReferer()->host; // na produkci odkomentovat a vyzkoušet
$headers = $this->getHttpRequest()->getHeaders();
$kontrakt = $this->database->query('SELECT kID, kURL FROM kontrakty WHERE kKey = ?', $kKey)->fetch();
$this->getHttpResponse()->setCookie('kKey', $kKey, '1 day');
$this->database->table('clicks')->insert([
'cKontrakt' => $kontrakt['kID'],
'cZpracovatel' => $kZp,
'cRemoteAddress' => $remoteAddress,
'cRemoteHost' => $remoteHost,
'cReferer' => $referer,
'cHeader' => $headers
]);
$this->redirectUrl($kontrakt['kURL']);
Výsledek:
INSERT INTO `clicks` (`cKontrakt`, `cZpracovatel`, `cRemoteAddress`, `cRemoteHost`, `cReferer`,
`cHeader`)
VALUES (4, 5, '::1', 'DESKTOP-RCBRNRM', NULL, `host`='localhost', `user-agent`='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0', `accept`='text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', `accept-language`='cs,sk;q=0.8,en-US;q=0.5,en;q=0.3',
`accept-encoding`='gzip, deflate', `referer`='http://localhost/affilium/www/link/?kKey=iqq4ah0bdz&kZp=5', `connection`='keep-alive', `cookie`='PHPSESSID=d65htam6itl0i1sm3e54t3mfuj; nette-samesite=1; kKey=iqq4ah0bdz', `upgrade-insecure-requests`='1',
`cache-control`='max-age=0')
Mým cílem je dostat celou hlavičku do sloupce ‚cHeader‘, ideálně
v nějakém formátu, aby se pak třeba v administraci aplikace dala snadno
rozluštit a vypsat.
Mockrát díky.
Editoval JazeX (18. 3. 2020 10:43)
- David Matějka
- Moderator | 6445
getHeaders vraci pole, preved si to na nejaky – treba json encoded – retezec