We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

Problem z zabezpieczeniem formularzu


Inzaghi
11-08-2009, 16:02
Witam,


Mam taki formularz na swojej stronie i nie umiem go dobrze zabezpieczyć przed robotami.


To mój formularz:
/*

*/
if ($_POST['message'])
{
/* uncomment the next two lines to strip out html from input */
/* $name = strip_tags($name); */
/* $message = strip_tags($message); */
$_POST['message'] = ereg_replace("\r\n\r\n", "\n

", $_POST['message']);
$date = date("l, F j Y, h:i a");
$_POST['message'] = "

{$_POST['nick']} -- $date
{$_POST['typ1']}
{$_POST['typ2']}
{$_POST['typ3']}
{$_POST['typ4']}
{$_POST['typ5']}
{$_POST['typ6']}

{$_POST['typ7']}
{$_POST['typ8']}
AKO:{$_POST['ako']}
{$_POST['message']}


";

$fp = fopen (basename($PHP_SELF) . ".commentkupony", "a");
fwrite ($fp, $_POST['message']);
fclose ($fp);
}
@readfile(basename(($PHP_SELF . ".commentkupony")));

?>















Nie trzeba wypełniać wszystkich pól z typami !






To natomiast skrypt zabezpieczeń które chce wprowadzić. Oczywiście wiem, że muszę pozmieniać nazwy "name" "surname" "content" na nazwy pól z mojego formularza. Rzecz w tym, że gdy wplatam treść tego skryptu to formularz nie działa. A jako błąd pokazuje linijkę z checkfield. Gdzie wkleić ten skrypt ? Co zrobić, żeby działało poprawnie ? Proszę o pomoc

// Formularz zawiera 3 pola:
// surname - nazwisko uzytkownika
// name - imie uzytkownika
// content - tresc wiadomosci

if ( !empty($_POST['content']) && !empty($_POST['surname']) && !empty($_POST['name'])) { // sprawdzamy czy wszystkie pola zostaly wypelnione
$error=false;
if (!checkField($_POST['content'])) $error=true; // sprawdzamy zawartosc "niechcianych" naglowkow
if (!checkField($_POST['surname'])) $error=true;
if (!checkField($_POST['name'])) $error=true;

if (strlen($_POST['surname'])>40) $error=true; // sprawdzamy dlugosc zmiennych
if (strlen($_POST['name'])>40) $error=true;
if (strlen($_POST['content'])>1024) $error=true;

if (!$error) { // jesli nie wykryto "bledow"
mail(...) // wysylamy wiadomosc
}
}


function checkField($field) {
$badTags=array('MIME-Version','BCC','Content-Transfer-Encoding','[url','[/url]','cc:','MIME format','Content-Type');
foreach ($badTags as $badTag) {
if (stristr($field,$badTag)) {
return false;
}
}
return true;
}
?>