Body zdarma Java týden
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Diskuze: Zobrazení řetězce z PHP v JS

Aktivity (2)
Avatar
gorri
Člen
Avatar
gorri:12. září 12:46

Zdravím všechny zkušenější.
Měl bych dotaz. Měl jsem v DB uložený kód k měření návštěvnosti (analytics). Uložil jsem si do DB čistě jen číslo pro měření "UA-123456689-0" a v kódu stránky jsem měl

<script type="text/javascript">
var kod = <?php echo json_encode(htmlspecialchars($meta['analytics'])); ?>;
var _gaq = _gaq || [];
_gaq.push(['_setAccount', kod]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();</script>

Jak jsem zjistil, tak tento měřící kód už nějak nefunguje, tak jsem ho nahradil novým. Nicméně u něj už mi nejde vypsání čísla pro měření z DB ale musí tam být "natvrdo".
Věděl by prosím někdo o nějaké vychytávce? Nechce se mi pokaždé když něco upravím na stránkách dávat pozor abych náhodou nepřepsal měřící kód.

Děkuji moc za rady

Zkusil jsem: Google a různé úpravy měřícího scriptu z GA podle mé staré verze.

Chci docílit: Vypsání čísla pro měření v GA z DB přes PHP

Editováno 12. září 12:48
Odpovědět 12. září 12:46
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
gorri
Člen
Avatar
gorri:12. září 13:29

Tak se omlouvám za zbytečné otravování.
Už jsem na to přišel. Kdyby někdo měl stejný problém, tak tady je řešení

<!-- Global site tag (gtag.js) - Google Analytics -->
<script>
var kod = decodeURIComponent("<?php echo rawurlencode(příkaz na vypsání třeba z DB); ?>");
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=kod"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', kod);
</script>

Otestováno a funguje. :-)

Nahoru Odpovědět 12. září 13:29
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12. září 15:04

To je nesmysl. Oboje

var kod = <?php echo json_encode(htmlspecialchars($meta['analytics'])); ?>;
var kod = decodeURIComponent("<?php echo rawurlencode(příkaz na vypsání třeba z DB); ?>");
// rawurlencode - php kodovani do urladresy
// decodeURIComponent - js dekodovani url

<?php
$value = "příkaz na vypsání třeba z DB"; // php string
$value =  htmlspecialchars($value, ENT_QUOTES); // php string upraveny pro html - potrebujes nahradit hlavne " za &quot;
?>
var kod = "<?php echo $value; ?>";

Jeste jinak. Rikas, ze mas hodnotu UA-123456689-0.

V php bys to zapsal takto:

<?php $value = "UA-123456689-0"; /* protoze je to string */ ?>

V javascriptu zas takto:

<script>
value = "UA-123456689-0";
</script>

Kdyby tam byli parazitni znaky \"\<\> (bez lomitek), tak

<script>
value = "UA-123456689-0\"<>";
value = 'UA-123456689-0"<>';
</script>
<?php
$value = "UA-123456689-0\"<>";
$value = 'UA-123456689-0"<>';

No, a kdyz to pretahujes z php do html kodu, tak htmlspecialchars, aby ses zbavil \<\>.
Kdyz to pretahujes do dvojitych uvozovek, tak tam potrebujes se uvozovek zbavit, aby ti tam nenastalo neco takoveho

value = "UA-123456689-0"<>";
value = "UA-123456689-0\"<>"; - bud tu uvozovku zalomitkovat
value = "UA-123456689-0&quot;<>"; - nebo prevest na &quot;, coz by mel html dekoder spravne dekodovat,
// hlavne to potrebujes do js kodu , ktery je soucasti html
<span onclick=" neco ">
<span onclick=" value = 'A-123456689-0&quot;<>'; ">
<span onclick=" value = 'A-123456689-0"<>'; "> tohle by dopadlo pro html asi takto
<span onclick=" value = 'A-123456689-0" nejaky_nesmysl_<>'; ">
<span onclick="neco" nejaky_nesmysl_<>'; ">

Jinymi slovy, mozna by ti bohate stacilo

var kod = "<?php echo "UA-123456689-0"; ?>";
//var kod = "<?php echo "phpstring"; ?>"; // "phpstring
//var kod = "jstring"; // "jstring";

Zkousel jsi v prohlizeci nekdy kliknout Zobrazit-zdrojovy-kod? Ukaze ti htm kod, jaky dostal ze serveru prohlizec, jaky mu server poslal, vygeneroval z tveho php.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 12. září 15:04
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
gorri
Člen
Avatar
Odpovídá na Peter Mlich
gorri:12. září 15:25

Tak to je dobrá sranda. :-D
Toto mě nenapadlo. Zkoušel jsem to pořád s htmlspecialchars bez echo. Nicméně ano. Zobrazilo se mi to vždy. Nepíšu web první den ;-)
Takže CTRL+U znám a dokonce i F12. Ale díky.
Toto funguje taky. A je to i jednodušší.

Nahoru Odpovědět 12. září 15:25
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13. září 7:39

Ty tam nemas v tom prvnim hlavne vozovky pro javascript. Ty mas potom v tom druhem kodu, ale temer naprosto zbytecne ty funkce.

 
Nahoru Odpovědět 13. září 7:39
Avatar
gorri
Člen
Avatar
Odpovídá na Peter Mlich
gorri:13. září 9:37

Jo to jsem si pak taky všimnul ve zdrojáku. Ale kupodivu to fungovalo i tak. Navštívil jsem si stránky z mobilu a normálně mi to zaznamenalo. Však to kdyžtak zkus. Za test nic nedáš. ;-)

Nahoru Odpovědět 13. září 9:37
Když vím, tak poradím. Nikdo neví všechno :-)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.