Hallo iedereen :)
Ik heb een vraag(je).
Ik ben bezig met een loginform te maken, met een database.
Maar ik stoot op een klein probleem. Hij wil namelijk niet inloggen.
hier mijn code:



                <article id="login">                  
                        
                   	<?php
						if(isset($_POST['submit'])){
							$Gebruikersnaam = $_POST['username']; //Variable aanmaken voor het ingegeven gebruikersnaam.
							$Wachtwoord = $_POST['password']; //Variable aanmaken voor het ingegeven wachtwoord.
							
							// Beveiliging tegen Mysql injection.
							$Gebruikersnaam = stripslashes($Gebruikersnaam);
							$Wachtwoord = stripslashes($mypassword);
							$Gebruikersnaam = mysql_real_escape_string($Gebruikersnaam);
							$Wachtwoord = mysql_real_escape_string($Wachtwoord);
							$sql="SELECT * FROM Gebruikers WHERE Gebruikersnaam=".$Gebruikersnaam." and Wachtwoord=".$Wachtwoord."";
							$result=mysql_query($sql);
							
							// Aantal records tellen
							$count=mysql_num_rows($result);
							
							// Kiijk of er 1 rij overeen komt.
							if($count==1){
							
							// Registreren van Gebruikersnaam en Wachtwoord en doorverwijzen naar de login_succes.php
							session_register("Gebruikersnaam");
							session_register("Wachtwoord"); 
							header("location:login_success.php");
							}
							else {
								echo "Oeps er ging iets mis. Gelieve de juiste login gegevens in te geven.";
								echo "U wordt terug gestuurd naar de login pagina.";
								echo '<meta http-equiv="refresh" content="5;url=login.php" />';
							}
							}else{
							disconnectfromdb();
								?>
							<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
								<p>Gebruikersnaam:</p>
									<input id="name" name="username" placeholder="Gebruikersnaam" type="text">
								<p>Wachtwoord:</p>
									<input id="password" name="password" placeholder="**********" type="password"><br />
									<input name="submit" type="submit" value=" Login" />
                       		</form>
								<?php
							}
					?>
                        
                </aricle>



Iemand die mij kan vertellen, waarom ik steeds de foutmelding krijg, en niet kan worden doorgestuurd naar de login_succes.php ?

Alvast bedankt :)





Je code is heel belabberd te lezen. Kan je dit even aanpassen en deze tussen [code] en [/code] tags plaatsen?
Quote is geen code-tag. Ik heb het aangepast zodat het nu goed leesbaar is.


session_register() is een hele oude functie die tegenwoordig niet meer zal werken.
Je kan gewoon $_SESSION['Username'] = $_POST['username'] gebruiken.
Waarom je een wachtwoord in een sessie wilt opslaan is mij niet duidelijk, maar het is onnodig en bovendien ook zeer onveilig.

Verder zijn regel 5 en 6 overbodig, omdat je die $_POST variabelen al direct kan gebruiken.
Bedankt :)
Dan is dat toch al ietsjes veiliger ;)
Maar zit ik nog steeds met het zelfde probleem :/
Welke foutmelding krijg je precies?
Ik krijg namelijk geen foutmelding.
Mijn code telt het aantal records in mijn database en als er 1 record is dat overeenkomt met de ingevulde gegevens, dan moet die doorverwijzen naar login_succes.php
Ander geeft die een melding:

"Oeps er ging iets mis. Gelieve de juiste login gegevens in te geven. U wordt terug gestuurd naar de login pagina." En dan word je na 5 seconde doorgestuurd naar de login.php opnieuw (zodat je opnieuw een formulier krijgt te zien.)

Probleem is nu.
Hij geeft altijd die foutmelding. Ook als ik het juiste wachtwoord en juiste gebruikrsnaam invul.
En ik weet niet waar het probleem zit :/ (connectie met men db zou normaal gezien moeten kloppen :) )
Een paar aanbevelingen:

Begin boven in je script met de php logica en onderin pas met de output.
Je wilt een gebruiker na een correcte login doorsturen naar een andere pagina met
<?php
header("location:login_success.php");
?>

Dat zal niet werken als er al output (HTML) naar de browser is verstuurd.

Waarom gebruik je niet uitsluitend kleine letters in je database en engelse termen zoals username en password

Dit is korter en je hoeft dan niet meer na te denken of het nu met een hoofdletter was of zonder hoofdletter.


Waarom de gebruiker terugsturen naar de loginpagina? De gebruiker was daar immers toch al? laat die pagina gewoon constant refreshen tot er een juiste login heeft plaats gevonden.

mysql_ functies zijn niet veilig meer. Ook niet met mysql_real_escape_string. Gebruik mysqli of PDO met prepared statements.

stripslashes() moet je al helemaal niet gebruiken

Zet je database op Collatie utf8_unicode_ci. en gebruik mysqli_set_charset($con, "utf8"); nadat je verbinding hebt gemaakt met mysqli_connect().

Zoals Aar zegt: session_register() moet je niet meer gebruiken

Geen passwords opslaan in de sessie

Passwords met iets als sha256 versleutelen en dan versleuteld in de database opslaan
<?php
$sleutel = hash('sha256', $password);
?>

Dus na registratie als de gebruiker een password heeft gekozen deze eerst versleutelen en dan pas in de database opslaan

Dan bij de login ook het password eerst versleutelen en dan de sleutels met elkaar vergelijken.
Als die kloppen en de gebruikersnaam klopt, pas dan mag de gebruiker ingelogd worden.

[size=xsmall]Toevoeging op 21/12/2014 14:16:22:[/size]

Een ander algemene afspraak is om variabelen zonder hoofdletter te schrijven:

<?php
$var = 'waarde';
$loginCount = 1; // tweede woord mag wel met een hoofdletter omdat dat de leesbaarheid ten goede komt
?>

class namen worden wel met een hoofdletter geschreven:

<?php
class Authentication
{
...
{

$auth = new Authentication();
?>
bedankt.
Zal het op deze manier naar een oplossing proberen te zoeken :)
@Frank Nietbelangrijk
Bedankt voor je uitleg :D
Ik ga het deze middag even rustig bekijken :)
De opbouw doe je zo:

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	// check password en gebruikersnaam
	if( /* correcte logingegevens */ )
	{
		// set session['login'] zodat de gebruiker ingelogd is
		 header('Location: login_success.php');
		
	}
}
// Hieronder de output: ?>
<!DOCTYPE html>
<html>

...

<div id='error'><?php echo $error; ?></div>
<form action="" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" value="Login" />
</form>
...

</html>


[size=xsmall]Toevoeging op 21/12/2014 14:25:46:[/size]

Graag gedaan :-)

Reageren