Ik heb zojuist me CMS verbeterd met behulp van mensen op dit forum en zou graag willen weten wat jullie van dit systeem vinden.



Er zijn een paar kleine dingetjes die niet werken (wordt nog gemaakt) en de layout is inderdaad niet mooi, maar is ook administratie systeem.

Beheerder: DemoAdmin
Wachtwoord: Demo

Linkbuilder: DemoLinkbuilder
Wachtwoord: Demo

Een linkbuilder heeft trouwens minder opties!

Tips altijd welkom :)
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.
>>> 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.
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)


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.
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>';
				}
			}
		}
	}
}

?>

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';
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?

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....
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.
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)

Reageren