Door
Dimitri Geers
op 03-02-2014 16:33
gewijzigd op 03-02-2014 16:40
4.713 views
Beste,
Ik ben bezig met een systeem in php.
Ik heb de code al maar deze werkt helaas niet.
Hier even een snelle uitleg over de code.
Hij zou een userid moeten ophalen uit de database en deze vervolgens weer in een andere database moeten zetten.
Dit werkt niet. Het gaat over $userid = $row2['userid'];
[modedit="- Aar -"]beste Dimitri,
Meerdere mensen op dit PHPhulp forum hebben problemen met hun PHP-code, daarom verzoek ik je vriendelijk om je bericht aan te passen en een betere titel te gebruiken.
Ook wil ik je daarbij graag vragen om [code]-tags om je code heen te plaatsen voor betere leesbaarheid.
Je geeft al aan dat je code een zooi is, maar waarom maak je het dan niet netter?
Zo zie ik:
- Dat je onnodig variabelen overschrijft
- SQL-injection is mogelijk, doordat de de invoer van je GET en POST niet controleert met mysql_real_escape_string()
- Je controleert verkeerd of je formulier verstuurd is. Dat kan je beter doen met: if($_SERVER['REQUEST_METHOD']=="POST") {
- Variabelen horen buiten quotes
- Er mist foutafhandeling op je querie...
?
Onbekende gebruiker
03-02-2014 16:47
Opmerkingen op je code:
Regel 5: Controleer eerst of er wel een get bestaat. Je maakt gebruik van een DB (Database), dus heb je beveiliging nodig. Mysql_real_escape_string is hiervoor een optie.
<?php
if(isset($_GET['stad'])){ // Controleren of stad in de link staat
$stadid = mysql_real_escape_string($_GET['stad']); // Extra beveiliging
}
?>
Regel 7 & 10: Gebruik geen Wildcards (*)
Regel 12 en 14 kunnen in 1:
<?php
if(isset($_POST['submit'])){
// rest
}
?>
Regel 18: Je gebruik INSERT INTO. Ooit al naar de juiste INSERT gekeken? Je geeft niet aan wat er geinsert moet worden:
INSERT INTO aanwezigen(kolomnaam1,user_id,stad_id) VALUES ('','$userid','$stadid')
Tevens bestaat $userid nog niet, deze wordt pas later in een variabele gezet.
Regel 5: Controleer eerst of er wel een get bestaat. Je maakt gebruik van een DB (Database), dus heb je beveiliging nodig. Mysql_real_escape_string is hiervoor een optie.
<?php
if(isset($_GET['stad'])){ // Controleren of stad in de link staat
$stadid = mysql_real_escape_string($_GET['stad']); // Extra beveiliging
}
?>
Regel 7 & 10: Gebruik geen Wildcards (*)
Regel 12 en 14 kunnen in 1:
<?php
if(isset($_POST['submit'])){
// rest
}
?>
Regel 18: Je gebruik INSERT INTO. Ooit al naar de juiste INSERT gekeken? Je geeft niet aan wat er geinsert moet worden:
INSERT INTO aanwezigen(kolomnaam1,user_id,stad_id) VALUES ('','$userid','$stadid')
Tevens bestaat $userid nog niet, deze wordt pas later in een variabele gezet.
Na deze aanpassingen wordt de userid nog steeds in de database gezet als 0.
Zou u mij misschien nog verder kunnen helpen?
?
Onbekende gebruiker
03-02-2014 17:05
"Tevens bestaat $userid nog niet, deze wordt pas later in een variabele gezet."
Heb je dit aangepast?
Zet $userid = $row2['userid']; eens onder de $sql12 neer.
Waarschijnlijk heb je in de tabel een default value 0 ingesteld voor de kolom user_id, en zoals eerder aan gegeven bestaat $user_id niet als je de insert query uitvoert.