Prosim poradi mi nekdo jak mam napsat, kdyz chci aby 1 IP adresa mohla poslat jenom 1 zpravu? Uz se s tim param 1 a pul dne....Pokusil jsem se to opatrit podobne jako anketu ale neslo to... Diky za pomoc...
co mě přijde jednoduchý, připisovat ip do souboru a při odesílání mailu z formuláře zkontrolovat, jestli tam už ta adresa není, nebo tak nějak podobně
podle toho co je na qwerz.wz.cz se mi zda spis ze se paras s html.. ale to je jedno..
musis ip zapsat do souboru nebo do databaze a pred poslanim mailu zjistit jestli tam uz nahodou neni..
nevim co ti trva tak dlouho.
No co tam vidis kdyz das qwerz.wz.cz to je asi nic protoze to mam jenom udelane aby tam nechodil nekdo kdo tam nema co delat a nezna celou cestu... Je to muj zkusebni web... Jinak neni to mail je to jenom zprava v navtsevni knize. A problem je nekde v tom a nemuzu ho najit:
$souboripp="jmena-ip.txt";
$aktualni = $REMOTE_ADDR;
if (isset($odpoved))
{
if (zjistiip($souborip, $aktualni))
{
$ipsoubor = fopen($souborip, "r"); //zapsání ip adresy odesílatele hlasu
$data = fread($ipsoubor, filesize($souborip)+10);
fclose($ipspoubor);
$write = $data.$aktualni."Đ";
$kam = fopen($souborip, "r+");
fwrite($kam,$write);
fclose($kam);
}
}
//funkce pro zjištění ip adresy
function zjistiip($souborip, $ip)
{
$ipsoubor = fopen($souborip, "r");
$data = fread($ipsoubor, filesize($souborip)+10);
fclose($ipsoubor);
$ipadresy = explode("Đ",$data);
if (in_array($ip, $ipadresy))
{
return false; //Pokud již bylo z dané ip adresy hlasováno
}
else
{
return true; // pokud nebylo z dané ip hlasováno
}
}
pravděpodobně hned na prvnim řádku.
prostě při odeslání toho mailu měj podmínku:
když soubor ip.txt NEobsahuje $REMOTE_ADDR -->
odešli mail
a zapiš $REMOTE_ADDR do ip.txt
else nic neodesílej
chyba je v tom ze tam ma $souboripp="jmena-ip.txt"; a vsude pouziva promennou $souborip.
..pro ty kdo to furt nevidi tam sou dve p
just-paja: Diky za radu ale porad to bude neco jineho...
Fatal error: Cannot redeclare zjistiip() (previously declared in /3w/wz.cz/q/qwerz/pokus/ankpet.php:131) in /3w/wz.cz/q/qwerz/pokus/ankpet.php on line 200
daneel: A odesliat musim protoze to neni mail ale uzivatel tam hodi jenom svuj podpis....
mas tam dvakrat funkci zjistiip(). jednou na radku 131 a podruhy na radku 200
2 Josef: tohle ma velmi jednoduche reseni, na nejaky externi soubor bych se vyprdnul, protozze to docela trva. nejlepsi je reseni tabulky v SQL.
Mas nekolik variant jak je nechat posilat. Bud jednou za den, nebo treba jednou za 24 hodin.
Jednou za den (od 0 do 24) jen vkladas jako jednu z bunek datum.
V pripade jednou za 24hodin, tam pak vkladas cas v sekundach a pak jen das podminku na zacatku scriptu, at to z databaze odstrani vsechny radky, ktere maji dane cislo (v sekundach) mensi nez 86400(sekund = 24hodin), takze neco jako if x>x-86400 smaz radky. Vyhoda je v rychlosti, mas to jen v par radcich.
Gismo: No rad bych to tak udelal i vypada to jednoduseji ale problem je ze nejsem schopny nic takoveho napsat...
Podle me je to podle IP naprd. Vyskytuje se uz hodne lokalnich siti kde se hooodne uzivatelu pripojuje pres jeden uzel. Takze tech hooodne lidi ma tudiz stejnou IP. Z toho vypliva ze by tu spravu poslal jeden a ostatni uz ne...
(doufam ze ste pochopili jak to myslim...) :)
Uz jsem tady jednou o preblemu s IP adresama psal a napsal jsem jednu radu. Vsechno se da vyresit, koukni na spodni link.
http://www.webzdarma.cz/forum/read.php?f=2&i=28667&t=28502
Devbon: Diky ale todle mi moc nepomuze protoze to co tam napsane je to mam, ale problem je v tom ze mam script pouzity v ankete, tam funguje dobre, ale potrebudu v tom samem smyslu hodit i do kolonky jmeno, kde se uzivatel podepise, ale aby mohl poslat jen jednou a nespamovat... Takze to napisu podobne jak tu anketu ale je problem ze nemuzes pouzit dvakrat stejny script... Tak nevim jak bych to mel napsat...
Rellik: Jo pochopil, ale pro moje ucely to staci a kdyz by se nekdo takovy nasel tak ho tam pripisu rucne.....
4 Josef: Radil bych ti použít cookies. Uživatel si je sice může smazat nebo upravit, ale obyčejné smrtelníky to nenapadne... Tím odradíš aspoň někoho. Ale se zákazy IP jsou opravdu problémy při připojení přes lokální síť (jako mám třeba já - je nás tu víc jak stovka na jediné IP adrese) - viz. příspěvek od Rellika.
Nebo - druhá možnost (lepší a náročnější) - použít session. Když uživatel pošle příspěvek, vytvoří se mu session id a když ta bude existovat, tak se prostě nepošle znova (jednoduchá podmínka). Když bude chtít takovýhle uživatel spamovat, musí pokaždé vypnout a zapnout prohlížeč, aby session přerušil...
K session více na: http://php.ftp.cvut.cz/manual/en/ref.session.php
No cookies pouzit nemuzu protoze si je smazou urcite... Jak jsem to udelal bez ochrany tak mi to nejdriv zaspamovali a pak mi to i hackli anketa v prd podpisy taky... Takze to asi tak udelat nemuzu.... Uvazuju ze bych to udelal tak ze bych tam dal cas za jak dlouho muzou poslat prispevek a dal bych tam vysoky cas treba 2 mesice... Zkusim si najit jak.... Anketu jsem mel udelanou jenom v poznamkovem bloku takze to pro ne asi nebyl problem... Priste budu vedet a udelam to v databazi... Nebo mam v nejak jinak?
Ale chapej, pokud jim nastavis na IP dva mesice, tak je to taky na nic, doporucuju cookies v kombinaci s pojistkou "opis pismena z obrazku" a pokud jsi tak paranoidni jak se zdas, tak doporucuji kontrolovat IP adresu a povolit stejnou pouze pokud posledni IP byla rozdilna, popripade urcity pocet poslednich byl rozdilny: tim se ochranis od automatu, hloupych spammeru a ty chytre donutis k pouziti 1-a vice IP podle tve volby, takze urcite ztrati zajem...
Doplnění k příspěvku od zavrazden.borec.cz:
Taky můžeš jako ještě komplexnější pojistku použít další atributy, které získáš z JavaScriptu, na porovnání , jestli je to ten samý uživatel. Použij nejen věci jako rozlišení, hloubku barev, ale taky rozšířený dialog verze prohlížeče (těch jsou třeba u MSIE tisíce typů), jazyk OS, atd., atd.... To si sice můžou změnit, ale v kombinaci s IP, cookies a sessions to bude jako Alcatraz...
Ahoj, na www.interval.cz vznikol celý seriál o identifikácii užívateľa, ale je to dosť rozsiahle, takže je to na dlho... Pozri na posledný diel, ten sa zaoberá identifikáciou prehliadača.
http://interval.cz/clanky/statistika-pristupu-v-php-detekce-prohlizece/