DarkFeather
Gebruiker
- Lid geworden
- 21 jan 2004
- Berichten
- 134
Ik heb geen ideeGeplaatst door JPeetje
Raad eens waar hij die grote stukken script vandaan heeft ?

Beter goed gejat dan slecht bedacht!
Als voor 't script, je hebt daar een hele aparte functie in zitten:Die functie lijkt errug veel op die ik gebruik ... zelfs de naam is 't zelfde ...PHP:function slashes($tekst) { if(get_magic_quotes_gpc() == FALSE) { $tekst = addslashes($tekst); } return $tekst; } }
![]()
Dat had ik al opgezocht, maar nog een extra uitleg kan geen kwaadHou er wel rekening mee dat die gpc niet zomaar leuke lettertjes zijn aan 't einde van de functie, dat is waar ze op slaan: GET, POST en COOKIE waarden.

Had er nog niet zo heel diep over nagedacht.Enkele aanmerkingen op je script, dit stukje:Kan vervangen worden door:PHP:include("connect.php"); if(get_magic_quotes_gpc() == FALSE) { $id = addslashes(((int)$_GET['id'])); } else { $id = ((int)$_GET['id']); }
Aangezien de functie er toch al is. Maar het kan nog korter, aangezien je er toch een integer, oftewel een geheel getal, van maakt, hoef je je geen zorgen te maken over die slashes. Dus simpelweg:PHP:include("connect.php"); $id = slashes($_GET["id"]);
is genoeg.PHP:$id = ((int) $_GET["id"]);
Okee.Bijzou je wel een mysql_error() toe mogen voegen, maar is niet vereist.PHP:echo "Er is een probleem tijdens het selecteren van de informatie uit de database";
Dus ik moet van dit:Dit daarentegen is wel fout:In de else { die daarna volgt, vraag je met $_POST maar liefst een id,naam en tekst op. Ik zie nergens een controle waarbij je checkt of deze waarden ook bestaan.PHP:if(isset($_POST['bewerk']) == FALSE)
Verder gebruik je voor $id ook slashes($_POST["id"]);
Hierdoor is het niet zeker dat $id een integer is, aangezien iedereen een HTML formulier op zijn eigen pc kan maken die het formulier naar jouw site verwijst:Als men hierbij voor 'id' een tekstveld maakt met de waarde 'blaat', dan komt je query er als volgt uit te zien:Code:<form action="jouw_website" method="post">
Dat "id = blaat" stukje zal een SQL error opleveren, doordat er geen quotes om "blaat" heen staan. Zou je op $_POST["id"] een (int) toepassen, dan wordt "blaat" veranderd in een getal, dit getal is 0, doordat PHP er gewoonweg niets van kan makenCode:UPDATE tabel SET naam = 'naam', tekst = 'tekst' WHERE id = blaat
0 komt dan niet voor in de database, maar de query zal dan geen error opleveren.
PHP:
$id = slashes($_POST['id']);
PHP:
$id = ((int)$_POST['id'])
PHP:
if(isset($_POST['id']) == FALSE)
{
echo "Er is geen pagina opgegeven!";
}
if(isset($_POST['naam']) == FALSE)
{
echo "Er is geen naam opgegeven!";
die();
}
if(isset($_POST['tekst']) == FALSE)
{
echo "Er is geen tekst doorgegeven!";
die();
}
En dat zou ik dan voor dit stuk moeten plaatsen:
PHP:
$id = ((int)$_POST['id']);
$naam = slashes($_POST['naam']);
$tekst = slashes($_POST['tekst']);
$query = "UPDATE " . $tabel . " SET naam = '" . $naam . "', tekst = '" . $tekst . "' WHERE id = " . $id;
$result = @mysql_query($query);
Laat maar horen!Verder heb ik alleen nog een paar performance (snelheid) aanmerkingen, als je die wil horen post je 't maar
Het wordt indd met addslashes in de database gezet (zie ook bewerk.php).Hm ... of dat nodig is weet ik zonet nog niet ... hangt er vanaf hoe je 't in de database invoert. Als dat echt met \' of \\ of \" in de database staat, dan moet je stripslashes() toepassen, wil je een fatsoenlijk resultaat. Anders niet.PHP:$naam = stripslashes($rij->naam);
En hoe kan ik dat verbeteren? En heb ik ook niet zo'n soort beveiligingsfout in bewerk.php?Je beveiliging in verwijder.php is trouwens niet al te best. Hij controleert namelijk alleen of $id gelijk is aan 1 als $_POST["verwijder"] niet bestaat. Als deze wel bestaat maakt het kennelijk niet meer uit. Wederom, ik zet een HTML formulier op m'n eigen pc, verwijs deze door naar jouw script, en voila, de rij met id 1 is verwijderd
Dank je. Die heb ik gewoon van masterprut afgekeken (en die zal het vast wel weer van jou hebbenDe ordening in beide scripts is trouwens niet slecht, houden zo !

indd, die mag wel omhoog!!!// Edit 2: Dat smilie limiet per post mag wel versteld worden naar 15 of 20 ...
Laatst bewerkt: