Diskuze: počítadlo kliknutí na odkaz
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 34 zpráv z 34.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Můžeš to řešit tak, že místo přímého odkazu budeš mít něco
jako:
odkaz.php?url=www.cilovy-web.cz
V souboru odkaz.php můžeš mít nějaký takovýto kód:
if (isset($_GET["url"])) {
$log = fopen("./log.txt", "a");
fwrite($log, "\n".$_GET["url"]);
fclose($log);
header("Location: http://".$_GET["url"]);
exit();
} else {
echo "Chyba";
}
Případně je dobré udělat si seznam povolených adres a provádět kontrolu.
Pokud bys z nějakého důvodu potřeboval, aby na cílovou stránku vedl přímý odkaz, můžeš to zajistit JavaScriptem. => Nebude to funkční, když bude JS vypnutý:
<a href="http://www.cilova-stranka.cz" onclick="loguj(this.url);">Odkaz</a>
<script>
function loguj(url) {
var i = new Image();
i.src = "logovani.php?odkaz="+url;
}
</script>
A v logovani.php mít podobný script, jako je výše, jen bez přesměrování.
něco zkusím, ale myslím že by to mohl být ten první příklad, akorát teda musím vytvořit php soubory pro ten daný odkaz a aby to zaznamenalo
Vytvoříš přece jen jeden soubor, který bude zapisovat různé hodnoty, podle parametru v adrese.
dal jsem tam ten první příklad, a nefunguje mi to, do header jsem přidal tu stránku na kterou by to mělo přesměrovat, a nic to neudělalo
if (isset($_GET["url"])) {
$log = fopen("./log.txt", "a");
fwrite($log, "\n".$_GET["url"]);
fclose($log);
header("Location: http://".$_GET["url"]);
exit();
} else {
echo "Chyba";
}
Do parametru url vkládáš kompletní adresu i s "http://" na začátku a následně k ní přiřadíš další "http://". Uprav ten řádek s header na
header("Location: ".$_GET["url"]);
takže jak je to "url" tak tam vložím celou adresu tý stránky? nebo jak?
Jen se zeptám, jaké máš znalosti PHP?
V tom skriptu bys nic měnit nemusel, jen si někde vytvoříš odkaz:
<a href="odkaz.php?url=www.cilova-stranka.cz>Odkaz</a>"
Do souboru se ti zapíše to, co je za tím =.
Musíš mít nastavená práva zapisovat do adresáře, kde vytváříš ten
soubor.
zkušenosti s php nemám žádný 
Tak se nauč alespoň tohle: http://www.itnetwork.cz/php/zaklady
Naučit se to je určitě dobrý nápad, ale když tak to můžeš zatím
udělat takhle:
Vytvoř si v kořenovém adresáři soubor odkaz.php
Do něho dej tento kód:
<?php
if (isset($_GET["url"])) {
// * Načtení souboru s definovanými adresami * //
$adresy = file("log/adresy.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (in_array($_GET["url"], $adresy)) { /* Pokud se adresa v parametru schoduje s některou v souboru */
$log = fopen("log/log.txt", "a"); // Otevře se soubor s logy
fwrite($log, "\n".$_GET["url"]."\t".date("Y-m-d H:i:s")."\t".$_SERVER["REMOTE_ADDR"]); // zapíše se nový záznam
fclose($log); // soubor se zavře
header("Location: http://".$_GET["url"]); // přesměruje na cílovou adresu
exit();
}
exit("Neplatná adresa");
}
Pak si v kořenovém adresáři vytvoř složku: log, a
nastav jí práva pro čtení a zápis.
**a v této složce soubor: **adresy.txt
Do něho napiš jednotlivé adresy (bez http://), na které budeš odkazovat,
každou na nový řádek.
na webu si tvoř odkazy, které chceš logovat, ve tvaru:
<a href="odkaz.php?url=tu-adresu-co-je-v-souboru-adresy-txt">Odkaz</a>
Například
<a href="odkaz.php?url=www.seznam.cz">Odkaz</a>
Ve složce log se ti pak vytvoří soubor log.txt, ve kterém budeš mít jednotlivé přístupy.
zkusil jsem to, ale nepodporuje to asi server, píše mi to
Přístup odmítnut!
Nemáte právo pro přístup k požadovanému objektu. Buď je chráněn proti
čtení, nebo není serverem čitelný.
Pokud si myslíte, že se jedná o chybu na straně serveru, kontaktujte, prosím, naší technickou podporu.
Error 403
Kde hostuješ?
Nastavil jsi té složce práva? Vytvořil jsi ten soubor adresy.txt?
web hostuje na web4u
práva tý složky jsem zadal, vytvořil jsem txt soubor adresy a taky ten log.txt
Tak to mi rozum nebere. Vypadá to, jako kdybys měl někde nastavená
špatně práva, nebo neexistoval nějaký soubor. Jinak by to mělo
fungovat.
Když tak si ještě zkontroluj, že složka log má práva 777,
ve složce log je soubor adresy.txt, soubor odkaz.php je na stejné úrovni jako
složka log a log.txt smaž.
Jinak fakt nevím, kde je chyba.
Ne, tím jsem ti chtěl poradit, že na to co potřebuješ, bys mohl bez potíží použít Google Analytics
http://www.google.com/analytics/
POkud chceš vyhodnocovat reklamu, je to opravdu špičkový nástroj. Nemusíš alespoň znovu vymýšlet kolo. A hlavně nic řešit na webhostingu.
Tady je myslím návod:
http://www.jakpsatweb.cz/…alytics.html
práva tý složky mám správně, ale nevím jestli jsem dal v tom programu který využívám file zilla, jestli jsem to zaškrtnul správně všechny tři řádky, nechal jsem prázdný u každýho poslední pole
a mám to vytvořený podle rady
/log (složka) nastavil jsem práva
/log/adresy.TXT (sem jsem napsal adresy)
/odkazy.php
Ten soubor se jmenuje adresy.TXT, nebo
adresy.txt?
Mělo by to být s malou příponou.
v programu mi to vidí že to mám s velkým .TXT
zadal jsem ještě úplnou adresu na server, a už mi to píše
Upozornění : Nelze upravit informace záhlaví - záhlaví již poslal (výstup začal v /html/odkaz.php:10) v /html/odkaz.php on line 20
jinak když kliknu na ten odkaz, tak se mi na účet přidá nový soubor log.TXT, ale na stránku to nepřesměruje
Nesmíš před tím vypisovat žádný text.
jaký text? to tam mám dát jenom bez toho <html> atd, nebo jak?
Před tím nesmí být vypsaný ŽÁDNÝ text, ať už přes PHP nebo přes HTML.
takže mám jenom vložit čistě toto?
if (isset($_GET["url"])) {
// * Načtení souboru s definovanými adresami * //
$adresy = file("/html/log/adresy.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (in_array($_GET["url"], $adresy)) { /* Pokud se adresa v parametru schoduje s některou v souboru */
$log = fopen("/html/log/log.txt", "a"); // Otevře se soubor s logy
fwrite($log, "\n".$_GET["url"]."\t".date("Y-m-d H:i:s")."\t".$_SERVER["REMOTE_ADDR"]); // zapíše se nový záznam
fclose($log); // soubor se zavře
header("Location: ".$_GET["url"]); // přesměruje na cílovou adresu
exit();
}
exit("Neplatná adresa");
}
teď už mi to píše jenom chyba 404, ale nepřesměruje
<?php tam být má.
Na jaké jsi adrese, když ti to vyhodí tu 404?
Tak se koukni do logů a zjisti, která ta adresa tuhle chybu vyvolala.
(Mimochodem, je lepší 404 řešit tak, že adresa zůstává a jen posíláš
hlavičku 404.)
A nebo napiš, jak vypadá ten odkaz.
Chyba je v umazání "http://" na řádku 10.
(Ať i ostatní vidí, kde byla chyba.)
Zobrazeno 34 zpráv z 34.