' wordt niet weergegeven

Status
Niet open voor verdere reacties.

Poppoll

Gebruiker
Lid geworden
17 jul 2004
Berichten
89
Als ik via een form (welke de gegevens wegschrijft naar een phpmyadmin database) in het invulveld naam of plaats een ' invoer door er een \ voor te zetten wordt deze bewaard in de database en goed weergegeven op de site(niet online beschikbaar)
Echter wanneer ik de gegevens opnieuw opvraag om deze te wijzigen wordt de ' niet meer weergegeven.
accentindb.jpg
accentopsite.jpg

Code:
$output.= "<tr><td>Naam:</td><td><input type='text' name='naam' value='".($row['naam'])."' size='60'></td></tr>";
$output.= "<tr><td>Plaats:</td><td><input type='text' name='plaats' value='".($row['plaats'])."' size='60'></td></tr>";

Iemand een oplossing?

PP
 
Laat je relevante code eens zien die je gebruikt voor het toevoegen van je data.
 
Code hieronder:

Code:
<?php
ini_set('display_errors', 'on');
include_once 'login/login.inc.php';
include_once 'includes/menu.inc.php';

mysql_query("SET NAMES utf8");

  
$maanden= array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
$opmerking = "";

if ($mysqli->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}


if(isset($_POST['nieuwOpslaan'])){
	$actie = "nieuwOpslaan";
}elseif(isset($_GET['id'])){
	$actie = "edit";
}elseif(isset($_POST['editOpslaan'])){
	$actie = "editOpslaan";
}elseif(isset($_GET['nieuw'])){
	$actie = "nieuw";
}elseif(isset($_POST['deleteBtn'])){
	$actie = "delete";
}else{
	$actie="default";
}

switch($actie)
{
	
  
	case "nieuw";
	
	$output = "<h4>Nieuw item aanmaken</h4><form action='agenda.php' method='post' accept-charset='utf-8'><table>";
	$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
	$output.= "<tr><td></td><td style='color:#bc0024'font-weight:'bold'>Géén ' of \" gebruiken!!</td></tr>";
	$output.= "<tr><td>Naam:</td><td><input type='text' name='naam' value='' size='60'></td></tr>";
	$output.= "<tr><td>Plaats:</td><td><input type='text' name='plaats' value='' size='60'></td></tr>";
	//$output.= "<tr><td>Link:</td><td><input type='text' name='link' value='' size='60'></td></tr>";
	$output.= "<tr><td>Datum:</td><td>".dag(date("j"))." ".maand(date("n"), $maanden)." ".jaar(date("Y"))."</td></tr>";
	$output.= "<tr><td>Uur:</td><td>".startuur("00:00")."</td></tr>";
	$output.= "<tr><td colspan='2'><textarea name='info'>".($row['info'])."</textarea></td></tr>";
	$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
	$output.= "</table></form>";
	break;
	
	case "edit";
	
	$id = $_GET['id']; 
	$query = "SELECT naam, plaats, info, date_format(datum, '%d')as dag, date_format(datum, '%m')as maand, date_format(datum, '%Y')as jaar, TIME(datum) as uur FROM agenda WHERE id='".$id."'";
	
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		$row = $result->fetch_assoc();
		
		$output = "<form action='agenda.php' method='post' accept-charset='utf-8'><input type='hidden' name='id' value='".$id."'><table>";
		$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
		$output.= "<tr><td>Naam:</td><td><input type='text' name='naam' value='".($row['naam'])."' size='60'></td></tr>";
		$output.= "<tr><td>Plaats:</td><td><input type='text' name='plaats' value='".($row['plaats'])."' size='60'></td></tr>";
		//$output.= "<tr><td>Link:</td><td><input type='text' name='link' value='".stripslashes($row['link'])."' size='60'></td></tr>";
		$output.= "<tr><td>Datum:</td><td>".dag($row['dag'])." ".maand($row['maand'], $maanden)." ".jaar($row['jaar'])."</td></tr>";
		$output.= "<tr><td>Uur:</td><td>".startuur($row['uur'])."</td></tr>";
		$output.= "<tr><td colspan='2'><textarea name='info'>".($row['info'])."</textarea></td></tr>";
		$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='editOpslaan' value='Opslaan'></td></tr>";
		$output.= "</table></form>";
	}
	break;
	
	case "nieuwOpslaan";
	$naam = $_POST['naam'];
	//$link = $_POST['link'];
	$plaats = $_POST['plaats'];
	$info = $_POST['info'];
	$datum = $_POST['jaar']."-".$_POST['maand']."-".$_POST['dag']." ".$_POST['uur'].":".$_POST['minuten'];
	
	$query = "INSERT into agenda(naam, plaats, info, datum) VALUES ('".$naam."', '".$plaats."', '".$info."', '".$datum."')";
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		$pmerking = "Nieuw item is toegevoegd";
	}
	$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "editOpslaan";
		$id = $_POST['id'];
		$naam = $_POST['naam'];
		//$link = $_POST['link'];
		$plaats = $_POST['plaats'];
		$info = $_POST['info'];
		$datum = $_POST['jaar']."-".$_POST['maand']."-".$_POST['dag']." ".$_POST['uur'].":".$_POST['minuten'];
		
		$query = "UPDATE agenda SET naam = '".$naam."',  plaats = '".$plaats."', info = '".$info."', datum = '".$datum."' WHERE id='".$id."'";
		if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
		{ 
			$pmerking = "<span id='opmerkingGoed'>Nieuw item is toegevoegd</span>";
		}
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "default";
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	// toegevoegd by PP
	case "delete";
		$id = $_POST['id']; 
		
		$query = "DELETE FROM agenda WHERE id=$id";
		if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
		{ 
			$opmerking = "<span id='opmerkingGoed'>Item is verwijderd</span>";
		}
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "default";
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
}


function listItems($mysqli)
{
	$maanden= array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
	$output = "<div><a href='?nieuw' class='button'>nieuw</a></div><h2>Overzicht Agenda</h2><table id='agenda'>";
	$query = "SELECT id, naam, plaats, info, date_format(datum, '%d')as dag, date_format(datum, '%c')as maand, date_format(datum, '%Y')as jaar, TIME(datum)as uur FROM agenda ORDER BY datum DESC";
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		while($row = $result->fetch_assoc())
		{ 
			$output.= "<tr><td class='rowid'>Item ".$row['id']."</td><td class='padding'></td><td class='padding'></td><td class='padding'></td></tr>";
			$output.= "<tr><td class='datum'>".$row['dag']." ".$maanden[$row['maand']-1]." ".$row['jaar']."</td><td class='naam'>".($row['naam'])."</a></td><td><a href='?id=".$row['id']."'class='button'>Bewerk</a></td><td class='delete' id='".$row['id']."'><a class='button'>Verwijder</a></td></tr>";
			$output.= "<tr><td class='uur'>".$row['uur']."</td><td class='plaats'>".($row['plaats'])."</td><td></td><td></td></tr>";
			$output.= "<tr><td class='uur'></td><td class='info'>".($row['info'])."</td><td></td><td></td></tr>";
			
			
		}
	}
	$output.= "</table>";
	
	return $output;
}

function maand($checked, $maanden )
{

	$output = "<select name='maand'>";
	foreach($maanden as $key => $maand)
	{
		$output.= ($key+1 == $checked) ? "<option value='".($key + 1)."' selected='selected'>".$maand."</option>" : "<option value='".($key + 1)."' >".$maand."</option>";
	}
	$output.= "</select>";
	return $output;
}

function dag($checked)
{
	echo $checked;
	$output = "<select name='dag'>";
	for($i=1; $i<=31; $i++)
	{
		$output.= ($i == $checked) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

function jaar($checked)
{
	$output = "<select name='jaar'>";
	for($i=2014; $i<=2020; $i++)
	{
		$output.= ($i == $checked) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

function startuur($startuur)
{
	$uurArray = explode(":", $startuur);
	$output = "<select name='uur'>";
	for($i=0; $i<=24; $i++)
	{
		$output.= ($i == $uurArray[0]) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	
	$output.= "<select name='minuten'>";
	for($i=0; $i<60; $i = $i+5)
	{
		$output.= ($i == $uurArray[1]) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

?>
 
Barst van de SQL-injectie, waarbij je query nu stukloopt op een simpele apostrof.

Dus: $mysqli->real_escape_string()
 
Barst van de SQL-injectie, waarbij je query nu stukloopt op een simpele apostrof.

Dus: $mysqli->real_escape_string()

Vooreerst al hartelijk dank, maar kan je me uitleggen wat ik kan doen aan de sql injectie?
En waar moet ik $mysqli->real_escape_string() invoegen /of vervangen?
Ben op het gebied van php een leek.
Paul
 
elke $_POST/ $_GET / $_COOKIE / $_ENV variabele die je in een query gooit, moet je escapen met $mysqli->real_escape_string().
Dus: $mysqli->real_escape_string($_POST['id']) etc....

Maar goed, dit kon je natuurlijk ook in de php.net manual vinden.

Zonder beveiliging tegen SQL-injection ben je gewoon zéér vatbaar voor hackers. Plus dat jezelf je queries kan manipuleren met een apostrof, met rare gevolgen van dien.
 
Laatst bewerkt:
Heb alle $Post en $Get aangepast.
Het probleem blijft zich voordoen.
de ' wordt goed weggeschreven naar de db maar wordt niet meer weergegeven als ik wijzigingen wil aanbrengen.



Code:
<?php
ini_set('display_errors', 'on');
include_once 'login/login.inc.php';
include_once 'includes/menu.inc.php';

mysql_query("SET NAMES utf8");

 
$maanden= array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
$opmerking = "";

if ($mysqli->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}


if(isset($_POST['nieuwOpslaan'])){
	$actie = "nieuwOpslaan";
}elseif(isset($_GET['id'])){
	$actie = "edit";
}elseif(isset($_POST['editOpslaan'])){
	$actie = "editOpslaan";
}elseif(isset($_GET['nieuw'])){
	$actie = "nieuw";
}elseif(isset($_POST['deleteBtn'])){
	$actie = "delete";
}else{
	$actie="default";
}

switch($actie)
{
	
  
	case "nieuw";
	
	$output = "<h4>Nieuw item aanmaken</h4><form action='agenda.php' method='post' accept-charset='utf-8'><table>";
	$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
	$output.= "<tr><td></td><td style='color:#bc0024'font-weight:'bold'>Géén ' of \" gebruiken!!</td></tr>";
	$output.= "<tr><td>Naam:</td><td><input type='text' name='naam' value='' size='60'></td></tr>";
	$output.= "<tr><td>Plaats:</td><td><input type='text' name='plaats' value='' size='60'></td></tr>";
	//$output.= "<tr><td>Link:</td><td><input type='text' name='link' value='' size='60'></td></tr>";
	$output.= "<tr><td>Datum:</td><td>".dag(date("j"))." ".maand(date("n"), $maanden)." ".jaar(date("Y"))."</td></tr>";
	$output.= "<tr><td>Uur:</td><td>".startuur("00:00")."</td></tr>";
	$output.= "<tr><td colspan='2'><textarea name='info'>".($row['info'])."</textarea></td></tr>";
	$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
	$output.= "</table></form>";
	break;
	
	case "edit";
	
	$id =  $mysqli->real_escape_string($_GET['id']);
	$query = "SELECT naam, plaats, info, date_format(datum, '%d')as dag, date_format(datum, '%m')as maand, date_format(datum, '%Y')as jaar, TIME(datum) as uur FROM agenda WHERE id='".$id."'";
	
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		$row = $result->fetch_assoc();
		
		$output = "<form action='agenda.php' method='post' accept-charset='utf-8'><input type='hidden' name='id' value='".$id."'><table>";
		$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
		$output.= "<tr><td>Naam:</td><td><input type='text' name='naam' value='".($row['naam'])."' size='60'></td></tr>";
		$output.= "<tr><td>Plaats:</td><td><input type='text' name='plaats' value='".($row['plaats'])."' size='60'></td></tr>";
		//$output.= "<tr><td>Link:</td><td><input type='text' name='link' value='".stripslashes($row['link'])."' size='60'></td></tr>";
		$output.= "<tr><td>Datum:</td><td>".dag($row['dag'])." ".maand($row['maand'], $maanden)." ".jaar($row['jaar'])."</td></tr>";
		$output.= "<tr><td>Uur:</td><td>".startuur($row['uur'])."</td></tr>";
		$output.= "<tr><td colspan='2'><textarea name='info'>".($row['info'])."</textarea></td></tr>";
		$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='editOpslaan' value='Opslaan'></td></tr>";
		$output.= "</table></form>";
	}
	break;
	
	case "nieuwOpslaan";
	$naam =  $mysqli->real_escape_string($_POST['naam']);
	$plaats = $mysqli->real_escape_string($_POST ['plaats']);
	$info =  $mysqli->real_escape_string($_POST ['info']);
	$datum = $mysqli->real_escape_string($_POST ['jaar'])."-".$mysqli->real_escape_string($_POST ['maand'])."-".$mysqli->real_escape_string($_POST ['dag'])." ".$mysqli->real_escape_string($_POST ['uur']).":".$mysqli->real_escape_string($_POST ['minuten']);
	
	$query = "INSERT into agenda(naam, plaats, info, datum) VALUES ('".$naam."', '".$plaats."', '".$info."', '".$datum."')";
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		$pmerking = "Nieuw item is toegevoegd";
	}
	$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "editOpslaan";
		$id = $mysqli->real_escape_string($_POST ['id']);
		$naam = $mysqli->real_escape_string($_POST ['naam']);
		$plaats = $mysqli->real_escape_string($_POST ['plaats']);
		$info =  $mysqli->real_escape_string($_POST ['info']);
		$datum = $mysqli->real_escape_string($_POST ['jaar'])."-". $mysqli->real_escape_string($_POST ['maand'])."-".$mysqli->real_escape_string($_POST ['dag'])." ".$mysqli->real_escape_string($_POST ['uur']).":". $mysqli->real_escape_string($_POST ['minuten']);
		
		$query = "UPDATE agenda SET naam = '".$naam."',  plaats = '".$plaats."', info = '".$info."', datum = '".$datum."' WHERE id='".$id."'";
		if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
		{ 
			$Opmerking = "<span id='opmerkingGoed'>Nieuw item is toegevoegd</span>";
		}
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "default";
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	// toegevoegd by PP
	case "delete";
		$id = $mysqli->real_escape_string($_POST ['id']); 
		
		$query = "DELETE FROM agenda WHERE id=$id";
		if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
		{ 
			$opmerking = "<span id='opmerkingGoed'>Item is verwijderd</span>";
		}
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "default";
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
}


function listItems($mysqli)
{
	$maanden= array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
	$output = "<div><a href='?nieuw' class='button'>nieuw</a></div><h2>Overzicht Agenda</h2><table id='agenda'>";
	$query = "SELECT id, naam, plaats, info, date_format(datum, '%d')as dag, date_format(datum, '%c')as maand, date_format(datum, '%Y')as jaar, TIME(datum)as uur FROM agenda ORDER BY datum DESC";
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		while($row = $result->fetch_assoc())
		{ 
			$output.= "<tr><td class='rowid'>Item ".$row['id']."</td><td class='padding'></td><td class='padding'></td><td class='padding'></td></tr>";
			$output.= "<tr><td class='datum'>".$row['dag']." ".$maanden[$row['maand']-1]." ".$row['jaar']."</td><td class='naam'>".($row['naam'])."</a></td><td><a href='?id=".$row['id']."'class='button'>Bewerk</a></td><td class='delete' id='".$row['id']."'><a class='button'>Verwijder</a></td></tr>";
			$output.= "<tr><td class='uur'>".$row['uur']."</td><td class='plaats'>".($row['plaats'])."</td><td></td><td></td></tr>";
			$output.= "<tr><td class='uur'></td><td class='info'>".($row['info'])."</td><td></td><td></td></tr>";
			
			
		}
	}
	$output.= "</table>";
	
	return $output;
}

function maand($checked, $maanden )
{

	$output = "<select name='maand'>";
	foreach($maanden as $key => $maand)
	{
		$output.= ($key+1 == $checked) ? "<option value='".($key + 1)."' selected='selected'>".$maand."</option>" : "<option value='".($key + 1)."' >".$maand."</option>";
	}
	$output.= "</select>";
	return $output;
}

function dag($checked)
{
	echo $checked;
	$output = "<select name='dag'>";
	for($i=1; $i<=31; $i++)
	{
		$output.= ($i == $checked) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

function jaar($checked)
{
	$output = "<select name='jaar'>";
	for($i=2014; $i<=2020; $i++)
	{
		$output.= ($i == $checked) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

function startuur($startuur)
{
	$uurArray = explode(":", $startuur);
	$output = "<select name='uur'>";
	for($i=0; $i<=24; $i++)
	{
		$output.= ($i == $uurArray[0]) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	
	$output.= "<select name='minuten'>";
	for($i=0; $i<60; $i = $i+5)
	{
		$output.= ($i == $uurArray[1]) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

?>
 
Er hoort geen spatie na $_POST.
 
@PHP4U
Heb de spaties verwijderd, maar probleem bleef zich voordoen.
.htmlentities bracht de oplossing.
Had dat al eerder geprobeerd, maar niet op de juist manier.
Is mijn code nu veilig??

Erg bedankt u zette me op het juiste spoor.

Code:
<?php
ini_set('display_errors', 'on');
include_once 'login/login.inc.php';
include_once 'includes/menu.inc.php';

mysql_query("SET NAMES utf8");

 
$maanden= array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
$opmerking = "";

if ($mysqli->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}


if(isset($_POST['nieuwOpslaan'])){
	$actie = "nieuwOpslaan";
}elseif(isset($_GET['id'])){
	$actie = "edit";
}elseif(isset($_POST['editOpslaan'])){
	$actie = "editOpslaan";
}elseif(isset($_GET['nieuw'])){
	$actie = "nieuw";
}elseif(isset($_POST['deleteBtn'])){
	$actie = "delete";
}else{
	$actie="default";
}

switch($actie)
{
	
  
	case "nieuw";
	
	$output = "<h4>Nieuw item aanmaken</h4><form action='agenda.php' method='post' accept-charset='utf-8'><table>";
	$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
	$output.= "<tr><td></td><td style='color:#bc0024'font-weight:'bold'>Géén ' of \" gebruiken!!</td></tr>";
	$output.= "<tr><td>Naam:</td><td><input type='text' name='naam' value='' size='60'></td></tr>";
	$output.= "<tr><td>Plaats:</td><td><input type='text' name='plaats' value='' size='60'></td></tr>";
	$output.= "<tr><td>Datum:</td><td>".dag(date("j"))." ".maand(date("n"), $maanden)." ".jaar(date("Y"))."</td></tr>";
	$output.= "<tr><td>Uur:</td><td>".startuur("00:00")."</td></tr>";
	$output.= "<tr><td colspan='2'><textarea name='info'>".($row['info'])."</textarea></td></tr>";
	$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
	$output.= "</table></form>";
	break;
	
	case "edit";
	
	$id =  $mysqli->real_escape_string($_GET['id']);
	$query = "SELECT naam, plaats, info, date_format(datum, '%d')as dag, date_format(datum, '%m')as maand, date_format(datum, '%Y')as jaar, TIME(datum) as uur FROM agenda WHERE id='".$id."'";
	
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		$row = $result->fetch_assoc();
		
		$output = "<form action='agenda.php' method='post' accept-charset='utf-8'><input type='hidden' name='id' value='".$id."'><table>";
		$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='editOpslaan' value='Opslaan'></td></tr>";
		$output.= "<tr><td>Naam:</td><td><input type='text' name='naam' value='".htmlentities($row['naam'], ENT_QUOTES)."' size='60'></td></tr>";
		$output.= "<tr><td>Plaats:</td><td><input type='text' name='plaats' value='".htmlentities($row['plaats'], ENT_QUOTES)."' size='60'></td></tr>";
		$output.= "<tr><td>Datum:</td><td>".dag($row['dag'])." ".maand($row['maand'], $maanden)." ".jaar($row['jaar'])."</td></tr>";
		$output.= "<tr><td>Uur:</td><td>".startuur($row['uur'])."</td></tr>";
		$output.= "<tr><td colspan='2'><textarea name='info'>".htmlentities($row['info'], ENT_QUOTES)."</textarea></td></tr>";
		$output.= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='editOpslaan' value='Opslaan'></td></tr>";
		$output.= "</table></form>";
	}
	break;
	
	case "nieuwOpslaan";
	$naam =  $mysqli->real_escape_string($_POST['naam']);
	$plaats = $mysqli->real_escape_string($_POST['plaats']);
	$info =  $mysqli->real_escape_string($_POST['info']);
	$datum = $mysqli->real_escape_string($_POST['jaar'])."-".$mysqli->real_escape_string($_POST['maand'])."-".$mysqli->real_escape_string($_POST['dag'])." ".$mysqli->real_escape_string($_POST['uur']).":".$mysqli->real_escape_string($_POST['minuten']);
	
	$query = "INSERT into agenda(naam, plaats, info, datum) VALUES ('".$naam."', '".$plaats."', '".$info."', '".$datum."')";
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		$opmerking = "Nieuw item is toegevoegd";
	}
	$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "editOpslaan";
		$id = $mysqli->real_escape_string($_POST['id']);
		$naam = $mysqli->real_escape_string($_POST['naam']);
		$plaats = $mysqli->real_escape_string($_POST['plaats']);
		$info =  $mysqli->real_escape_string($_POST['info']);
		$datum = $mysqli->real_escape_string($_POST['jaar'])."-". $mysqli->real_escape_string($_POST['maand'])."-".$mysqli->real_escape_string($_POST['dag'])." ".$mysqli->real_escape_string($_POST['uur']).":". $mysqli->real_escape_string($_POST['minuten']);
		
		$query = "UPDATE agenda SET naam = '".$naam."',  plaats = '".$plaats."', info = '".$info."', datum = '".$datum."' WHERE id='".$id."'";
		if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
		{ 
			$Opmerking = "<span id='opmerkingGoed'>Nieuw item is toegevoegd</span>";
		}
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "default";
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	// toegevoegd by PP
	case "delete";
		$id = $mysqli->real_escape_string($_POST['id']); 
		
		$query = "DELETE FROM agenda WHERE id=$id";
		if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
		{ 
			$opmerking = "<span id='opmerkingGoed'>Item is verwijderd</span>";
		}
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
	
	case "default";
		$output = listItems($mysqli)."<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
	break;
}


function listItems($mysqli)
{
	$maanden= array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
	$output = "<div><a href='?nieuw' class='button'>nieuw</a></div><h2>Overzicht Agenda</h2><table id='agenda'>";
	$query = "SELECT id, naam, plaats, info, date_format(datum, '%d')as dag, date_format(datum, '%c')as maand, date_format(datum, '%Y')as jaar, TIME(datum)as uur FROM agenda ORDER BY datum DESC";
	if(!$result = $mysqli->query($query)){ printf("Errormessage: %s\n", $mysqli->error); }else
	{ 
		while($row = $result->fetch_assoc())
		{ 
			$output.= "<tr><td class='rowid'>Item ".$row['id']."</td><td class='padding'></td><td class='padding'></td><td class='padding'></td></tr>";
			$output.= "<tr><td class='datum'>".$row['dag']." ".$maanden[$row['maand']-1]." ".$row['jaar']."</td><td class='naam'>".($row['naam'])."</td><td><a href='?id=".$row['id']."'class='button'>Bewerk</a></td><td class='delete' id='".$row['id']."'><a class='button'>Verwijder</a></td></tr>";
			$output.= "<tr><td class='uur'>".$row['uur']."</td><td class='plaats'>".($row['plaats'])."</td><td></td><td></td></tr>";
			$output.= "<tr><td class='uur'></td><td class='info'>".($row['info'])."</td><td></td><td></td></tr>";
			
			
		}
	}
	$output.= "</table>";
	
	return $output;
}

function maand($checked, $maanden )
{

	$output = "<select name='maand'>";
	foreach($maanden as $key => $maand)
	{
		$output.= ($key+1 == $checked) ? "<option value='".($key + 1)."' selected='selected'>".$maand."</option>" : "<option value='".($key + 1)."' >".$maand."</option>";
	}
	$output.= "</select>";
	return $output;
}

function dag($checked)
{
	echo $checked;
	$output = "<select name='dag'>";
	for($i=1; $i<=31; $i++)
	{
		$output.= ($i == $checked) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

function jaar($checked)
{
	$output = "<select name='jaar'>";
	for($i=2014; $i<=2020; $i++)
	{
		$output.= ($i == $checked) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

function startuur($startuur)
{
	$uurArray = explode(":", $startuur);
	$output = "<select name='uur'>";
	for($i=0; $i<=24; $i++)
	{
		$output.= ($i == $uurArray[0]) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	
	$output.= "<select name='minuten'>";
	for($i=0; $i<60; $i = $i+5)
	{
		$output.= ($i == $uurArray[1]) ? "<option value='".$i."' selected='selected'>".$i."</option>" : "<option value='".$i."' >".$i."</option>";
	}
	$output.= "</select>";
	return $output;
}

?>
 
enkele opmerkingen

veroudert zie php7
PHP:
mysql_query("SET NAMES utf8");

onderstaande code is gelijk dit
PHP:
$output .= ($i == $checked) ? "<option value='" . $i . "' selected='selected'>" .
            $i . "</option>" : "<option value='" . $i . "' >" . $i . "</option>";
en zelfde als
PHP:
$output .= "<option value='".$i."'".(($i == $checked)?" selected='selected'":"").">".$i."</option>";

validatie kan je doen met de filter functie (is enkel sample en NIET op uw script gebouwd)
PHP:
                    $adate = checkDate(filter_input(INPUT_POST, 'from'));
                    $val['from']=($adate!=false)?$adate:''   ;                    
                    $args = array(
                          'maand'    => array('filter'    => FILTER_REQUIRE_ARRAY, 
                                             'options'   => $maanden),
                          'naam'     => FILTER_SANITIZE_STRING,
                          'id' => FILTER_VALIDATE_INT
                     );
                    $a = filter_input_array(INPUT_POST, $args);
                    $val = $a+$val;
                    $adate = checkDate(filter_input(INPUT_POST, 'to'));
                   $val['to']=($adate!=false)?$adate:'';
de functie date
PHP:
function checkDate($date,$type='US'){
            $a = trim($date);
            $a = str_replace([' ','/'],'-',$a);
            $array = explode('-',$a);
            foreach($array as $key=>$piece){
                if(strlen($piece)==1 ){
                    $array[$key]= '0'.$piece;
                }
            }
            if(\ValidateAs::isUSAdate($a)){
                if($type =='US'){      return $a;                     }
                if($type =='EU'){      return implode('-',array_reverse($array));     }
            }
            if(\ValidateAs::isEUAdate($a)){
                if($type =='EU'){      return $a;                     }
                if($type =='US'){      return implode('-',array_reverse($array));     }
            }
            return false;
}


stel dat je een value $post['action'] ... (edit ,delete ,nieuw ...)
dan zou je
PHP:
switch ($post['action']) {
    case "nieuw";

	case'default':
	break;

	default ://default moet je niet maken maar bij default doe je niets

nu bij u hebt u
de laaste default staat er niets te doen omdat php er nooit zal komen en kan komen
PHP:
    case "default";
        $output = listItems($mysqli) .
            "<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
        break;
        // toegevoegd by PP
    case "delete";
        $id = $_POST['id'];
        $query = "DELETE FROM agenda WHERE id=$id";
        if (!$result = $mysqli->query($query)) {
            printf("Errormessage: %s\n", $mysqli->error);
        } else {
            $opmerking = "<span id='opmerkingGoed'>Item is verwijderd</span>";
        }
        $output = listItems($mysqli) .
            "<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
        break;
    case "default";
        $output = listItems($mysqli) .
            "<div id='extraMenu'><a href='?nieuw' class='button'>nieuw</a></div>";
        break;

stel dat je form edit nieuw zonder break boven elkaar staat kan je twee acties met zelfde form doen mits nog wat aanpassingen .
hierdoor kan je nadien moest je er een stuk moeten veranderen of bijplaatsen je dit sneller zou kunnen doen.

PHP:
    case "edit";
        $id = $_GET['id'];
        $query = "SELECT naam, plaats, info, date_format(datum, '%d')as dag, date_format(datum, '%m')as maand, date_format(datum, '%Y')as jaar, TIME(datum) as uur FROM agenda WHERE id='" .
            $id . "'";
        if (!$result = $mysqli->query($query)) {
            printf("Errormessage: %s\n", $mysqli->error);
        }
case "nieuw";
        $output = "<h4>Nieuw item aanmaken</h4><form action='agenda.php' method='post' accept-charset='utf-8'><table>";
        $output .= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
        $output .= "<tr><td></td><td style='color:#bc0024'font-weight:'bold'>Géén ' of \" gebruiken!!</td></tr>";
        $output .= "<tr><td>Naam:</td><td><input type='text' name='naam' value='' size='60'></td></tr>";
        $output .= "<tr><td>Plaats:</td><td><input type='text' name='plaats' value='' size='60'></td></tr>";
        //$output.= "<tr><td>Link:</td><td><input type='text' name='link' value='' size='60'></td></tr>";
        $output .= "<tr><td>Datum:</td><td>" . dag(date("j")) . " " . maand(date("n"), $maanden) .
            " " . jaar(date("Y")) . "</td></tr>";
        $output .= "<tr><td>Uur:</td><td>" . startuur("00:00") . "</td></tr>";
        $output .= "<tr><td colspan='2'><textarea name='info'>" . ($row['info']) .
            "</textarea></td></tr>";
        $output .= "<tr><td colspan='2' id='buttons'><input type='button' value='Annuleren' onclick=\"window.open('agenda.php', '_self');\">&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' name='nieuwOpslaan' value='Opslaan'></td></tr>";
        $output .= "</table></form>";
        break;
 
Laatst bewerkt:
@kenikavanbis
Alhoewel ik niet alles snap (ben een leek op het gebied van php) toch bedankt voor de opmerkingen.
Script zal enkel gebruikt worden in een beveiligde directory dus zit ik redelijk safe denk ik.
Zo neen dan hoor ik het graag.

Groeten
Paul
 
De laatste alinea:

Zonder beveiliging tegen SQL-injection ben je gewoon zéér vatbaar voor hackers. Plus dat jezelf je queries kan manipuleren met een apostrof, met rare gevolgen van dien.
Dus als je een script niet beveiligt tegen SQL-injection, en het simpel wilt oplossen door het in een beveiligde map te plaatsen (Lees ook: Security through obscurity), dan vergis je je behoorlijk.
Voer maar eens 's Gravenshage in bijv.
 
's Gravenshage invoeren lukt nu.
Omdat, zoals ik in een vorige post vertelde, .htmlentities de oplossing bracht.
En ik heb ook zoals je aangaf overal real_escape_string() ingevoegd.
Wat kan ik nog meer doen?

Paul
 
De functie real_escape_string() is de juiste beveiliging tegen SQL injection. Als je echt heel veilig wilt zijn, moet je ook htmlentities uitvoeren over de output van je query, zodat HTML onschadelijk wordt gemaakt. Echter is dit niet handig voor als je een WYSIWYG-textarea gebruikt zoals TinyMCE, CKeditor of iets anders.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan