Inloggen met PHP/MySQL

Wat doe ik verkeerd? Dit is een inlogscriptje uit een boek (ben volop bezig PHP te leren), maar ik krijg niets op het scherm, dan zit er een fout in, niet? De username en het paswoord zijn vervangen door sterretjes bij het connecteren. De MySQL db is lokaal aangemaakt.

[code:1:1b771d669d]<?php
session_start();

if (isset($HTTP_POST_VARS[‘gebruikersnaam’]) && isset($HTTP_POST_VARS[‘paswoord’]))
{
// de gebruiker probeerde net in te loggen
$gebruikersnaam = $HTTP_POST_VARS[‘gebruikersnaam’];
$paswoord = $HTTP_POST_VARS[‘paswoord’];

	$db_conn = mysql_connect&#40;'localhost','******','******'&#41;;
	mysql_select_db&#40;'cms_baeke', $db_conn&#41;;
	$query = 'select * from gebruikers where gebruikersnaam='$gebruikersnaam' and paswoord='$paswoord'';
	$result = mysql_query&#40;$query, $db_conn&#41;;
	if &#40;mysql_num_rows&#40;$result&#41; &gt;0 &#41;
		&#123;
			// wanneer de user bestaat in de database, gaan we hem registeren
			$HTTP_SESSION_VARS&#91;'geldig_gebruiker'&#93; = $gebruikersnaam;
		&#125;
&#125;

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
<title>:: Oak3 Content Management System ::</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<style type="text/css" media="all">
@import url(oak3_cms.css);
</style>
</head>
<body>

<div id="div_logo">
</div>

<div id="div_container">

<div id=“div_login”>
<?
if (isset($HTTP_SESSION_VARS[‘geldig_gebruiker’]))
{
echo ‘<p>U bent nu ingelogd als: ‘.$HTTP_SESSION_VARS[‘geldig_gebruiker’].’<p>’;
echo ‘<p><a href=“logout.php”>Log uit</a></p>’;
}
else
{
if (isset($gebruikersnaam))
{
// de gebruiker heeft geprobeerd in te loggen en het is mislukt
echo ‘<p>Het inloggen is mislukt<p>’;
}
else
{
// de gebruiker is nog niet ingelogd of is uitgelogd
echo ‘<p>U bent niet ingelogd</p>’;
}
// login form tonen
echo ‘<form method=“post” action=“index.php”>’;
echo ‘<p>’;
echo ‘Gebruikersnaam:<br />’;
echo ‘<input type=“text” name=“gebruikersnaam” size=“30” maxlength=“30” />’;
echo ‘</p>’;
echo ‘<p>’;
echo ‘Paswoord:<br />’;
echo ‘<input type=“password” name=“paswoord” size=“30” maxlength=“30” />’;
echo ‘</p>’;
echo ‘<p>’;
echo ‘<input type=“submit” value=“Inloggen” />’;
echo ‘</p>’;
echo ‘</form>’;
}
?>
</div>

</div>

</body>
</html>[/code:1:1b771d669d]

als je het boek van larry ullman php for the www gebruikt, kan het kloppen. erg veel scripts kloppen niet omdat ze voor een oudere versie geschreven zijn.

daan.

Ik gebruik "PHP and MySQL Web Development", vrij recent boek (februari 2003).

Kijk eens bij www.academicservice.nl Daar zie je veel van dit soort boeken die van Engels naar Nederlands vertaald zijn. Voor PHP en MySQL gebruik ik zelf oa. PHP/MySQL database-applicaties incl. CD, en ik verwacht dat er inmiddels weer een nieuwe druk is veschenen (ISBN 90 395 1814 9).

Succes…

[code:1:6992b376fc] $query = 'select * from gebruikers where gebruikersnaam='$gebruikersnaam' and paswoord='$paswoord''; [/code:1:6992b376fc] Je gebruikt de aanhalingstekens verkeerd. Het beste is om het begin en het eind met dubbele aanhalingstekens te doen en alle variabelen met enkele. Nu denkt de php-parser namelijk dat de query al ophoudt bij het begin van $gebruikersnaam. Hij probeert dus dit uit te voeren:

[code:1:6992b376fc]select * from gebruikers where gebruikersnaam[/code:1:6992b376fc]

Ik denk dat dat het probleem is hoewel ik het wel vreemd vind dat je er geen errors mee krijgt.

Correcte wijze is dus:

[code:1:6992b376fc]
$query = “select * from gebruikers where gebruikersnaam=’$gebruikersnaam’ and paswoord=’$paswoord’”;
[/code:1:6992b376fc]

Groeten, Wilfred

het is bijvoorbeeld erg handig om te controleren aan de hand van een echo: [code:1:53aa16835b] echo $query;[/code:1:53aa16835b] dan zie je gelijk of wat je doet is wat je wilt! succes!