Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Blokada przed floodowaniem
Forum PHP.pl > Forum > PHP
spenalzo
Mam taki oto problem:
jestem w trakcie pisania ksiegi gości i chcę zrobić blokadę przed nabijaniem wiadomości. Napisałem taki oto kod, ale coś nie działa, bo cały czas się pokazuje "Musisz poczekać 30 sekund aby dodać kolejny wpis."
oto kod:
[php:1:a34fbe0691]<?php
if(empty($HTTP_SESSION_VARS["ostatni"]))
{
$last=time();
}
else
{
$last=$HTTP_SESSION_VARS["ostatni"];
}

if(floor(time()-$last)>30)
{
$ostatni=time();
session_register("ostatni");
// instrukcje
}
else
{
echo "<br><b>Musisz poczekać ".abs(floor((time()-$last)-30))." sekund aby dodać kolejny wpis.</b>";
}
?>[/php:1:a34fbe0691]
Co tu może być nie tak?
Jabol
zrób to na cookie, bo coś ci mi się wydaje, że przy nowych sesjach twój kod się wywala
albo przy nowych sesjach nie sprawdzaj tego warunku

//edit
nie, coocie nic nie pomoże. Po prostu nie sprawdzaj tego warunku przy nowych sesjach
KaMeLeOn
Nie potrzebna ci funkcja floor()...
Ona zaokrągla ułamki, a time() zwraca int...
spenalzo
Cytat
nie, coocie nic nie pomoże. Po prostu nie sprawdzaj tego warunku przy nowych sesjach

A nawet działa :-) Odlicza czas, teraz tylko musze napisać warunek który nie daje użytkownikowi cookie, jeśli był pierwszy raz.

Cytat
Nie potrzebna ci funkcja floor()...

No fakt, po prostu floor daje z przyzwyczajenia :-) BTW: ona nie zaokrągla ułamków, jedynie obcina częsci ułąmka po kropce.
KaMeLeOn
Cytat
BTW: ona nie zaokrągla ułamków, jedynie obcina częsci ułąmka po kropce.

Inaczej mówiąc zaokrągla w dół... :wink:
Jabol
Cytat
BTW: ona nie zaokrągla ułamków, jedynie obcina częsci ułąmka po kropce.
i kropke też winksmiley.jpg
spenalzo
Cytat
Inaczej mówiąc zaokrągla w dół...

No, można na to też spojrzeć w ten sposób :-)

A oto rozwiązanie, jakby ktoś był zainteresowany:
[php:1:8890bf8e4e]<?php
if(!empty($HTTP_POST_VARS["pole"]["tresc"]) && empty($HTTP_COOKIE_VARS["ostatni"]))
{
setcookie("ostatni",time());
}
if(!empty($HTTP_POST_VARS["pole"]["tresc"]) && ((time()-$HTTP_COOKIE_VARS["ostatni"])>35))
{
setcookie("ostatni");
setcookie("ostatni",time());
}
?>

treść strony
html itd.

<?

if(empty($HTTP_COOKIE_VARS["ostatni"]))
{
$last=time();
}
else
{
$last=$HTTP_COOKIE_VARS["ostatni"];
}

if(floor(time()-$last)>30)
{
// instrukcje
}
else
{
echo "<br><b>Musisz poczekać ".abs((time()-$last)-30)." sekund aby dodać
kolejny wpis.</b>";
}
?>[/php:1:8890bf8e4e]
spenalzo
Cytat
musze napisać warunek który nie daje użytkownikowi cookie, jeśli był pierwszy raz.

No właśnie i nadal mam problem z tym. Wszystko działa jak należy, ale gdy użytkownik po raz pierwszy chce napisać jakąś wiadomość to i tak wyświetla mu się "Musisz poczekać...." - przy następnych jest już ok. Jak to zrobic?
cahe
Cytat
Cytat
musze napisać warunek który nie daje użytkownikowi cookie, jeśli był pierwszy raz.

No właśnie i nadal mam problem z tym. Wszystko działa jak należy, ale gdy użytkownik po raz pierwszy chce napisać jakąś wiadomość to i tak wyświetla mu się "Musisz poczekać...." - przy następnych jest już ok. Jak to zrobic?


Tu jest błąd:
[php:1:2063f228ba]<?php
if(empty($HTTP_COOKIE_VARS["ostatni"]))
{
$last=time();
}
?>[/php:1:2063f228ba]

Jeśli wchodzi i zapisuje się po raz pierwszy to cookie jeszcze nie działa (dopiero po przeładowaniu strony zacznie) - więc gość automatycznie nie może się dopisać, bo nadajesz mu jako ostatni czas dopisywania aktualny czas :-).
spenalzo
Kurde, jaki ze mnie osioł :-) Myślałem, kombinowałem i cudowałem z ciastkami jak zrobić, żeby za pierwszym razem nie pojawiał się komunikat, że trzeba czekać xx sekund na dodanie.
A na najprostsze rozwiązanie nie wpadłem
[php:1:887edbaccc]<?php
if(empty($HTTP_COOKIE_VARS["ostatni"]))
{
$last=0;
}
else
{
$last=$HTTP_COOKIE_VARS["ostatni"];
}

?>[/php:1:887edbaccc]
cahe
Cytat
[php:1:e39c7ca936]<?php
if(empty($HTTP_COOKIE_VARS["ostatni"]))  
{  
$last=0;  
}  
else  
{  
$last=$HTTP_COOKIE_VARS["ostatni"];  
}  

?>[/php:1:e39c7ca936]


No i teraz jest git ;-)
Qrzysio
rolleyes.gif Moze mi ktos popwiedzieć co mam wziąć i gdzie wstawić?
BzikOS
Cytat
rolleyes.gif Moze mi ktos popwiedzieć co mam wziąć i gdzie wstawić?

Weź się w garść i wstaw się za spenem.
Sm0key
a jak nie ma cookies wlaczonych skrypt padnie z cookies dry.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.