Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Blokada przed floodowaniem
spenalzo
post
Post #1





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Jabol
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #3





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie potrzebna ci funkcja floor()...
Ona zaokrągla ułamki, a time() zwraca int...
Go to the top of the page
+Quote Post
spenalzo
post
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #5





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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:
Go to the top of the page
+Quote Post
Jabol
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


Cytat
BTW: ona nie zaokrągla ułamków, jedynie obcina częsci ułąmka po kropce.
i kropke też (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
spenalzo
post
Post #7





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
spenalzo
post
Post #8





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
cahe
post
Post #9





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 22.03.2003

Ostrzeżenie: (0%)
-----


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 :-).
Go to the top of the page
+Quote Post
spenalzo
post
Post #10





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
cahe
post
Post #11





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 22.03.2003

Ostrzeżenie: (0%)
-----


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 ;-)
Go to the top of the page
+Quote Post
Qrzysio
post
Post #12





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 22.06.2003
Skąd: Ostrołęka

Ostrzeżenie: (0%)
-----


(IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) Moze mi ktos popwiedzieć co mam wziąć i gdzie wstawić?
Go to the top of the page
+Quote Post
BzikOS
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

Ostrzeżenie: (0%)
-----


Cytat
(IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) Moze mi ktos popwiedzieć co mam wziąć i gdzie wstawić?

Weź się w garść i wstaw się za spenem.
Go to the top of the page
+Quote Post
Sm0key
post
Post #14





Grupa: Zarejestrowani
Postów: 69
Pomógł: 1
Dołączył: 26.02.2004
Skąd: kielce. //Świętokrzyskie

Ostrzeżenie: (0%)
-----


a jak nie ma cookies wlaczonych skrypt padnie z cookies (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 00:26