het lukt mijn niet om de $naam goed in deze query te zetten,
heb al alle mogelijke varianten die ik op internet kon vinden
uitprobeerd.
ik krijg namelijk geen resultaat.
weet iemand van jullie wat hier fout is?
bedankt voor het kijken.
...
$naam = $_POST['$naam'];
...
$query = "SELECT * FROM `vriendenboek` WHERE `naam` = .$naam. ";
$naam = $_POST['$naam'];
is volkomen zinloos! Waarom een kopie maken? Wat is er mis met het origineel?
Oh, er is van alles mis met het origineel, die is namelijk volkomen onbetrouwbaar! Maar ook dan maak je geen kopie aan, zit je met 2 onbetrouwbare honden.
Maak een variabele aan die je wel kunt vertrouwen:
<?
$naam = mysql_real_escape_string($_POST['$naam']);
?>
Nu kun je $naam veilig gebruiken in een query. COOKIE, GET, POST, etc. mag je nooit in een query gebruiken, ook niet met een zinloze kopie.
Of SQL-injection is een functionaliteit van jouw systeem...
het is wel zo dat als ik naar de broncode kijk , naam en value van de checkbox ook dezelfde namen krijgen en dat is wat ik wou.
nu knutsel ik dus aan een manier om dus de $naam in de select-query
van de toon.php te krijgen.vandaar...
Wat Frank probeert te zeggen is dat het in ieder geval belangrijk is en tevens een goede programmeergewoonte om alle veriabelen welke via POST, GET etc worden doorgegeven nooit zonder meer te vertrouwen.
Dus om deze te strippen van karakters waarmee je query in de soep loopt of zelfs je database leegt of verpest ( SQL-injection ).
Het zou goed zijn om vanaf het begin af aan, ondanks het feit dat je nog maar net begonnen bent, hier kennis van te nemen en rekening mee te houden.
Zet in ieder geval nooit een functionaliteit, formulier of wat dan ook online zonder eerst uitvoerig te testen of je wel goed beveiligd bent!
Een week aan het werk dan al netjes controleren of e.e.a. is gelukt? Niks mis mee!
2 opmerkingen:
- $sql is geen SQL, maar een result-set. $result ligt dus voor de hand en geeft veel meer duidelijkheid over de inhoud van deze variabele.
- mysql_fetch_object() is zo snel als dikke stront door een trechter. De functie mysql_fetch_assoc() is vele malen sneller en net zo eenvoudig in het gebruik. Het maakt een array aan die je alsvolgt gebruikt: $record['naam']. Dat is net iets anders dan $record->naam, maar echt niks moeilijker.
Let op: <? $naam="$record->naam";
echo"$naam"; ?> is wederom een slechte constructie, het levert je helemaal niets op. Gebruik gewoon $record->naam of nog beter $record['naam'] wanneer je mysql_fetch_assoc() gebruikt om te fetchen.
Veel plezier!
Ps. Net een weekje aan het php-en en dan nu al met een database bezig? Kijk dan ook eens naar PostgreSQL. Ook een database, maar vele malen beter en net zo gratis!