Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: počítadlo kliknutí na odkaz

PHP PHP počítadlo kliknutí na odkaz American English version English version

Aktivity (1)
Avatar
martinstejskal15:30.11.2014 11:12

potřeboval bych nějakej kód, který by mi počítal počet kliknutí na odkaz, a následně to zapsalo do txt souboru, bylo by to pro více odkazů, pro daný odkaz, který bych potřeboval měřit, kvůli reklamám na webu, aby jsem potom mohl rozesílat přes e-mail, těm co si tu reklamu na webu koupily.

 
Odpovědět 30.11.2014 11:12
Avatar
Tonda Kozák
Člen
Avatar
Tonda Kozák:30.11.2014 16:10

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í.

 
Nahoru Odpovědět 30.11.2014 16:10
Avatar
Odpovídá na Tonda Kozák
martinstejskal15:30.11.2014 16:23

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

 
Nahoru Odpovědět 30.11.2014 16:23
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na martinstejskal15
Tonda Kozák:30.11.2014 16:37

Vytvoříš přece jen jeden soubor, který bude zapisovat různé hodnoty, podle parametru v adrese.

 
Nahoru Odpovědět 30.11.2014 16:37
Avatar
martinstejskal15:30.11.2014 16:42

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["ur­l"])) {
$log = fopen("./log.txt", "a");
fwrite($log, "\n".$_GET["url"]);
fclose($log);

header("Location: http://".$_GET["ur­l"]);
exit();
} else {
echo "Chyba";
}

 
Nahoru Odpovědět 30.11.2014 16:42
Avatar
Fredep
Redaktor
Avatar
Odpovídá na martinstejskal15
Fredep:30.11.2014 17:17

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"]);
Nahoru Odpovědět 30.11.2014 17:17
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
martinstejskal15:30.11.2014 17:30

takže jak je to "url" tak tam vložím celou adresu tý stránky? nebo jak?

 
Nahoru Odpovědět 30.11.2014 17:30
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na martinstejskal15
Tonda Kozák:30.11.2014 18:53

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.

 
Nahoru Odpovědět 30.11.2014 18:53
Avatar
martinstejskal15:30.11.2014 20:10

zkušenosti s php nemám žádný :)

 
Nahoru Odpovědět 30.11.2014 20:10
Avatar
Nahoru Odpovědět 30.11.2014 20:40
2x piš, jednou debuguj
Avatar
Tonda Kozák
Člen
Avatar
Tonda Kozák:1.12.2014 15:12

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.

Editováno 1.12.2014 15:15
 
Nahoru Odpovědět 1.12.2014 15:12
Avatar
Odpovídá na Tonda Kozák
martinstejskal15:1.12.2014 19:41

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

 
Nahoru Odpovědět 1.12.2014 19:41
Avatar
hanpari
Redaktor
Avatar
Odpovídá na martinstejskal15
hanpari:1.12.2014 19:54

Google analytics :)

 
Nahoru Odpovědět 1.12.2014 19:54
Avatar
Odpovídá na hanpari
martinstejskal15:1.12.2014 20:03

furt to samý mi píše

 
Nahoru Odpovědět 1.12.2014 20:03
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na martinstejskal15
Tonda Kozák:1.12.2014 20:29

Kde hostuješ?
Nastavil jsi té složce práva? Vytvořil jsi ten soubor adresy.txt?

Editováno 1.12.2014 20:31
 
Nahoru Odpovědět 1.12.2014 20:29
Avatar
Odpovídá na Tonda Kozák
martinstejskal15:1.12.2014 21:18

web hostuje na web4u

práva tý složky jsem zadal, vytvořil jsem txt soubor adresy a taky ten log.txt

 
Nahoru Odpovědět 1.12.2014 21:18
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na martinstejskal15
Tonda Kozák:1.12.2014 21:37

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.

 
Nahoru Odpovědět 1.12.2014 21:37
Avatar
hanpari
Redaktor
Avatar
Odpovídá na martinstejskal15
hanpari:1.12.2014 21:57

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

 
Nahoru Odpovědět 1.12.2014 21:57
Avatar
Odpovídá na Tonda Kozák
martinstejskal15:1.12.2014 22:43

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

 
Nahoru Odpovědět 1.12.2014 22:43
Avatar
Tonda Kozák
Člen
Avatar
Tonda Kozák:2.12.2014 6:29

Ten soubor se jmenuje adresy.TXT, nebo adresy.txt?
Mělo by to být s malou příponou.

 
Nahoru Odpovědět 2.12.2014 6:29
Avatar
martinstejskal15:2.12.2014 8:43

v programu mi to vidí že to mám s velkým .TXT

 
Nahoru Odpovědět 2.12.2014 8:43
Avatar
martinstejskal15:2.12.2014 8:56

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

 
Nahoru Odpovědět 2.12.2014 8:56
Avatar
martinstejskal15:2.12.2014 9:01

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

 
Nahoru Odpovědět 2.12.2014 9:01
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na martinstejskal15
Daniel Vítek:2.12.2014 10:07

Nesmíš před tím vypisovat žádný text.

 
Nahoru Odpovědět 2.12.2014 10:07
Avatar
Odpovídá na Daniel Vítek
martinstejskal15:2.12.2014 11:01

jaký text? to tam mám dát jenom bez toho <html> atd, nebo jak?

 
Nahoru Odpovědět 2.12.2014 11:01
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na martinstejskal15
Daniel Vítek:2.12.2014 11:09

Před tím nesmí být vypsaný ŽÁDNÝ text, ať už přes PHP nebo přes HTML.

 
Nahoru Odpovědět 2.12.2014 11:09
Avatar
martinstejskal15:2.12.2014 11:27

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");
}
 
Nahoru Odpovědět 2.12.2014 11:27
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na martinstejskal15
Tonda Kozák:2.12.2014 15:55

Jo, přesně. Jen to.

 
Nahoru Odpovědět 2.12.2014 15:55
Avatar
Odpovídá na Tonda Kozák
martinstejskal15:2.12.2014 16:02

a taky bez toho <?php

?>

 
Nahoru Odpovědět 2.12.2014 16:02
Avatar
Odpovídá na Tonda Kozák
martinstejskal15:2.12.2014 16:04

teď už mi to píše jenom chyba 404, ale nepřesměruje

 
Nahoru Odpovědět 2.12.2014 16:04
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na martinstejskal15
Tonda Kozák:2.12.2014 16:37

<?php tam být má.

Na jaké jsi adrese, když ti to vyhodí tu 404?

 
Nahoru Odpovědět 2.12.2014 16:37
Avatar
Odpovídá na Tonda Kozák
martinstejskal15:2.12.2014 16:40

jsem na svojí chybový stránce 404

 
Nahoru Odpovědět 2.12.2014 16:40
Avatar
Tonda Kozák
Člen
Avatar
Tonda Kozák:2.12.2014 16:42

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.

 
Nahoru Odpovědět 2.12.2014 16:42
Avatar
Tonda Kozák
Člen
Avatar
Tonda Kozák:2.12.2014 17:05

Chyba je v umazání "http://" na řádku 10.
(Ať i ostatní vidí, kde byla chyba.)

 
Nahoru Odpovědět 2.12.2014 17:05
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 34 zpráv z 34.