Mam taki formularz na swojej stronie i nie umiem go dobrze zabezpieczyć przed robotami.
To mój formularz:
Cytat
<?
/*
*/
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<P>", $_POST['message']);
$date = date("l, F j Y, h:i a");
$_POST['message'] = "<B><p>{$_POST['nick']} </B> -- $date<BR>{$_POST['typ1']}<br>{$_POST['typ2']}<br>{$_POST['typ3']}<br>{$_POST['typ4']}<br>{$_POST['typ5']}<br>{$_POST['typ6']}<br><P>{$_POST['typ7']}<br>{$_POST['typ8']}<BR><b>AKO:{$_POST['ako']}</b><br>{$_POST['message']} <BR></p><HR>";
$fp = fopen (basename($PHP_SELF) . ".commentkupony", "a");
fwrite ($fp, $_POST['message']);
fclose ($fp);
}
@readfile(basename(($PHP_SELF . ".commentkupony")));
?>
<form method="post">
<p>
<label>Nick</label><input name="nick" type="text" size="30" />
<label>Typ nr 1 (np. Polska - Niemcy 1 2,50)</label><input name="typ1" type="text" size="65" />
<label>Typ nr 2</label><input name="typ2" type="text" size="65" />
<label>Typ nr 3</label><input name="typ3" type="text" size="65" />
<label>Typ nr 4</label><input name="typ4" type="text" size="65" />
<label>Typ nr 5</label><input name="typ5" type="text" size="65" />
<label>Typ nr 6</label><input name="typ6" type="text" size="65" />
<label>Typ nr 7</label><input name="typ7" type="text" size="65" />
<label>Typ nr 8</label><input name="typ8" type="text" size="65" />
<label>Kurs ogólny (np, 12,89)</label><input name="ako" type="text" size="20" />
<label>Kilka słów o kuponie<br>Można podać krótk± analize lub co innego
</label><textarea name="message" rows=5 cols=5 wrap=virtual>
</textarea><br>
<b>Nie trzeba wypełniać wszystkich pól z typami !</b><br><br>
<input class="button" name="submit" type="submit" value="Dodaj Twój Kupon">
</p>
</form>
/*
*/
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<P>", $_POST['message']);
$date = date("l, F j Y, h:i a");
$_POST['message'] = "<B><p>{$_POST['nick']} </B> -- $date<BR>{$_POST['typ1']}<br>{$_POST['typ2']}<br>{$_POST['typ3']}<br>{$_POST['typ4']}<br>{$_POST['typ5']}<br>{$_POST['typ6']}<br><P>{$_POST['typ7']}<br>{$_POST['typ8']}<BR><b>AKO:{$_POST['ako']}</b><br>{$_POST['message']} <BR></p><HR>";
$fp = fopen (basename($PHP_SELF) . ".commentkupony", "a");
fwrite ($fp, $_POST['message']);
fclose ($fp);
}
@readfile(basename(($PHP_SELF . ".commentkupony")));
?>
<form method="post">
<p>
<label>Nick</label><input name="nick" type="text" size="30" />
<label>Typ nr 1 (np. Polska - Niemcy 1 2,50)</label><input name="typ1" type="text" size="65" />
<label>Typ nr 2</label><input name="typ2" type="text" size="65" />
<label>Typ nr 3</label><input name="typ3" type="text" size="65" />
<label>Typ nr 4</label><input name="typ4" type="text" size="65" />
<label>Typ nr 5</label><input name="typ5" type="text" size="65" />
<label>Typ nr 6</label><input name="typ6" type="text" size="65" />
<label>Typ nr 7</label><input name="typ7" type="text" size="65" />
<label>Typ nr 8</label><input name="typ8" type="text" size="65" />
<label>Kurs ogólny (np, 12,89)</label><input name="ako" type="text" size="20" />
<label>Kilka słów o kuponie<br>Można podać krótk± analize lub co innego

</textarea><br>
<b>Nie trzeba wypełniać wszystkich pól z typami !</b><br><br>
<input class="button" name="submit" type="submit" value="Dodaj Twój Kupon">
</p>
</form>
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
Cytat
<?php
// 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;
}
?>
// 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;
}
?>