
Postat în original de
puthre
Nu e suficient, ca daca $titlu e "');drop table anunturi;/*" s-a terminat cu jucaria ta.
Stiu ca mai trebuiesc facute si aceste verificari, momentan lucrez la partea de admin unde doar eu am acces...si oricum ceea ce fac eu acum este doar cu scopul de a invatat php, sar momentan peste aceste verificari pentru a nu ma cmplica.
Codul meu a ajuns la urmatoarea forma:
Cod:
<?php
include('../include/db.php');
if (isset($_POST['sub']))
{
//Definire array cu erorile survenite.
$errori=array();
$categorie = $_POST['categorie'];
$titlu = strip_tags(trim($_POST['titlu']));
$detaliianunt = strip_tags(trim($_POST['detaliianunt'], '<br><br/>'));
$pret = strip_tags(trim($_POST['pret']));
$moneda = $_POST['moneda'];
$nume = strip_tags(trim($_POST['nume']));
$telefon = strip_tags(trim( $_POST['telefon']));
$mail = strip_tags(trim($_POST['mail']));
if ($_POST['categorie']=="") {$errori[] = 'Alege o categorie. <br>'; }
if (strlen($_POST['titlu'])<1) {$errori[] = 'Scrie ceva in campul titlu <br>'; }
if (strlen($_POST['titlu'])>80) {$errori[] = 'Titlu trebuie sa fie mai mic de 80 caractere <br>'; }
if (strlen($_POST['detaliianunt'])<10) {$errori[] = 'Scrie o descriere a anuntului de minim 10 caractere<br>';}
if (strlen($_POST['detaliianunt'])>1000) {$errori[] = 'Descrierea anuntului are mai mult de 1000 caractere <br>'; }
if (strlen($_POST['pret'])<1) {$errori[] = 'Scrie ceva la campul pret<br>'; }
if (strlen($_POST['pret'])>10) {$errori[] = 'Pretul nu poate avea mai mult de 10 caractere<br>';}
if (!is_numeric($_POST['pret'])) {$errori[] = 'Pretul trebuie scris in cifre<br>'; }
if ($_POST['moneda']=="") {$errori[] = 'Selecteaza moneda<br>'; }
if (strlen($_POST['nume'])<1) {$errori[] = 'Campul nume nu poate fi gol<br>'; }
if (strlen($_POST['nume'])>20) {$errori[] = 'Numele nu poate depasi 20 caractere<br>'; }
if (strlen($_POST['telefon'])<1) {$errori[] = 'Campul telefon nu poate fi gol<br>'; }
if (strlen($_POST['telefon'])>12) {$errori[] = 'Telefonul nu poate depasi 12 caractere<br>'; }
if (!is_numeric($_POST['telefon'])) {$errori[] = 'Telefonul trebuie scris in cifre<br>'; }
if (strlen($_POST['mail'])<1) {$errori[] = 'Campul mail nu poate fi gol<br>'; }
if (strlen($_POST['mail'])>30) {$errori[] = 'Mail-ul nu poate depasi 30 caractere<br>'; }
if (!empty($errori))
{
foreach($errori as $eroare => $valoare_eroare) { echo '<div style=" background-color:#FF9966; color: #0000CC; ">'.$valoare_eroare.'</div>';}
}
else{
//Nu sunt erori, facem INSERT-ul
$anunt = mysql_query("INSERT INTO `anunturi` (`categorie`, `titlu` ,`detaliianunt`,`pret`,`moneda`, `nume`, `telefon`, `mail`) values ('.$categorie.', '.$titlu.', '.$detaliianunt.', '.$pret.', '.$moneda.', '.$nume.', '.$telefon.', '.$mail.')") or die(mysql_error());
if($anunt)
{
echo 'Anuntul a fost adaugat.';
}
}
}
?>
<div style="width:800px; color: #0000CC; border:#0033CC solid 1px; ">
<form method="post" action="adauga-anunt.php" >
Categoria <br />
<select name="categorie" >
<option value="">Selecteaza categoria</option>
<?php
$categorie=mysql_query("SELECT * FROM `categorii` order by `categorie` asc") or die(mysql_error());
while($categ = mysql_fetch_array($categorie))
{
echo"<option value=\"$categ[1]\">$categ[1]</option>";
}
?>
</select><br /><br />
Insereaza titlul<br />
<input type="text" name="titlu" value=""><br /><br />
Detalii anunt:<br />
<textarea name="detaliianunt" rows="10" cols="20"></textarea><br /><br />
Pret:<br />
<input name="pret" value="" />
<select name="moneda">
<option value="">Moneda</option>
<option name="RON" value="RON">RON</option>
<option name="EURO" value="EURO">EURO</option>
<option name="USD" value="USD">USD</option>
</select><br />
<b>Date de contact:</b>
<hr />
Nume complet:<br />
<input name="nume" value="" /><br />
Telefon:<br />
<input name="telefon" value="" /><br />
Email:<br />
<input name="mail" value="" /><br />
<input type="submit" name="sub" value="Trimite">
</form>
functioneaza perfect, problema e acum implementarea uni design.
Vreau sa-l aranjez intr-un html....intrebare: cum fac sa-mi afiseze mesajele de erroare sub meniu.