<?php
$www = trim($_POST['www']);
$opis = trim($_POST['opis']);
$ip=$_SERVER['REMOTE_ADDR'];
if(empty($www) and empty($opis)) {
echo "
•
";
}
else {
// dane z formularza
$dane = $www."`".$opis."`".$ip."\n";
// przypisanie nazwy pliku
$file = "folder/plik.txt";
// uchwyt pliku, otwarcie do odczytu i dopisania
$fw=fopen("$file", "wb");
// ustawienie kursora na początku pliku
rewind($fw);
// blokada pliku do zapisu
flock($fw, 2);
// zapisanie danych do pliku
fwrite($fw, $dane);
// odblokowanie pliku
flock($fw, 3);
// zamknięcie pliku
fclose($fw);
// potwierdzenie wygryzienia
echo "Wysłano!
";
}
?>[/code]
Jak widać, umożliwia on wysłanie formularza z polami “strona www” oraz “opis”. Pole opis pozwala niestety na używanie znaków < oraz >, co oczywiście otwiera furtkę do wstawiania kodu i co za tym idzie - rozpieprzenia strony.
Chciałbym więc zedytować ten skrypt tak, aby uniemożliwił albo wpisanie albo wysłanie wspomnianych znaków. Może zwracać informację o użyciu niedozwolonych znaków, ale nie koniecznie. Ważne, aby uniemożliwił wprowadzanie kodu.
Napisałem na tym forum, bo podczas szukania rozwiązania dla mojego problemu natknąłem się na wątek:
Niestety moja znajomość PHP jest tak niewielka, że nie umiałem wprowadzić nic, co tam znalazłem. Muszę więc zwrócić się z prośbą, by ktoś zedytował i napisał w tym wątku gotowy kod. Wydaje mi się, że dla osoby znającej PHP nawet w stopniu średnio-zaawansowanym nie będzie to problemem.
Nie ukrywam, że jest to dość pilne. Proszę więc o pomoc z napisaniem tego i ewentualne porady.
$tekst = 'To jest jakiś tekst 123'; // zmienna zawierająca zarówno litery jak i liczby
$wzor = '/^[a-zA-Z]/'; // wzór zawierający informację o zakresie dopuszczalnych znaków. W tym wypadku wszystkie małe litery od "a" do "z" oraz wszystkie duże litery od "A" do "Z"
if(preg_match($wzor, $tekst))
{
// instrukcje, gdy zmienna $tekst mieści się w ramach wprowadzonego wzoru czyli zawiera tylko małe i duże litery z zakresu A-Z
}
else
{
// instrukcje gdy zmienna $tekst nie mieści się w ww. wzorze np. jak w tym wypadku zawiera także cyfry.
}
No dobrze, dziękuję Wam za wskazówki, tylko problem w tym, że nawet jeśli dostał bym gotowy fragment kodu blokujący te znaki, to nie wiedział bym jak go dopisać do skryptu z pierwszego postu :oops:
To nie HTML, ani Javascript, że mogę sobie wszystko dopisywać gdziekolwiek, byle było w odpowiedniej sekcji: HEAD albo BODY.
Jeśli więc prośba o gotowiec nie łamie regulaminu, to prosił bym o wzbogacenie skryptu, który wysłałem o blokowanie znaków specjalnych i podanie mi go.
W ostateczności mogę (już sam) wyrzucić pole “opis” ze skryptu albo zmienić jego długość do kilku-kilkunastu znaków, jednak wolał bym zostawić go tak, jak jest i zablokować wspomniane znaki.