Hebo
(Jagiellonia24)
27 Styczeń 2010 18:08
#1
Witam! Chciałbym zrobić blokadę ip wysyłania tego formularza, chciałbym aby blokada trwała 1 minute. Może być do blokada ip jak i blokada ciasteczek.
<?php
if (count($_POST))
{
////////// USTAWIENIA //////////
$email = 'e-mail@e-mail.pl'; // Adres e-mail adresata
$subject = 'Dodaj fachowca'; // Temat listu
$message = 'Dziękujemy za zgłoszenie fachowca, wkrótce zostanie dodany'; // Komunikat
$error = 'Wystąpił błąd podczas zgłoszenia'; // Komunikat błędu
$charset = 'iso-8859-2'; // Strona kodowa
$ip = $_SERVER['REMOTE_ADDR'];
//////////////////////////////
$head =
"MIME-Version: 1.0\r\n" .
"Content-Type: text/plain; charset=$charset\r\n" .
"Content-Transfer-Encoding: 8bit";
$body = '';
foreach ($_POST as $name => $value)
{
if (is_array($value))
{
for ($i = 0; $i < count($value); $i++)
{
$body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
}
}
else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
}
echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
}
else
{
?>
Z góry dzięki za pomoc! Pozdrawiam!
jaką “blokadę ip”? opisz dokładniej o co chodzi.
czy dobrze rozumiem, że ten mail ma zostać wysłany dopiero po minucie od rozpoczęcia wykonywania skryptu ?
Hebo
(Jagiellonia24)
27 Styczeń 2010 18:27
#3
Nie nie. Tutaj chodzi o to że formularz zostaje wysłany normalnie, ale 2 formularz moge wysłać dopiero po 1 minucie. I chciałbym dodać blokade do tego skryptu.
api
(Sitemaster)
27 Styczeń 2010 18:37
#4
Stawianie ciastka
setcookie('mailform', 'zablokowany', time()+60);
sprawdzenie
if(isset($_COOKIE['mailform'])) {
//akcja jeżeli ciastko postawione
}
else
{
//akcja gdy brak blokady
}
Hebo
(Jagiellonia24)
27 Styczeń 2010 19:54
#5
Niestety wyskakuje mi błąd:
Warning: Cannot modify header information - headers already sent by (output started at /home/uzytkownik/domains/domena.pl/public_html/dodaj.php:8) in /home/uzytkownik/domains/domena.pl/public_html/dodaj.php on line 65
Linijka 65 to :
setcookie('mailform', 'zablokowany', time()+60);
Hebo
(Jagiellonia24)
27 Styczeń 2010 20:03
#7
tak mam.
EDIT:
Czy mógłby mi ktoś wstawić ten kod do tego skryptu żeby działało prawidłowo ?
if(isset($_COOKIE['mailform'])) {
//akcja jeżeli ciastko postawione
}
else
{
//akcja gdy brak blokady
}
i to
setcookie('mailform', 'zablokowany', time()+60);
do tego skryptu
<?php
if (count($_POST))
{
////////// USTAWIENIA //////////
$email = 'e-mail@e-mail.pl'; // Adres e-mail adresata
$subject = 'Dodaj fachowca'; // Temat listu
$message = 'Dziękujemy za zgłoszenie fachowca, wkrótce zostanie dodany'; // Komunikat
$error = 'Wystąpił błąd podczas zgłoszenia'; // Komunikat błędu
$charset = 'iso-8859-2'; // Strona kodowa
$ip = $_SERVER['REMOTE_ADDR'];
//////////////////////////////
$head =
"MIME-Version: 1.0\r\n" .
"Content-Type: text/plain; charset=$charset\r\n" .
"Content-Transfer-Encoding: 8bit";
$body = '';
foreach ($_POST as $name => $value)
{
if (is_array($value))
{
for ($i = 0; $i < count($value); $i++)
{
$body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
}
}
else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
}
echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
}
else
{
?>
api
(Sitemaster)
27 Styczeń 2010 20:49
#8
aby działało musisz skorzystać z buforowania.
na samym początku
ob_start();
na końcu
ob_end_flush();
zobacz: http://webmade.org/porady/buforowanie-h … nt-php.php
Hebo
(Jagiellonia24)
27 Styczeń 2010 20:58
#9
a nie można po prostu dać blokade ip na miutke ? Prosiłbym aby ktoś mi zmienił ten skrypt tak żeby kolejny formularz można bylo wysłać po upływie minuty
MrPigmej
(Kontakt)
27 Styczeń 2010 22:01
#10
yyy, czy trochę nie za dużo wymagasz? Forum ma pomagać, a nie robić za kogoś. A wszystkie informacje, które do zrobienia tego są Ci potrzebne już koledzy-forumowicze podali…
Hebo
(Jagiellonia24)
28 Styczeń 2010 14:44
#11
Widzisz ja jestem w tym zielony i chciałbym szczegółowej pomocy. Ponieważ nie wiem gdzie mam wstawić to co mi podano.
Ale jak widać tutaj takiej pomocy nie znajdę!