Ik heb een pagina aangemaakt dat gebruikers gegevens kunnen bewerken maar er viel mij iets op dat je vanaf urlbalk andere regels (en ook ids wat nog niet bestaat) van tabellen kunt bewerken terwijl dat de bedoeling niet is of je voert zomaar bijvoorbeeld letters er achter id= dan zie je nog steeds geen foutmelding.
Hoe zorg ik er voor dat je geen id uit je hoofd kan invoeren en overbodige letters met andere leestekens blokkeren?
Ik mis nog steeds een goede stroomlijn in de code. Probeer deze eens, dit is een stuk logischer opgebouwd en tevens ook overzichtelijker.
<?PHP
session_start();
if (!(isset($_SESSION['user_login_status']) && $_SESSION['user_login_status'] != '')) {
header ("Location: index.php");
} else {
// je bent ingelogd, vervolg de rest van de stappen..
if(isset($_GET['id']) && $_GET['id'] > 0) {
// controleer of het ID is ingevuld en groter is dan 0
// VOER HIER DE REST VAN DE STAPPEN UIT!!!!!
} else {
echo "Er is geen ID-nummer ingevuld!";
}
}
?>
<?php
if ($veiligheidsCheckDieMislukt) {
header('Location: unauthorized.htm');
}
// Deze code wordt gewoon uitgevoerd alvorens je geredirect wordt...
?>
Zet na een header('Location: ...') altijd een exit.
Ik heb dit topic nu een tijdje zitten volgen en ik zit mij een beetje te verbijten over de structuur. Wat ik persoonlijk zou doen is het volgende:
- maak een inventarisatie van de verschillende soorten gebruikers
heb je een superadmin die alles ziet? of alleen maar gebruikers die bij hun eigen werkstukken kunnen?
dit bepaalt mede uit hoeveel verschillende (beheer)schermen je applicatie bestaat
- maak een opdeling in acties, er zijn er al een aantal de revu gepasseerd:
* toevoegen werkstuk
* inzage/wijzigen werkstuk
* verwijderen werkstuk
Overigens zou je over die laatste kunnen nadenken: gooi je echt alles daadwerkelijk weg, of zet je een "deleted" flag op true zodat de gebruiker dit werkstuk niet meer ziet, maar wanneer iemand klaagt dat de computer zijn/haar werkstuk heeft opgegeten, dan kun je deze eenvoudig terughalen
- stop herhalende delen in aparte bestanden
zoals het starten van een sessie, het opbouwen van een database connectie; ook zou je wat hulpfuncties voor database-queries in het leven kunnen roepen
Kortom, misschien wordt het tijd eens inhoudelijk na te denken over het (fatsoenlijk) structureren van je applicatie.
Zet na een header('Location: ...') altijd een exit.
Toegevoegd
- maak een inventarisatie van de verschillende soorten gebruikers
heb je een superadmin die alles ziet? of alleen maar gebruikers die bij hun eigen werkstukken kunnen?
dit bepaalt mede uit hoeveel verschillende (beheer)schermen je applicatie bestaat
Nee, er is geen superadmin.
- maak een opdeling in acties, er zijn er al een aantal de revu gepasseerd:
* toevoegen werkstuk
* inzage/wijzigen werkstuk
* verwijderen werkstuk
Verwijderen werkstuk is er niet. De reden heb je al opgenoemd.
- stop herhalende delen in aparte bestanden
zoals het starten van een sessie, het opbouwen van een database connectie; ook zou je wat hulpfuncties voor database-queries in het leven kunnen roepen
Include heb ik nog niet gebruikt omdat ik juist hele overzicht wilde tonen.
.... en begin daarom eens aan het ontwerpen en uitschrijven van een 'flowchart'.
Voor edit pagina is flowchart niet nodig toch? Ik bedoel flowchart is voor hele project bedoeld.