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:
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
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")));
?>
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;
}
?>