5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)
  • Q:
    Bijdrager
    ikkukk

    Gegevens uit MySQL halen en op PHP pagina zetten

    Hallo,

    In mijn MySQL tabel heb ik de volgende kollommen: id, omschrijving, gebruikersnaam en wachtwoord.
    Graag wil ik op een php pagina het volgende hebben: Welkom, “omschrijving”.

    Maar na vele pogingen krijg ik alle omschrijvingen van alle gebruikers achter elkaar, wat natuurlijk niet mijn bedoeling is.

    Wie kan mij verder helpen om alleen de omschrijving te laten weergeven van die gebruiker is ingelogd.

    Geblokkeerd
    geanonimiseerde gebruiker

    WHERE ID = $ID

    Bijdrager
    Wyodor

    Een miljoenmiljard handleidingen en cursussen op de Interwebs en juist deze vraag wordt nergens behandeld.

    Bijdrager
    mtooster

    En de volgende onveilige website wordt geboren….

    http://www.welkomopmijnsite.nl/login.php?gebruikersnaam=”‘pietje’;DROP TABLE ‘gebruikers’;”

    Lees je even in over mysql-injection etcetera voordat je dit echt allemaal gaat gebruiken.

    Bijdrager
    Nino ten Voorde

    Mijn advies is om “mysql_*” achterwege te laten. Vanaf PHP versie 5.5 wordt dit namelijk niet meer ondersteund. Meeste Webhosters ondersteunen ook mysqli. Deze kent twee stijlen: Procedural style (zoals Mysql_*) en Object oriented style.

    Op het gebied van MySQL-injectie werkt de beveiliging net even iets anders.

    MySQL

     
    function getuserdata($id){
     
    	mysql_connect('server', 'user', 'password') or die(mysql_error());
     
    	mysql_select_db('database') or die(mysql_error());
     
    	//mysql_real_escape_string zorgt ervoor dat je geen mysql commando's kan uitvoeren, het wordt als kale tekst (string) opgenomen.
    	//(INT) zorgt ervoor dat de string een integer wordt, zoals die hopelijk ook als id-kolom ingesteld staat.
     
    	$id = (INT) mysql_real_escape_string($id); //Eigenlijk is mysql_real_escape_string hier dubbelop.
    	$desc = mysql_real_escape_string($desc);
    	$usrname = mysql_real_escape_string($usrname);
    	$passwd = mysql_real_escape_string($passwd);
     
    	$data = mysql_query(“SELECT <code>id</code>,<code>desc</code>,<code>usrname</code> FROM <code>users</code> WHERE id=’$id'”); //Laad niet het wachtwoord in als dit niet nodig is.
    	$returndata = array();
     
    	while($user = mysql_fetch_array($data)) {
    		$returndata[] = array('id'=>$user[0],'desc'=>$user[1],'usrname'=>$user[2]); 
    	}
     
    	return $returndata; //Geef data terug aan de aanvrager.
    }
     
    $users = getuserdata($_SESSION['id']); //array(array('id'=>'1','desc'=>'Mijn account','usrname'=>'Piet'), array('id'=>'1','desc'=>'Ik mag hier niet wezen','usrname'=>'id1-duplicaat') );
     

    Nest alles in functies en roep de functie aan wanneer de data nodig is. De variable $users vraagt aan de functie getuserdata() om de gegevens op te halen. De functie krijgt een parameter mee, wat het ID dat in de sessie opgeslagen is. Als alles goed gaat, geeft de functie een array terug. De variable $users wordt dus automatisch een array, met daarin weer een array (voor het geval dat er twee users zijn met het zelfde ID. Ik hoop het niet, want dan staat er iets verkeerds in de database-tabel. Om de data echt te weergeven op het scherm doe je buiten een functie, met bijvoorbeeld foreach($users as $user). Vergeet niet om htmlentities te gebruiken bij het uit-echo-en van strings. Hiermee beveilig je je website tegen grapjassen die htmltags zoals < script > gebruiken in hun gebruikersnaam om ongewenste scripts in te laden.

5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.