Inlogscript werkt opeens niet meer

Status
Niet open voor verdere reacties.

megamovies

Gebruiker
Lid geworden
13 jun 2009
Berichten
160
Eerst werkte mijn inlogformulier wel. Nu heb ik alleen wat tekst aangepast geen code. Nu werkt ie opeens niet meer.

Ik heb een login.php en daarin staat dit:
PHP:
<?
session_start();
$page="login";
include"header.php";
?>




<h2>Inloggen</h2>
<p class="post-by">op <?=$sitename;?></p>

<p>

<center>
<form action="authenticate.php" method="post">
<i>Username</i><br>
<input type="text" name="gebruikersnaam"><br>
<i>Password</i><br>
<input type="password" name="wachtwoord">
<br><br>
<input type="submit" class="button" value="Login op <?=$sitename;?>">
</form>
</center>

</p>

En dan nu autenthicate.php
PHP:
<?php
session_start();
$page="login";
include"header.php";


if ($_POST['username'] == "" || $_POST['password'] == "")
{
print <<<EOF
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
EOF;

print "<h1>Inloggen mislukt: Error #101<h1>
Zorg ervoor dat al uw informatie correct ingevoerd is en probeer opnieuw.";
}
require "mysql.php";
global $c;
$check_users = mysqli_query($c,"SELECT * FROM `users` WHERE `username` = '".$_POST["username"]."' AND `userpass` = '".md5($_POST["password"])."'");
if (mysqli_num_rows($check_users)==0)
{
print "<h1>Inloggen mislukt: Error #102</h1>Zorg ervoor dat al uw informatie correct ingevoerd is en probeer opnieuw.";
}
else
{
$_SESSION['loggedin']=1;
$mem=mysqli_fetch_array($check_users);
$_SESSION['userid']=$mem['id'];

$ip = ($_SERVER['HTTP_X_FORWARDED_FOR'])
    ?  $_SERVER['HTTP_X_FORWARDED_FOR']
    :  $_SERVER['REMOTE_ADDR'];

print "</br><div align='center'>Thanks for logging in, <b>{$mem['username']}</b><br />
<meta http-equiv=\"refresh\" content=\"0;url=index.php\">
<a href='index.php'>If this page doesn't change, click here.</a>
</div></body></html>";

Alleen wanneer een account in wil loggen staat er:
Quote:
Inloggen mislukt: Error #101

Zorg ervoor dat al uw informatie correct ingevoerd is en probeer opnieuw.

Inloggen mislukt: Error #102

Zorg ervoor dat al uw informatie correct ingevoerd is en probeer opnieuw.


Waar gaat het fout?
 
Het veld voor de username heet 'gebruikersnaam':
<input type="text" name="gebruikersnaam"><br>

Dus je moet niet $_POST['username'] gebruiken, maar $_POST['gebruikersnaam']

Eenzelfde probleem speelt met 'password'. Dat veld heet 'wachtwoord', dus moet je $_POST['wachtwoord'] gebruiken en niet $_POST['password']
 
Laatst bewerkt:
enkele verbetering

PHP:
<?     =>     <?php

<form action="authenticate.php" method="post"> =><form action="./authenticate.php" method="post">

PHP:
<?=    =>    <?php print


beste indien het nog niet werkt kijk eerst even naar
bestaat je database nog (script is niet te veilig opgebouwd)
bestaat deze variable (global $c;)

zoek op de woorden (ter verhoging van veiligheid)
php filter input


en let toch effen op de veiligheid waarom geen else als je hieronder doorloopt je geeft de gebruiker aan dat hij niets leeg mag invullen maar je laat het wel toe te controleren
als er door een fout een lege rij in je database kan komen kan men zonder meer inloggen en zoekrobots gaan hierdoor zonder moeite. Zijn dan ingelogd lopen zonder meer door uw privegedeelte wat mogelijks niet de bedoeling is.

PHP:
if ($_POST['username'] == "" || $_POST['password'] == "")
{
print <<<EOF
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
EOF;
 
print "<h1>Inloggen mislukt: Error #101<h1>
Zorg ervoor dat al uw informatie correct ingevoerd is en probeer opnieuw.";
}


PHP:
print "</br><div align='center'>Thanks for logging in, <b>{$mem['username']}</b><br />
<meta http-equiv=\"refresh\" content=\"0;url=index.php\">
<a href='index.php'>If this page doesn't change, click here.</a>
</div></body></html>";
veranderen naar
PHP:
die("</br><div align='center'>Thanks for logging in, <b>{$mem['username']}</b><br />
<meta http-equiv=\"refresh\" content=\"0;url=index.php\">
<a href='index.php'>If this page doesn't change, click here.</a>
</div></body></html>");
 
Laatst bewerkt:
die() is nergens voor nodig. Zorg gewoon dat je je if-else statements goed afhandeld.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan