Informatie uit database koppelen aan variable
Ik ben een beginnetje aan het maken aan een kleine CMS, en loop tegen een probleem aan.
Ik heb een database, waar ik voor iedere user een row heb, met de columns: id, user, pass, fname, sname, age.
Nu wil ik de nodige data die bij een user hoort, in een slag koppelen aan de variables: $pass, $fname, $sname, $age. Zo kan ik deze later eenvoudig gebruiken in de rest van de website. Op dit moment doe ik dat alsvolgt:
$pass = mysql_result(mysql_query("SELECT pass FROM usersettings WHERE user = '$user'"),0);
$fname = mysql_result(mysql_query("SELECT fname FROM usersettings WHERE user = '$user'"),0);
$sname = mysql_result(mysql_query("SELECT sname FROM usersettings WHERE user = '$user'"),0);
$age = mysql_result(mysql_query("SELECT age FROM usersettings WHERE user = '$user'"),0);
Ik heb straks nog veel meer gegevens aan een user hangen, dus dat wordt snel een hele waslijst. Is dit in te korten?
Voor zover bedankt!
Zo moet je het doen. Ik heb geen idee of je een bepaalde tutorial voor je bouwwerk hebt gebruikt, maar die is dan echt hopeloos verouderd.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql = "SELECT pass, fname, sname, age FROM usersettings WHERE user = '".$user."'"; // waar komt $user vandaan?
$result = mysql_query($sql);
if($result) {
$data = mysql_fetch_assoc($result);
print_r($data);
// gebruik bijv. $data['sname']
} else {
// De query is niet gelukt. Echo hier mysql_error().
}
?>
$sql = "SELECT pass, fname, sname, age FROM usersettings WHERE user = '".$user."'"; // waar komt $user vandaan?
$result = mysql_query($sql);
if($result) {
$data = mysql_fetch_assoc($result);
print_r($data);
// gebruik bijv. $data['sname']
} else {
// De query is niet gelukt. Echo hier mysql_error().
}
?>
Een paar opmerkingen:
- het veld Age, staat hier de leeftijd in? Dus elk jaar moet deze handmatig aangepast worden? Of is dit de geboortedatum?
- Je moet nooit wachtwoorden ongecodeerd in 'plain text' opslaan. Gebruik liever sha1() met een salt, of bcrypt().
Gewijzigd op 18/03/2013 15:17:44 door - Ariën -
Ik ben nog beginner met php en mysql, en als ik specifiek zoek op google, kwam ik deze manier het eerste tegen. Het leek me al veel te moeilijk.
Goede opmerking over de leeftijd, maar dat is inderdaad de geboortedatum.
Wat het wachtwoord betreft, waarom kan ik een wachtwoord niet als plain text opslaan? Daar kan toch in princiepe niemand aan? En welke manier is het eenvoudigst? Ik probeer het allemaal zo easy mogelijk te houden.
Bedankt weer!
Als je PHP wilt leren kan ik je zeker aanraden om eens op phptuts.nl, hier is een hele goede beginnerstutorial te vinden.
Waarom zou je een wachtwoord in plain-text opslaan? Wat nou als je een corrupte beheerder in dienst hebt die de wachtwoorden uit kan lezen, of dat je site gehackt is waarmee je wachtwoorden op straat liggen. Grote kans dat die wachtwoorden van de gebruikers weer te herleiden zijn naar anderen diensten, zoals Gmail, Facebook, Hyves, Twitter etc...
Daarom raad ik met klem aan om over te stappen op bcrypt(), of sha1() met een salt-waarde als extra veiligheid, om 'bute-force' aanvallen tegen te gaan. Het nadeel is wel dat je gebruikers bij een vergeten wachtwoord een nieuwe krijgen, maar de meeste nemen dat zeker voor lief.
Of je het makkelijk voor jezelf houdt, dat is aan jouw. Maar het gaat ook om de veiligheid, en daar moet je je dan ook goed in verdiepen.
Code (php)
Deze heb ik gevonden op www.w3schools.nl
Als ik vervolgens via sessions een inlogsysteem maak, is dat dan veilig genoeg?