Blokada IP

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 ?

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.

Stawianie ciastka

setcookie('mailform', 'zablokowany', time()+60);

sprawdzenie

if(isset($_COOKIE['mailform'])) {

//akcja jeżeli ciastko postawione

}

else

{

//akcja gdy brak blokady

}

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);

Czy w tym pliku masz ?

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

{

?>

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

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

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…

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ę!