ma nie dodawać znaków specjalnych - jeżeli będzie przykładowo ala ma kota #(&*#*(&@!)_!) itd to usuwa znaki specjalne i dodaje ala ma kota samo, a jeżeli ktoś wpisze same znaki specjalne to ma odrzucić.
A może tak od początku.
Napisałem ala wyszukiwarkę tagów.
<?php
$_POST['slowo']=trim($_POST['slowo']);
if(empty($_POST['slowo']))
// funkcja sprawdza długość znaków i minimum.
if (strlen($_POST['slowo']) < 4 or
strlen($_POST['slowo']) > 25
) {
echo "Wyszukiwane słowo musi mieć minimum 4 znaki oraz maxymalnie 25 znaków."; return $_POST['slowo'];
} // koniec
if(empty($_POST['slowo']))
echo 'Wpisz co chcesz szukać!'; // jeśli jednak dane są wpisane poprawnie
else
{
require ('db.php'); // wstawiamy dane configuracyjne do polaczenia z baza
//////////
//$slowo=$_POST['slowo'];
///$slowoz = mysql_real_escape_string($_POST['slowo']);
$ogonki = array("ę", "ó", "ą", "ś", "ł", "ż", "ź", "ć", "ń", "Ę", "Ó", "Ą", "Ś", "Ł", "Ż", "Ź", "Ć", "Ń", " ", "?"); $bez_ogonkow = array("e", "o", "a", "s", "l", "z", "z", "c", "n", "E", "O", "A", "S", "L", "Z", "Z", "C", "N", "-","");
$nazwa_nopolish=str_replace($ogonki, $bez_ogonkow, $slowoz);
$nopolish_small = strtolower($nazwa_nopolish); //zmiana na małe litery
$zapytanie="SELECT * FROM `$baza` WHERE `tagi` = '$slowoz'" or
die(mysql_error());
if(mysql_num_rows($wynikkoncowy)==0) // jezeli nie istnieje to dodajemy:
{// tutaj dodajemy jezeli nie ma w bazie:
$dodaje = "INSERT INTO $baza (tagi) VALUES ('$slowoz')" or
die(mysql_error());
}
problem pojawia się gdy np wpisuję w wyszukiwarce <script> to skrypt zaczyna szaleć. Tak samo dodają się znaki html typu
<a href="http://">dddd
</a>
Po prostu nie filtruje danych - co zrobić aby właśnie to zadziałało? gdzie błąd zrobiłem ?
Wiem, że w kodzie mam masło maślane, ale to moje początki w php.