username weergeven op site

Status
Niet open voor verdere reacties.

overmacht

Gebruiker
Lid geworden
4 aug 2002
Berichten
143
ik wil de naam van de user weergeven in verder pagina's op mijn site, nou is de usernaam soms niet de nbaam die ik op de site wil hebben en dus heb ik een extra veld in de mysql db gemaakt met naam als naam, die wil ik aanroepen om de naam weer te geven. ik heb het zo geprobeeerd, maar het werkt niet, inloggen lukt wel, maar de naam verschijnt niet:

<?php
session_start();
?>

<html>
<head>
<title>Login</title>
</head>
<body TEXT="FFFFFF" BGCOLOR="#336699" LINK="#FFFFFF" VLINK="#FFFFFF" ALINK="#FFFFFF">

<form method="post" action="login.php">
<input type="hidden" name="Submit" value="1">
User: <input type="text" name="LoginNaam" SIZE="14" MAXLENGTH="14"><BR>
Pass: <input type="password" name="LoginPassword"SIZE="14" MAXLENGTH="14"><BR><BR>
<input type="submit" value="Login"><BR>
</form>
</CENTER>
<p>

<?php

If ($Submit) {

$DBHost = "";
$DBLogin = "";
$DBPassword = "";
$DBDatabase = "gebruikers";

mysql_connect("$DBHost", "$DBLogin", "$DBPassword");
@mysql_select_db("$DBDatabase");

$LoginNaam = addslashes($LoginNaam);
$LoginPassword = addslashes($LoginPassword);

$Query = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '$LoginNaam' AND password = '$LoginPassword'");
$Results = mysql_num_rows($Query);

$Query1 = mysql_query("SELECT naam FROM gebruikers WHERE gebruikersnaam = '$LoginNaam' AND password = '$LoginPassword'");
$Resultaat = mysql_query($Query1);

if ($Results == '1') {

$Login = "1";
$Naam = $Resultaat;
session_register("Naam");
session_register("Login");

print( "<CENTER><a href=\"..\JCC\main.php\">kom binnen</a>.</CENTER>\n" );

}
else {

echo "<CENTER>incorrecte User / Pass</CENTER>";

}

}
?>

</body>
</html>
 
Ten eerste is het handig als je in het vervolg de code tussen de [ php ] [ /php ] tags zet, want nu is het niet om aan te zien.

Ten tweede gebruik je 2 queries voor 1 en hetzelfde doel. Namelijk de controle. Je hoeft niet dat te doen, je kunt ook tussentijds het aantal rijen tellen en daarna uitvoeren.

Bovendien fetch je de query op geen enkele manier:

Code:
$Query1 = mysql_query("SELECT naam FROM gebruikers WHERE gebruikersnaam = '$LoginNaam' AND password = '$LoginPassword'"); 
$Resultaat = mysql_query($Query1);

een query uitvoeren betekent niet dat de resultaten zijn opgehaald. Resultaat zal dan ook leeg zijn of een 1 bevatten. Met mysql_fetch_* functies (array, row, object, assoc) kun je de resultaten daadwerkelijk ophalen en afhankelijk van het type dat je kiest wordt er een associatieve of nummerieke array gemaakt of een object van de opgehaalde resultaten. Pas dan kun je het ook echt gebruiken.

meer hierover: http://nl.php.net/mysql
 
ik kom er mog steeds niet uit: kan je de code aanpassen zodat ik kan zien wat de correcte wijze is? ik ben nieuw met php en mysql..

in de mysql db gebruikers gaat het dus om het opvragen van het veld naam met de echte naam, niet de login naam
[ php ]

<?php
session_start();
?>

<html>
<head>
<title>Login</title>
</head>
<body TEXT="FFFFFF" BGCOLOR="#336699" LINK="#FFFFFF" VLINK="#FFFFFF" ALINK="#FFFFFF">
<BR><center>- JCC -<BR>
<form method="post" action="login.php">
<input type="hidden" name="Submit" value="1">
User: <input type="text" name="LoginNaam" SIZE="14" MAXLENGTH="14"><BR>
Pass: <input type="password" name="LoginPassword"SIZE="14" MAXLENGTH="14"><BR><BR>
<input type="submit" value="Login"><BR>
</form>
</CENTER>
<p>

<?php

If ($Submit) {

$DBHost = "";
$DBLogin = "";
$DBPassword = "";
$DBDatabase = "";

mysql_connect("$DBHost", "$DBLogin", "$DBPassword");
@mysql_select_db("$DBDatabase");

$LoginNaam = addslashes($LoginNaam);
$LoginPassword = addslashes($LoginPassword);

$Query = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '$LoginNaam' AND password = '$LoginPassword'");
$Results = mysql_num_rows($Query);

$Query1 = mysql_query("SELECT naam FROM gebruikers WHERE gebruikersnaam = '$LoginNaam' AND password = '$LoginPassword'");
$Naam = mysql_query($Query1);
if ($Results == '1') {

$Login = "1";
session_register("Naam");
session_register("Login");

print( "$Naam<CENTER><a href=\"JCC/main.php\">ENTER</a></CENTER>\n" );

}
else {

echo "<CENTER>incorrecte User / Pass</CENTER>";

}

}
?>

</body>
</html>

[ /php ]
 
met [ php ] en [/ php ] werd bedoeld
PHP:
 en
zonder spatie...kun je ff je post aanpassen en die spaties tussen [ php ] en [/ php ] verwijderen ? want dit is absoluut niet leesbaar
 
Laatst bewerkt:
Goed goed, ben ff bezig geweest (wees me 2000x dankbaar, ik heb net 30 opgaven natuurkunde gedaan :mad: :confused: )

PHP:
<?php

<?php

If ($Submit) { 

$DBHost = ""; 
$DBLogin = ""; 
$DBPassword = ""; 
$DBDatabase = "gebruikers"; 

mysql_connect("$DBHost", "$DBLogin", "$DBPassword"); 
@mysql_select_db("$DBDatabase"); 

$LoginNaam = addslashes($LoginNaam); 
$LoginPassword = addslashes($LoginPassword); 

/*
		De query hieronder (totaal in een comment, je hebt het toch niet
		meer nodig immers) is nutteloos. Daaronder doe je exact hetzelfde
		alleen dan (met de bedoeling althans) om de gegevens in $Resultaat
		te laden. Echter met mysql_qyery() voer je de query alleen UIT. Ver-
		der gebeurd er nog niets. De database wordt aangeroepen en mysql voert
		de taken uit. Wil je de resultaten van de uitvoer, dan zul je andere
		functies moeten gaan gebruiken. Deze zijn de mysql_fetch_* functies.
		Welke je gebruikt maakt in die zin geen donder uit dat ze alle 4 netjes
		de info rangschikken. Op welke manier is voor iedere functie weer anders.
		fetch_array (en ook _assoc) doen het in een associatieve array. Dat wil
		kort gezegd zeggen "onder de naam van het veld". Dus met namen ($array["veldnaam"]).
		fetch_row doet ook een array maar een nummerieke ($array[0], [1], [2] etc).
		fetch_object maakt er een object van ($array->veldnaam). Kies er maar 1 uit,
		naar je voorkeur.
 

$Query = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '$LoginNaam' AND password = '$LoginPassword'"); 
$Results = mysql_num_rows($Query);
*/ 

$Query = "SELECT naam FROM gebruikers WHERE gebruikersnaam = '$LoginNaam' AND password = '$LoginPassword'";		//hier had je ook nog eens mysql_query() gedaan, 1x is genoeg.. 
$Uitvoer = mysql_query($Query);	//uitvoer
$Results = mysql_num_rows($Resultaat); //met 1 en dezelfde query voer je hem uit en check je het aantal resultaten...
$Resultaat = mysql_fetch_array($Resultaat);	 //uitvoer OPHALEN (afhaalservice *gniffel*)

if ($Results == '1') { 

$Login = "1"; 
$Naam = $Resultaat["naam"];		//De veldnaam correspondeert met de naam van de arraysleutel 
session_register("Naam"); 
session_register("Login"); 

print( "

kom binnen.
\n" ); 

} 
else { 

echo "
incorrecte User / Pass
"; 

} 

} 
?>

Een paar nootjes:

- Dit is dus niet de gehele code inclusief HTML! Ik heb gewoon gekopieert en geplakt wat ik aan broncode kon zien en links ed zijn dus ook niet meegekomen
- Het overgrote deel van de uitleg staat als comment in het script :). Voordat ik er erg in had stond alles daar al in. Weet het, het is geen porem maar helaas...
- Bij fetch_row is het zo dat de index (0, 1, 2 etc) correspondeert met de volgorde van selecteren. Dus als ik doe "SELECT veld1, veld4, veld3, veld7 ......" dan is de index dus: 0 => veld1, 1 => veld4, etc etc. Denk daar goed om! Bij een assoc. array maakt dat niet uit want een naam is een naam maar ga de nummertjes niet verwisselen :D
- Maak veel comments. Zo weet je later weer waar je toen mee bezig was
- Doe gewoon $variabele ipv "$variabele". Het is nergens voor nodig en nog eens slordig scripten ook (zie connectie database)
- Gebruik $_POST en $_GET for christ's sake en niet gewoon $Submit. Meer hierover: http://nl.php.net/variables.external

Goed. Verder: keep on going :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan