logo
08.12.2019 11:50
1
Hezký den,

pro jednu microsite potřebuju, aby začalo hrát náhodné audio (jedno z 19ti) pro uživatele, který přijde na web. Pokud se tam ale vrátí kdykoliv v budoucnosti, potřebuji, aby se spustilo to stejné audio, jako při jeho první návštěvě.

Napadlo mě nějaké ukládání uživatelů, ale přijde mi to docela složité a tak jsem chtěl vše navázat na IP adresy. Udělat 19 podmínek od do, podle čísla IP adresy.

Předpokládám, že je to takto reálné a že půjde přes javascript vybrat pouze první čísla před tečkou nebo nějak po druhou tečku. Nikde jsem ale nenašel, jaká je vlastně v praxi range IP adres. Našel jsem vše teoreticky, ale jaké jsou vlastně vydané IP adresy v praxi tak, aby to zhruba sedělo, že se všechna audia pustí přibližně ve stejném poměru.

Díky za pomoc,
Michal

Co se právě děje na Webtrhu?

08.12.2019 11:57
2
To mi přijde dost nepraktický. V nějakém rozsahu můžou být miliony uživatelů a nějakém skoro nikdo. Nebylo by dostačující to řešit jednoduše pomocí cookies? Že by se to poprvé spustilo náhodně a do cookies se uložilo, o jaké audio se jednalo?
08.12.2019 12:00
3
Sis to vymyslel hrozně složité. Normálně čísla z ip sečti a rozhoduj se podle zbytku po dělení 19 :-)
08.12.2019 12:01
4
Asi to bude jednodušší, ale cookies zase můžou uživatelé smazat, možná to ale postačí.

---------- Příspěvek doplněn 08.12.2019 v 12:03 ----------

Původně odeslal eqeq
Sis to vymyslel hrozně složité. Normálně čísla z ip sečti a rozhoduj se podle zbytku po dělení 19 :-)
Tak to zní luxusně, to mě opravdu mohlo napadnout :D
08.12.2019 12:14
5
K cemu delat neco, proti cemu jdou samotny prohlizece a zacinaji blokovat automaticke spousteni jakychkoliv audio-video veci ?

Rozdeleni podle prvni casti adresy je nesmysl diky rozlozeni IP adres ve svete - mel bys to pak naprosto nerovnomerny (spousta starych ci velkych operatoru vlastni cele /8 (tj CISLO.x.x.x). A rekl bych ze vetsina prefixu je urcena spise pro serverovy sluzby nez koncove uzivatele v domacnosti. Takze to reseni se sectenim a delenim je idelani :) V PHP je na ten soucet i fce: ip2long ... takze pak staci jen delit a pocitat se zbytkem :)
08.12.2019 12:18
6
Původně odeslal gransy
K cemu delat neco, proti cemu jdou samotny prohlizece a zacinaji blokovat automaticke spousteni jakychkoliv audio-video veci ?

Rozdeleni podle prvni casti adresy je nesmysl diky rozlozeni IP adres ve svete - mel bys to pak naprosto nerovnomerny (spousta starych ci velkych operatoru vlastni cele /8 (tj CISLO.x.x.x). A rekl bych ze vetsina prefixu je urcena spise pro serverovy sluzby nez koncove uzivatele v domacnosti. Takze to reseni se sectenim a delenim je idelani :) V PHP je na ten soucet i fce: ip2long ... takze pak staci jen delit a pocitat se zbytkem :)
Je to PFko pro klienta, takže omezená trvanlivost a to spouštění bude přes button. Je fajn, že je pro to vytvořená i funkce, tím to bude jednodušší :)
08.12.2019 12:34
7
Jestli se vám nemusí uživatelé registrovat a tak proč to skutečně neuložit třeba do LocalStorage na straně klienta? Na takové blbůstky je to ideální. Nicméně za audio na webu které se mi pustí automaticky ihned web opouštím.
08.12.2019 12:59
8
s tou ip pouzor na ipv6, tam sečtení nebude fungovat, horních 64 bitů adresy se generuje náhodně a při další návštěvě to může být jiné.

Za mě cookie je přesně k tomuhle určeno, vybrat náhodnou skladbu a do cookies uložit její číslo.

Tyhle všechny metody ale selhávají pokud uživatelé používají více zařízení. Píšeš o PF, lze předpokládat, že odkaz na stránku budeš posílat, co již do odkazu zakomponovat číslo skladby?
08.12.2019 13:19
9
Původně odeslal TomášX
s tou ip pouzor na ipv6, tam sečtení nebude fungovat, horních 64 bitů adresy se generuje náhodně a při další návštěvě to může být jiné.

Za mě cookie je přesně k tomuhle určeno, vybrat náhodnou skladbu a do cookies uložit její číslo.

Tyhle všechny metody ale selhávají pokud uživatelé používají více zařízení. Píšeš o PF, lze předpokládat, že odkaz na stránku budeš posílat, co již do odkazu zakomponovat číslo skladby?
ipv6 bych ošetřil nějakým elsem, to by až tak nevadilo, že na jiném zařízení se jim přehraje něco jiného, to stejně nevyřeším. Ten odkaz bohužel nejde měnit, aby to nevypadalo, že byla puštěná hláška určená přímo pro ně.

---------- Příspěvek doplněn 08.12.2019 v 13:25 ----------

Ještě mi to nějak nechce komunikovat a píše, že "modulo" je undefined. Nicméně, když dám click mimo ready funkci, tak nefunguje ten click.

První log to vypíše bez problémů a druhý po kliku vyhodí tu chybu.

Kód:
$(document).ready(function () { 
            
$.getJSON("https://api.ipify.org/?format=json", function(e) {
    var myip = e.ip;     
    var mylong = ip2long(myip);
    var modulo = mylong % 19;
    console.log(modulo);
});
$( '.test' ).click(function() { 
    console.log(modulo);
});
});
Nakonec jsem vše upravil přes ty cookies.