escapování uvozovek při insertu

JazeX
Člen | 10
+
0
-

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
+
+1
-

getHeaders vraci pole, preved si to na nejaky – treba json encoded – retezec

JazeX
Člen | 10
+
0
-

Jasně, to mě mělo napadnout.
Díky.