Jump to content
php.lv forumi

spam


Gacha

Recommended Posts

Man iešāvās prātā tāda ideja, kas varētu noderēt visiem. Tas ir spam protection.

Nu tu ieposto jaunu ziņu vai komentāru un ar php uztaisās cepums uz 30 sec bet ja gribi vēl postot tad ar javascript varētu parbaudīt vai tas cepums ir un ja ir tad izmet alertu, ka vēl nedrīkst.

 

Meklēju googlē un vēl citur bet neko sakarīgu neatradu. Un cik skatījos, tad man javascript valoda liekas sarežģīta. Varbūt kāds kopējā labuma vārdā varētu palīdzēt?

Link to comment
Share on other sites

labāk nevis cookie, bet $_SESSION

un tur var piem ieglabāt $_SESSION['lastpost']=gmmktime()

pēc tam pie formas izvada pārbaudīt:

echo '<input id="sub" value="post" type="submit"';

if (gmmktime()-$_SESSION['lastpost' ]<30)

echo ' disabled="true"';

echo ' />';

tādejādi ūzeris nevarēs nosabmitot formu.

Bet lai tas tomēr notiktu vajadzīgajā laikā, var uzlikt JS:

[cut]

<script language="javascript">

var isDOM=(document.getElementById?true:false);

var isIE4=((document.all&&!isDOM)?true:false);

var isNS4=(document.layers?true:false);

function object(id)

{

if(isDOM) return document.getElementById(id);

if(isIE4) return document.all[id];

if(isNS4) return document.layers[id];

}

function disLock()

{

obj=object('sub');

obj.disabled=false;

}

setTimeout('disLock()',<?php echo gmktime()-$_SESSION['lastpost']?>*1000);

</script>

<noscript>

You can post anything only after ,<?php echo gmktime()-$_SESSION['lastpost']?> have passed.

</noscript>

[/cut]

Link to comment
Share on other sites

Ja dribi bez javas tad, kad useris postee zinju, tad iemet DB arii laiku un usera IP un tad ja postee zinju, tad panjem no DB peedeejo laiku un usera IP. Tad asliidzini DB laiku ar esosho un ja tas ir mazaax par 30 min un peedeejas iP sakriit tad uztaisi exit; un veelkaadus pazinjojumus - ko vien veelies ;)

Nu itkaa normaali. vajadzeetu straadaa. Tad varees useris sleegt vai nesleegt javu ;)

Edited by Klez
Link to comment
Share on other sites

Venom Viss jau būtu ok, bet žēl, ka no sesijām es neko nerubiju. Un pagaidām man nav laika to mācīties, bet saprotu, ka tās ir ļoti noderīgas un daudzfunkcionālas. Bet man liekas, ka darīšu vai nu ar cepumiem vai ar DB pēdējo datumu.

 

Kukijs - Kapēc man ir tā, ja uzlieku kukiju uz pim 20min tad vinjsh izdzēšas tikai pēc 20min , bet neizdzēšas, ja aizver brouseri.

Link to comment
Share on other sites

Venom Viss jau būtu ok, bet žēl, ka no sesijām es neko nerubiju. Un pagaidām man nav laika to mācīties, bet saprotu, ka tās ir ļoti noderīgas un daudzfunkcionālas. Bet man liekas, ka darīšu vai nu ar cepumiem vai ar DB pēdējo datumu.

 

Kukijs - Kapēc man ir tā, ja uzlieku kukiju uz pim 20min tad vinjsh izdzēšas tikai pēc 20min , bet neizdzēšas, ja aizver brouseri.

Nez, man vienmēr gadās otrādi, kad vajag iekš cūkjiem saglabāt vairākdimensiju masīvu. No sesijām nav daudz jāsaprot, tikai:

1) lai uzsāktu/atsāktu sessiju, vaj'g pirms jebkāda izvada uzlikt session_start() [ok, izņēmums ja uzlikts output_buffering=on; bet tas tā retāk]

2) viss kas tālāk tiek iebvietots iekš masīva $_SESSION būs pieejams arī pēc lapas pārlādes/no lapas atvasinātai lapai (kad uzspiež Ctrl+N), ja vien tā atrodas uz tā paša hosta un klientam nav krasi mainījies IP; netika aizvērts brousera logs (vairāklogu brouseriem [Opera/MyIE/Mozilla] - viss brouseris).

3) lai slēgtu sesiju [un dzēstu tajā atrodošos info] var vai nu taisīt session_destroy(), vai unset($_SESSION); [pēdejais tikai iztīra]

4) atkarībā no konfiga, php dos priekšroku visu, kas tiek glabāt iekš $_SESSION redirektēt uz $_COOKIE

5) iekš cūkija var noglabāt sessijas identifikātoru, kas nolasāms ar session_id() un tad pirms session_start(); pamēģināt to atsākt ar session_id($_COOKIE['vecais_SID']); - tad var nolasīt iepriekš sessijā ieglabāto info pat tad, ja "lietotājs" aizvēra brouseri (un pat izslēdza datoru), ja vien nav pagājis pārāk daudz laika un sessijas failiņš tika nodzēsts no servera [var arī nokonfigurēt serveri, lai viš' sessijas glabā iekš RAMa - tad sessiju varēs atsākt pat pēc gada, ja vien serveris nav ticis izslēgts]

Link to comment
Share on other sites

  • 3 months later...
×
×
  • Create New...