[PHP][MySql] Sprawdzenie poprawnosci formularza

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Slash3r
Nowy
Nowy
Posty: 26
Rejestracja: ndz gru 17, 2006 1:58 pm

[PHP][MySql] Sprawdzenie poprawnosci formularza

Post autor: Slash3r »

Ok. Mam takie skrypty:

nowyprodukt.htm
[php]
<html>
<head>
<title>Dodaj nowy produkt</title>
</head>
<body>
<form action="nowyprodukt.php" method="post">

Numer produktu: <input type="text" name="nrproduktu" maxlength="3" size="4"><br /><br />
Nazwa produktu: <input type="text" name="nazwaproduktu" maxlength="30" size="30"><br /><br />
Cena: <input type="text" name="cena" maxlength="5" size="6"><br><br><br>

<input type="submit" value="Wstaw do bazy">
</form>
</body>
</html>
[/php]

nowyprodukt.php
[php]
<?

$nrproduktu = $_POST['nrproduktu'];
$nazwaproduktu = $_POST['nazwaproduktu'];
$cena = $_POST['cena'];

if (!$nrproduktu || !$nazwaproduktu || !$cena)

{
print "Nie zostały wypełnione wszystkie pola";
exit;
}

$nrproduktu = addslashes($nrproduktu);
$nazwaproduktu = addslashes($nazwaproduktu);
$cena = addslashes($cena);

@$db = mysql_pconnect("localhost", "root", "");
if (!$db)
{
print "Nie można nawiązać połączenia z bazą danych";
exit;
}

mysql_select_db("sklep");

$query = "insert into produkty values ('".$nrproduktu."', '".$nazwaproduktu."', '".$cena."')";
$result = mysql_query($query);

if ($result)
print "Towar <b>".$nazwaproduktu."</b> został dodany do bazy danych.";
else { print "W bazie istnieje już produkt o tym numerze."; }

?>
[/php]

baza.php --> tutaj wyswietla sie baza

[php]
<?php
@$db = mysql_connect("localhost", "root", "");
if(!$db)
{
echo 'Wystapil blad w polaczeniu';
exit;
}

mysql_select_db("sklep");

$query ="select * from produkty";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);

echo '<p>Ilosc produktow w bazie danych: '.$num_results.'</p>';
for ($i=0; $i<$num_results; $i++) {
$row = mysql_fetch_array($result);
echo ($i+1);
echo stripslashes($row['nazwaproduktu']);
echo 'cena: ';
echo stripslashes($row['cena']);
echo 'zl, nr:';
echo stripslashes($row['nrproduktu']);
echo '<br />';
}
?>
[/php]

I teraz mam problem. Jak dodaje produkt o nazwie:
[php]
ciastko) albo ();'ciastko itp
[/php]

To taka wlasnie zawartosc trafia do bazy danych. Chcialbym ogarniczyc to i sprawdzac formularz, zeby nie mozna bylo wpisywac takich znakow jak mam w bazie danych o nazwie zleznaki. Probowalem zrobic tak:
[php]
Creat table zleznaki(
'nrznaku int unsigned not null auto_increment primary key,
znak char(2) not null);
[/php]

[php]
$nazwaproduktu = $_POST['nazwaproduktu'];

$query = "SELECT * FROM zleznaki";

if(strpos($nazwaproduktu, $query)
{
echo 'W nazwie produktu wpisales niedozwolone znaki!"
exit;
}
[/php]
Ale niestety nie dziala;/Dane caly czas trafiaja do bazy. W bazie danych wstawilem takie znaki jak
[php]
(),.[];' itp
[/php]

Czy cos tutaj zle wpisalem?Jak rozmawiac ten problem?[/code]
ODPOWIEDZ