Informatie uit database koppelen aan variable

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Guus Hennen

Guus Hennen

18/03/2013 14:38:41
Quote Anchor link
Hoihoi,

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!
 
PHP hulp

PHP hulp

18/11/2024 01:43:24
 
- Ariën  -
Beheerder

- Ariën -

18/03/2013 15:15:06
Quote Anchor link
Waarom doe je zo moeilijk, en gebruik je voor elk gegegevn een query die niet veel verschilt van de anderen? Jij gebruikt nu techniek van 15 jaar geleden; uit PHP 3, terwijl het al sinds PHP 4 (12 jaar geleden ofzo) veel netter kan.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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().
}
?>


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 -
 
Guus Hennen

Guus Hennen

18/03/2013 15:28:21
Quote Anchor link
Hoi, bedankt voor je reactie, ik ga het zo meteen proberen.
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!
 
- Ariën  -
Beheerder

- Ariën -

18/03/2013 15:37:33
Quote Anchor link
Ik ben ten eerste benieuwd waar je dit vond. Want jouw gevonden idee is behoorlijk uit de tijd ;-)
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.
 
Guus Hennen

Guus Hennen

25/03/2013 08:05:11
Quote Anchor link
Ja, ik heb nog eens uitgebreid gegoogled, maar kan hem niet meer vinden. Over het wachtwoord systeem gesproken. Ik begrijp nu dat het een stuk veiliger is via sha. Als ik het goed begrijp, zijn dit de enige functies die ik hiervoor nodig heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$str
= 'Hello';
echo sha1($str);

if (sha1($str) == 'f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0')
  {

  echo "<br />Hello world!";
  exit;
  }

?>


Deze heb ik gevonden op www.w3schools.nl

Als ik vervolgens via sessions een inlogsysteem maak, is dat dan veilig genoeg?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.