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.

Člen

Zobrazeno 34 zpráv z 34.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.