Hallo,

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?

Ik hoop dat jullie me kunnen helpen :)
Alleen hij plaats de advertentie wel :O
Lijkt mij logisch... Je controleert of er een formulier is verstuurd en je maakt een nieuw record aan in de database.

En vervolgens ga je controleren of wel alle data is ingevuld. Dat lijkt mij niet helemaal de juiste volgorde, om even een open deur in te trappen.

Oplossing: Pas de logica aan: eerst controleren en dan pas de query uitvoeren.

Vraagje: Waar komt $date vandaan en wat staat daar in? De datum van vandaag? Gebruik dan de MySQL-functie NOW() in je query. Dat is eenvoudiger in het gebruik. Uiteraard gebruik je een kolom van het type DATE (of DATETIME) om de datum in op te slaan.
$date is inderdaad de datum die weergegeven wordt waneer de advertentie is geplaatst :)
Oke ik heb nu het volgende;

Dat als je iets niet invult dat ze te zien krijgen van;
"Je bent iets vergeten in te vullen,"

<?php
ob_start();

if($_SERVER['REQUEST_METHOD'] == "POST")
{

if($_POST['product'] == '')
{
echo "Je bent iets vergeten in te vullen,<br>";
echo "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>";
die();
}
elseif($_POST['naam'] == '')
{
echo "Je bent iets vergeten in te vullen,";
die();
}
elseif($_POST['plaats'] == '')
{
echo "Je bent iets vergeten in te vullen,";
die();
}
elseif($_POST['telefoonnummer'] == '')
{
echo "Je bent iets vergeten in te vullen,";
die();
}
elseif($_POST['email'] == '')
{
echo "Je bent iets vergeten in te vullen,";
die();
}

elseif($_POST['email'] == '')
{
echo "Je bent iets vergeten in te vullen,";
die();
}
elseif($_POST['prijs'] == '')
{
echo "Je bent iets vergeten in te vullen,";
die();
}
elseif($_POST['bericht'] == '')
{
echo "Je bent iets vergeten in te vullen,";
die();
}

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";

$afzender = "From: [email protected]";
mail($_POST['email'],'Plaatsing Advertentie','Je advertentie is geplaatst',$afzender);
}

else
{

echo "<B>Vraag/Aanbod plaatsen:</b><br><br>";
echo "<form name='veranderen' method='post'>";
echo "Product naam:<br>";
echo "<input type='text' name='product'><br>";
echo "Naam:<br>";
echo "<input type='text' name='naam'><br>";
echo "Plaats:<br>";
echo "<input type='text' name='plaats'><br>";
echo "Telefoonnummer:<br>";
echo "<input type='text' name='telefoonnummer'><br>";
echo "Email:<br>";
echo "<input type='text' name='email'><br>";
echo "Extra informatie:<br>";
echo "<textarea name='bericht' cols='40' rows='5'></textarea><br>";
echo "Prijs:<br>";
echo "<input type='text' name='prijs'><br>";
echo "Aangeboden/Gezocht:<br>";
echo "<select name='soort'><option value='Aangeboden'>Aangeboden</option><option value='Gezocht'>Gezocht</option></select><br>";
echo "<input type='submit' name='submit' value='Vraag/Aanbod plaatsen'></form>";


}

ob_end_flush();

?>

Maar nu zit ik met het volgende, als je iets niet invult.

Krijg je die regel te zien van je bent iets vergeten lalala.
En dan laat die verder de content pagina niet meer ( de footer).

Hoe kan ik dat oplossen?

Reageren