Ik heb alles geüpdate en heb de demo opnieuw geupload, hopelijk is die nu goed :)
if(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))
{
}
Deze moet ik nog wel toepassen.
Link gekopieerd
>>> Ik heb alles geüpdate. Deze moet ik nog wel toepassen.
Dus niet alles ;) Ik heb een bedrijf toegevoegd. Maar alle ' worden \'. Dat is natuurlijk niet gewenst.
Link gekopieerd
dan lijkt het erop, dat je 2x addslashes() of mysql_real_esacpe_string() toepast op je data.
(of het bij het ophalen nog een keer doet)
Link gekopieerd
Mich
17-04-2014 13:10
gewijzigd op 17-04-2014 13:11
Waarschijnlijk slaat hij het nu wel op met real_escape_string, maar past nog steeds de str_replace toe.
De str_replace is niet meer nodig en niet gewenst.
Link gekopieerd
ik zal anders even code geven van bedrijven :P
Bedrijf aanpassen:
<?php
if(isset($_GET['id']))
{
$id = $_GET['id'];
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['bedrijf'])<1)
{
$melding = 'Er is geen bedrijfsnaam ingevuld!';
}
else
{
if (strlen($_POST['jaar'])<4)
{
$melding = 'Er is geen jaartal ingevuld!';
}
else
{
$updateCheck = "UPDATE linkbuilding_check
SET bedrijf = '" . htmlentities(mysql_real_escape_string($_POST['bedrijf'])) . "',
jaar = '" . htmlentities(mysql_real_escape_string($_POST['jaar'])) . "',
januari = '" . htmlentities(mysql_real_escape_string($_POST['januari'])) . "',
februari = '" . htmlentities(mysql_real_escape_string($_POST['februari'])) . "',
maart = '" . htmlentities(mysql_real_escape_string($_POST['maart'])) . "',
april = '" . htmlentities(mysql_real_escape_string($_POST['april'])) . "',
mei = '" . htmlentities(mysql_real_escape_string($_POST['mei'])) . "',
juni = '" . htmlentities(mysql_real_escape_string($_POST['juni'])) . "',
juli = '" . htmlentities(mysql_real_escape_string($_POST['juli'])) . "',
augustus = '" . htmlentities(mysql_real_escape_string($_POST['augustus'])) . "',
september = '" . htmlentities(mysql_real_escape_string($_POST['september'])) . "',
oktober = '" . htmlentities(mysql_real_escape_string($_POST['oktober'])) . "',
november = '" . htmlentities(mysql_real_escape_string($_POST['november'])) . "',
december = '" . htmlentities(mysql_real_escape_string($_POST['december'])) . "'
WHERE id='$id'";
$queryEdit = mysql_query($updateCheck);
if ($queryEdit)
{
$queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['bedrijf'] . " aangepast', NOW() )");
if($queryLogboek)
{
echo '<script>javascript:history.go(-2)</script>';
}
}
}
}
}
}
$querySelect = mysql_query("SELECT * FROM linkbuilding_check where id ='$id'");
$queryFetch = mysql_fetch_array($querySelect);
?>
Bedrijf toevoegen:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['bedrijf'])<1)
{
$melding = 'Er is geen bedrijfsnaam ingevuld!';
}
else
{
if (strlen($_POST['jaar'])<4)
{
$melding = 'Er is geen jaartal ingevuld!';
}
else
{
$insertCheck = "INSERT INTO linkbuilding_check
VALUES( '',
'',
'" . htmlentities(mysql_real_escape_string($_POST['bedrijf'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['jaar'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['januari'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['februari'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['maart'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['april'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['mei'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['juni'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['juli'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['augustus'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['september'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['oktober'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['november'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['december'])) . "')";
$queryInsert = mysql_query($insertCheck);
if($queryInsert)
{
$queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['bedrijf'] . " toegevoegd', NOW() )");
if($queryLogboek)
{
echo '<script type="text/javascript">';
echo 'window.location = "check.php"';
echo '</script>';
}
}
}
}
}
?>
Link gekopieerd
if(isset($_GET['id']))
{
$id = $_GET['id'];
[...]
WHERE id='$id'";
Je faalt hier 2x... Ten eerst controleer je niet wat erin id zit. Id zou een getal moeten zijn dus controleer dit ook!
Bij een getal horen geen quotes. Dus id = $id; en niet id = '$id';
Link gekopieerd
Michael - op 17/04/2014 13:54:32
if(isset($_GET['id']))
{
$id = $_GET['id'];
[...]
WHERE id='$id'";
Je faalt hier 2x... Ten eerst controleer je niet wat erin id zit. Id zou een getal moeten zijn dus controleer dit ook!
Bij een getal horen geen quotes. Dus id = $id; en niet id = '$id';
KUCH ik leer hier meer dan op school KUCH
tja ik zit dan ook op het radius college xd
ik zal het zo even toepassen :) maar dat kan toch niet het gene zijn dat het probleem veroorzaakt?
Link gekopieerd
Bij een getal horen geen quotes. Dus id = $id; en niet id = '$id';
om een string MOETEN quotes, omdat anders niet direct duidelijk is of het om een keyword gaat, kolomnaam etc.
Maar het is niet verboden!
Sterker nog, het is verstandig om de quotes wel te gebruiken.
Stel iemand gooit een ' in $_GET['id']
dan zou
WHERE id = '" . mysql_real_escape_string($_GET['id']) ."'
dat oplossen (beveiligen), maar zonder die '' ben je nog nergens.
Dat brengt me meteen op de controle op "getal": er zijn ook de nodige manieren om een getal te schrijven die toch een error zouden opleveren. 3.14E-05 is ook een getal.
--
En als $_GET niet blijkt te bestaan op regel 3, dan wordt $id niet geset, maar
op regel 53 gebruik je wel $id....
Link gekopieerd
Mich
17-04-2014 14:11
gewijzigd op 17-04-2014 14:12
Ivo; dan ben ik wel heel benieuwd hoe jij dat doet.
WHERE id = '$_GET['id']'
vind jij dus correct...
Ik zou eerder WHERE id = (int)$_GET['id']
gebruiken. En controleren met if(isset($_GET['id']) && ctype_digit($_GET['id']))
Met ctype_digit valt 3.14E-05 buiten boord.
Link gekopieerd
nee zeker niet
WHERE id = '$_GET['id']'
moet minstens zijn:
WHERE id = '". mysql_real_escape_string($_GET['id']) ."'
---
controle op het bestaan en of het een int is doe ik met
<?php
if($id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT)) {
}
?>
Waarna ik dan dus $id gebruik.
Sowieso, omdat het niet heel netjes is om midden in classes $_GET te gebruiken.
En blijven escapen op de plek waar je de query opbouwt. (of prepared statements)
Link gekopieerd