$_SESSION weergeven in echo, database uitlezen

Status
Niet open voor verdere reacties.

Egel007

Gebruiker
Lid geworden
4 dec 2007
Berichten
271
Hallo,

Tot mijn grote verbazing krijg ik het niet voor elkaar om een sessie te maken en deze uit te lezen. Ik had eerst een loginsysteem met sessies gemaakt, maar ben toch voor cookies gegaan i.v.m. het opslaan van een winkelwageninhoud. Nou het inloggen krijg ik voor elkaar, maar het weergeven van die ingelogde persoon zijn/haar naam, wilt me maar niet lukken. Ik kan de fout ook echt niet vinden.

Misschien hebben jullie een idee? Het is vast iets gigantisch verkeerds wat ik zomaar over het hoofd zie, maar ik zit al de hele dag vanalles te proberen en het blijft verkeerd gaan. Het enige wat ik constant krijg is 'Welkom', maar zonder de naam o.i.d.

Mijn code:
PHP:
<?php
	session_start();
	
	$host = "localhost";
	$user = "**";
	$pswd = "**";
	$db = "**";

	// Verbind met de MYSQL-server
	$actie = mysql_connect($host, $user, $pswd) or
        	 die(mysql_error());
	
	// selecteer de hierboven ingestelde database
	$actie = mysql_select_db($db) or die(mysql_error());
	
	if($_POST)
	{
		$emailadres = $_POST['email'];
		$wachtwoord = $_POST['wachtwoord'];
		$wachtwoord = md5($wachtwoord);
		$query = "SELECT * FROM gebruikers WHERE emailadres ='$emailadres' AND wachtwoord = '$wachtwoord'";
		$result = mysql_num_rows(mysql_query($query));
		if($result==1)
		{	
			$cookiewaarde = 'ja';
			setcookie("ingelogd", $cookiewaarde);
			
			$_SESSION['naam'] = $result['voornaam'];
			
			echo 'Welkom ' .$_SESSION['naam'];
		}
	}
	else
	{
		echo "Niet gelukt.";
	}
?>

Alvast bedankt!

Groetjes
 
je bent zo wie zo een makkelijke prooi om gehackt te worden.
nu is sql injectie geen optie meer
PHP:
<?php
    session_start();
    
    $host = "localhost";
    $user = "**";
    $pswd = "**";
    $db = "**";
 
    // Verbind met de MYSQL-server
    $actie = mysql_connect($host, $user, $pswd) or
             die(mysql_error());
    
    // selecteer de hierboven ingestelde database
    $actie = mysql_select_db($db) or die(mysql_error());
    
    if($_POST)
    {
        $emailadres = mysql_real_escape_string(strip_tags($_POST['email']));
        $wachtwoord = mysql_real_escape_string(strip_tags($_POST['wachtwoord']));
        $wachtwoord = md5($wachtwoord);
        $query = "SELECT * FROM gebruikers WHERE emailadres ='$emailadres' AND wachtwoord = '$wachtwoord'";
        $result = mysql_num_rows(mysql_query($query));
        if($result==1)
        {   
            $cookiewaarde = 'ja';
            setcookie("ingelogd", $cookiewaarde);
            
            $_SESSION['naam'] = $result['voornaam'];
            
            echo 'Welkom ' .$_SESSION['naam'];
        }
    }
    else
    {
        echo "Niet gelukt.";
    }
?>
Heb je de login pagina ook zodat we het kunnen testen?
en een bestandje om de database te maken?
 
Laatst bewerkt:
Wat voor fouten krijg je precies, of wat gebeurd er?
 
Oh, ja natuurlijk.
Ik heb er wel wat mee zitten prutsen, hoor.

PHP:
<?php
	session_start();
	
	$host = "localhost";
	$user = "**";
	$pswd = "**";
	$db = "**";

	// Verbind met de MYSQL-server
	$actie = mysql_connect($host, $user, $pswd) or
        	 die(mysql_error());
	
	// selecteer de hierboven ingestelde database
	$actie = mysql_select_db($db) or die(mysql_error());
	
	if(isset($_COOKIE['ingelogd'])){
		echo $_SESSION['naam'];
		echo "al ingelogd";
	}
	else
	{
	
?>

<html>
	<head>
		<title>Test</title>
	</head>
	<body>
		<form action="inlogcheck.php" method="post">
			E-mail: <input type="text" name="email">
			Wachtwoord: <input type="password" name="wachtwoord">
			<input type="submit" name="submit">
		</form>
	</body>
</html>

<?php
	}
?>

Edit
@Frats,

Er verschijnt bij de inlogcheck.php alleen 'Welkom,'.
Zonder de naam dus, terwijl ik graag zou willen dat er Welkom, *naam ingelogde gebruiker* komt te staan. Er staan ook gewoon gegevens in de database overigens, met dezelfde variabelen (voornaam).
 
Laatst bewerkt:
als ik jouw script uitvoer krijg ik niks te zien:
Ik heb hem trouwens nopg aangepast.
PHP:
<?php
    session_start();
    
    $host = "localhost";
    $user = "root";
    $pswd = "usbw";
    $db = "gebruikers";
 
    // Verbind met de MYSQL-server
    $actie = mysql_connect($host, $user, $pswd) or
             die(mysql_error());
    
    // selecteer de hierboven ingestelde database
    $actie = mysql_select_db($db) or die(mysql_error());
    
    if($_POST)
    {
        $emailadres = mysql_real_escape_string(strip_tags($_POST['email']));
        $wachtwoord = mysql_real_escape_string(strip_tags($_POST['wachtwoord']));
        $wachtwoord = md5($wachtwoord);
        $query = mysql_query("SELECT * FROM gebruikers WHERE emailadres ='$emailadres' AND wachtwoord = '$wachtwoord'");
        $result = mysql_num_rows($query);
        if($result!=0)
        {   
            $cookiewaarde = 'ja';
            setcookie("ingelogd", $cookiewaarde);
            
            $_SESSION['naam'] = $result['email'];
            
            echo 'Welkom ' .$_SESSION['naam'];
        }
    }
    else
    {
        echo "Niet gelukt.";
    }
?>
Zal vanavond/morgen verder kijken tenzij er al andere zijn de het oplossen.
 
Weet je zeker dat het database veld "voornaam" heet? Dat is het enige wat ik zo kan zien dat misschien fout gaat.
 
Ja, ik kan dus ook werkelijk niets verkeerds vinden eigenlijk.
En de database bevat echt het veld voornaam.
Dit zijn de velden die ik in de database heb staan:
gebruikers_id
voornaam
tussenvoegsel
achternaam
telefoon
adres
postcode
plaats
land
emailadres
wachtwoord

Dus dat is echt niet wat er mis gaat.
Ik snap er echt helemaal niets van.
 
><

Ik zie het al. Je $result wordt gevuld met mysql_numrows. Daar zit dus alleen een getal in (het aantal rijen) en niet de data die je opgehaald hebt.

Je moet mysql_fetch_assoc() gebruiken.
 
$query = mysql_query("SELECT * FROM gebruikers WHERE emailadres ='$emailadres' AND wachtwoord = '$wachtwoord'");
$result = mysql_num_rows($query);
if($result!=0)
Dit kan ook nooit!
$result is een integer(getal)
Dan gaat dit nooit werken!
$_SESSION['naam'] = $result['email'];
 
Dus wordt het:
$query = mysql_query("SELECT * FROM gebruikers WHERE emailadres ='$emailadres' AND wachtwoord = '$wachtwoord'");
$result = mysql_fetch_assoc($query);
if($result!=0){
blabla

Maar dan werkt dat uitlezen nog steeds niet omdat result in dit geval een getal is.
Hoe los ik het op dan?

Bedankt trouwens iedereen alvast!

EDIT
Bij een ander stuk code wat ik eerder heb gemaakt, heb ik ook gevonden dat ik onder de query de volgende regel ertussen heb staan (dus tussen $query en $result):
$resource = mysql_query($query);

Als ik er nu deze tussenzet, en dan zoals hierboven de code staat een session maak, dan zou hij de database wel uit moeten lezen, of?
 
Laatst bewerkt:
nee,
$count = mysql_mun_rows($query);
if($count != 0) {
blabla
 
Dat werkt dan toch ook niet, want dan wordt er toch weer alleen een getal 'opgeslagen'?
 
$result moet je wel behouden in je script.

de $count is een toevoeging.
 
Dan zou ik krijgen:
PHP:
<?php
$query = "SELECT * FROM gebruikers WHERE blabla";
$result = mysql_fetch_assoc($query);
$count = mysql_num_rows($query);
if ($count !=0){

// cookie en sessie aanmaken
?>

Als dit bovenstaande klopt, kan het niet. Dan krijg ik namelijk een error dat voor zowel mysql_fetch_assoc en mysql_num_rows espect parameter 1 to be resource.

Ik begrijp er echt eventjes niks meer van.
 
Je moet de query ook uitvoeren met mysql_query:
PHP:
$query = mysql_query("SELECT * FROM gebruikers WHERE blabla");
 
Dan nog weigert hij de naam uit te lezen...
Maar dat was wel een stomme fout. Vandaar de errors, denk ik, haha.

EDIT
Hm, na even later nog een keer gerefresht te hebben deed hij het wel. Dus bij deze is het opgelost!
Dank iedereen.

De uiteindelijke code is:
PHP:
$query = mysql_query("SELECT * FROM gebruikers WHERE emailadres ='$emailadres' AND wachtwoord = '$wachtwoord'");
		$result = mysql_fetch_assoc($query);
		$count = mysql_num_rows($query);
		if($count!=0)
		{	
			$cookiewaarde = 'ja';
			$cookie = $result["voornaam"];
			setcookie("ingelogd", $cookiewaarde);
			setcookie("voornaam", $cookie);
			
			echo $_COOKIE['ingelogd'];
			echo '<br>Welkom, '.$_COOKIE['voornaam'];
		}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan