Op mijn site heb ik nu een gastenboek en een soort vraag en aanbod.
Bij het gastenboek kunnen de mensen zelf online iets neerzetten, en bij de vraag en aanbod kan iemand een advertentie plaatsen doormiddel van een formuliertje. En die gegevens worden dan in de database gezet, en ook weer uitgelezen op de vraag en aanbod pagina.
Maar ik zat allemaal te zoeken op websites etc.
Maar toen merkte ik op dat men via sql injection de site kan gaan vergallen.
Kunnen ze dat ook doen via mij vraag en aanbod en mij gastenboek?
@Stefan: De functie htmlentities() hoor je niet te gebruiken wanneer je gegevens in de database gaat wegschrijven. Dan kun je de data namelijk niet meer gebruiken voor andere zaken dan html-output, bv. email, text-files etc.
Deze functie gebruik je alleen wanneer je de data ophaalt uit de database en op het scherm wilt weergeven.
@Stefan: De functie htmlentities() hoor je niet te gebruiken wanneer je gegevens in de database gaat wegschrijven. Dan kun je de data namelijk niet meer gebruiken voor andere zaken dan html-output, bv. email, text-files etc.
Deze functie gebruik je alleen wanneer je de data ophaalt uit de database en op het scherm wilt weergeven.
Ik heb nu dit en het werkt en als ik nu bijvoorbeeld <a href="sgsg">sgfsgs</a> invoer krijg ik gewoon alleen de naam te zien :)
Nu hoeft bij de hoofdpagina toch niet die htmlentities?
<?p
mysql_query("INSERT INTO vraagenaanbod (product,naam,plaats,telefoonnummer,email,bericht,prijs,soort,datum) VALUES('".strip_tags(mysql_real_escape_string($_POST['product']))."','".strip_tags(mysql_real_escape_string($_POST['naam']))."','".strip_tags(mysql_real_escape_string($_POST['plaats']))."','".strip_tags(mysql_real_escape_string($_POST['telefoonnummer']))."','".strip_tags(mysql_real_escape_string($_POST['email']))."','".strip_tags(mysql_real_escape_string($_POST['bericht']))."','".strip_tags(mysql_real_escape_string($_POST['prijs']))."','".strip_tags(mysql_real_escape_string($_POST['soort']))."','".$date."')") or die ( mysql_error() );
?>
Ik heb geprobeerd om die code if(!empty) toe te passen.
Maar dat wil nog niet echt lukken, ik heb de code van de vorige pagina gebruikt en heb nu dit (alleen voor producht, om te testen)
<?php
if(!empty($_POST['product'])
$product = htmlentities(strip_tags(mysql_real_escape_string($_POST['product'])));
}else{
echo 'U moet wel een product kiezen';
}
if($_SERVER['REQUEST_METHOD'] == "POST")
{
mysql_query("INSERT INTO vraagenaanbod (product,naam,plaats,telefoonnummer,email,bericht,prijs,soort,datum) VALUES('".strip_tags(mysql_real_escape_string($_POST['product']))."','".strip_tags(mysql_real_escape_string($_POST['naam']))."','".strip_tags(mysql_real_escape_string($_POST['plaats']))."','".strip_tags(mysql_real_escape_string($_POST['telefoonnummer']))."','".strip_tags(mysql_real_escape_string($_POST['email']))."','".strip_tags(mysql_real_escape_string($_POST['bericht']))."','".strip_tags(mysql_real_escape_string($_POST['prijs']))."','".strip_tags(mysql_real_escape_string($_POST['soort']))."','".$date."')") or die ( mysql_error() );
echo "Vraag/Aanbod geplaatst";
if($_POST['naam'] == '')
{
echo "U heeft geen achternaam ingevuld!<br />";
echo "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>";
}
else
{
echo 'Uw bericht is helaas niet verstuurd.';
}