Avatar
martinstejskal15:

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:

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:

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:

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:

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:

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:

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:

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:

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

 
Nahoru Odpovědět 30.11.2014 20:10
Avatar
Tonda Kozák
Člen
Avatar
Tonda Kozák:

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:

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
Avatar
 
Nahoru Odpovědět 1.12.2014 20:03
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na martinstejskal15
Tonda Kozák:

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:

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:

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:

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:

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:

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:

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

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

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:

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:

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:

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:

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:

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
 
Nahoru Odpovědět 2.12.2014 15:55
Avatar
 
Nahoru Odpovědět 2.12.2014 16:02
Avatar
Odpovídá na Tonda Kozák
martinstejskal15:

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:

<?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:

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:

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:

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.