Hallo,

Ik ben sinds 2 jaar weer een beetje begonnen met PHP en loop nu vast.
Ik heb een login en upload systeem gemaakt (dit werkt).
Alleen nu bij het uitlezen kom ik er niet helemaal aan uit.

Dit is de website: www.lotteleemreijze.com/test/portfolio3.php

Nu heb ik bij de image slider zelf een getal aangegeven:

$opdracht = "SELECT * FROM portfolio_image WHERE portfolio_ID = '17' order by image";

Maar eigenlijk moet deze variabel zijn en worden doorgegeven door de thumbs daaronder. Nu weet ik alleen niet hoe ik dit moet doen. In de adresbalk geeft hij al wel het portfolio_ID mee wat bij de thumb hoort. Verder kom ik even niet.
Zou iemand mij hiermee kunnen helpen?
bedoel je dat er bijvoorbeeld in het adresbalk staat:
mijnpagina.php?portfolio_ID=17
en deze ID meegenomen moet worden in de SELECT query? Zo ja:
WHERE portfolio_ID ='$_GET[portfolio_ID]'
.
Hij doet het nu inderdaad, super bedankt!
Ik was al zo bezig:

$portfolio_ID=$_GET["portfolio_ID"];

En $portfolio zette ik dan daar op de plaats van '$_GET[portfolio_ID]'.

Na 2 jaar gaat het toch allemaal wat moeilijker als verwacht.
Dus heel erg bedankt!
Denk wel aan je beveiliging he...
Ozzie PHP op 18/06/2012 23:22:03

Denk wel aan je beveiliging he...


Hoe bedoel je dat?
Ozzie bedoelt waarschijnlijk SQL-Injection.
deze kun je opvangen door mysql_real_escape_strings() in je query op te nemen.
Nou, dat je niet zomaar een variabele in een query plaatst, maar dat je eerst even controleert of die variabele ook daadwerkelijk is wat jij verwacht. En dat je mysql injection tegengaat.

Dit:
mijnpagina.php?portfolio_ID=17

kan je heel makkelijk veranderen in:

mijnpagina.php?portfolio_ID=een_stukje_code_die_jouw_site_hackt

en jouw query wordt dan:

WHERE portfolio_ID ='een_stukje_code_die_jouw_site_hackt'

waarbij 'een_stukje_code_die_jouw_site_hackt' nu gewoon een stukje tekst is, maar waar in de praktijk hackers iets heel anders kunnen invoeren.
Aha bedankt, zover ben ik dus nog nooit gekomen...
Maar ik zal eens gaan kijken of ik dat ga snappen.
Heb net wat opgezocht op internet en lijkt me nog redelijk ingewikkeld.
Maar in ieder geval bedankt voor de tip!
Ik ga ermee aan de slag.
Als t niet lukt kun je altijd hier je vraag stellen hoor ;)
Thnx! =) Ik kan de hulp goed gebruiken denk ik...
Maar ik zal het eerst zelf eens gaan proberen...
En als het toch een integer is (wat een id normaal gesproken is en in je voorbeeld ook zo is), dan moet je zorgen dat dat een integer is. Ten eerste dus de enkele quotes weglaten uit je query, die zijn alleen nodig voor strings, niet voor integers. Daarnaast je user input typecasten naar een string. Daarmee weet je zeker dat het in het juiste formaat is en dat je query geen probleem gaat krijgen en dat er geen sql injectie op dat punt mogelijk is. Dus:
<?php
$opdracht = "SELECT *
FROM portfolio_image
WHERE portfolio_ID = ".intval($_GET['portfolio_ID'])."
order by image";
?>

Reageren