--
-- Table structure for table `account`
--
CREATE TABLE IF NOT EXISTS `account` (
`u_id` int(11) NOT NULL AUTO_INCREMENT,
`u_naam` varchar(250) NOT NULL,
`avatar` varchar(250) NOT NULL,
PRIMARY KEY (`u_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Table structure for table `tickets`
--
CREATE TABLE IF NOT EXISTS `tickets` (
`token` CHAR(40) NOT NULL,
`ticket_naam` varchar(250) NOT NULL,
`ticket_datum` date NOT NULL,
`plaats` varchar(250) NOT NULL,
`prijs` int(2) NOT NULL,
`betaallink` varchar(250) NOT NULL,
`u_id` int(11) NOT NULL,
PRIMARY KEY (`token`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
?php
// retrieve token
if (isset($_GET["listing"]) && preg_match('/^[0-9A-F]{40}$/i', $_GET["listing"])) {
$token = $_GET["listing"];
}
else {
throw new Exception("niks gevonden");
}
// verify token
$query = $db->prepare("SELECT u_id, ticket_naam FROM tickets INNER JOIN account ON tickets.ticket_id = account.u_id WHERE token = ?");
$query->execute(array($token));
$row = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();
if ($row) {
extract($row);
}
else {
throw new Exception("niks gevonden");
}
$row["u_naam"];
$row["ticket_naam"];
?>
wat nou het idee moet wezen zodra ik 1 aanmaak wil ik dat die een aparte token code krijgt met link zodat je van de table users informatie leest en de tickets van die user die code kunnen mensen dan sturen zodat ze de pagina kunnen zien iemand tips/ of beetje op weg kan helpen
zodat ik straks elk pagina een token code heeft, bijvoorbeeld ?listing=SHGDHAGDADHGAHG
die lees dan de data af van de token, en vanuit de tabellen
de gegevens van account afleest en van tickets.
Maar dat is dan een select query
dus wat ik aan jullie vraag
hoe moet ik de sql query doen
insert into en select
Huh? prepared statements zijn een stuk veiliger als er zoals hier een get variabele in de query wordt opgenomen...
Dit is simpelweg niet waar. Het enige wat veiligheid ten goede komt is een juist gebruik. Wanneer je prepared statements verkeerd gebruikt is dit even onveilig als enige andere methode.
- Ariën - op 29/09/2019 14:51:10
Maar bij beiden moet je ervoor zorgen dat de invoer veilig is.
Ook dit klopt niet (helemaal). Je moet gewoon alle DATA in je query escapen. Het maakt dan niet uit of deze onveilig was of niet.
ontopic: wat ik wel zou doen is de hash ergens aan koppelen in de hyperlink. Als je enkel een hash in een URL meegeeft dan zou je deze veel makkelijker kunnen bruteforcen (alle combinatie afgaan totdat je een match hebt). Dit wordt al (een stuk) moeilijker als je een tweede argument toevoegt, zelfs een auto increment id kan al helpen. Dan moet namelijk de combinatie kloppen.
EDIT: tenzij dit een afgeschermd systeem is waar de gebruiker zich eerst moet authenticeren.
En ja, je zult ook op een of andere manier een verband moeten leggen tussen beide tabellen...
De tweede SQL-string ($sql) wordt overschreven door de eerste. Je zult echt twee queries moeten uitvoeren waarbij je het insert-id van de eerste query, die dus in wezen het user-id bevat, invoegt in de tweede query.
@Ariën: ja, zie de tabeldefinities in het oorspronkelijke bericht.