Jump to content
php.lv forumi

Recommended Posts

Posted

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?

Posted

NU pats es varu to uztaisīt tikai ar php. Bet nepatīk, ka lapa pārlādējās.

Posted

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]

Posted (edited)

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
Posted

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.

Posted

Asprātīgi! Atceries un kautkur pieraksti šo joku. Varbūt vēl gadās kaut kur izrādīt savu asprātību! :D

Posted
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]

Posted

Principu apmēram sapratu, tagad tik jaatrod labs piemērs vai turtoriālis un var sākt čakarēties. :P

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