Volledige versie bekijken : Hulp met login script



gotenks
31 July 2012, 13:56
Dag Minaticanen

Ik ben momenteel bezig met een opleiding Webontwikkelaar in het avondonderwijs en we hebben de opdracht gekregen om tijdens de vakantie een kleine website te maken. Hierbij moeten we gebruik maken van PHP en MySQL, waarmee we een login en een database viewer moeten maken. Voor het login gedeelte moeten we werken met classes e.d., maar op de één of andere manier wil mijn code niet werken. Ik kan nergens een fout bespeuren in de code of in de database. Iemand die mij misschien kan helpen?

Ik heb het hele project even in een rar geplaatst en is te downloaden van deze link (http://andyjanssens.be/nurse.rar). Ik heb ook een SQL script voorzien, zodat je eenvoudig de database kan namaken. Let wel op, de wachtwoorden zijn opgeslagen in SHA1, maar in de rar zit ook een kladblok-bestandje met de verwerkte logins om te testen. Commentaar is in de code verwerkt in het Engels.

Alvast bedankt!

Butterflyice
1 August 2012, 06:25
Je roep je functie niet aan om je data door te sturen naar je database daarom kan je niet inloggen.

gotenks
1 August 2012, 10:17
Als ik bij login.php de volgende code aanpas:


<form class="form" name="login" method="post" action="login.php">

naar:


<form class="form" name="login" method="post" action="functions.php">

dan doet hem nog steeds niets.

Butterflyice
1 August 2012, 13:20
Je komt niet bij de inlog functie het probleem zit in de switch de action is leeg dus kan ook niet naar de inlog gaan.

gotenks
1 August 2012, 14:09
En hoe los ik dat dan nu op?

Butterflyice
1 August 2012, 15:29
Zorgen dat je eerst aankomt bij de swich bv een hidden value meesturen zodat je bij je inlog aankomt.

voorbeeld




<form class="form" name="login" method="post" action="login.php">
<fieldset>
<div class="row">
<input id="login-username" type="text" class="login" name="login-username" placeholder="Gebruikersnaam" />
<!-- To mark the incorrectly filled input, you must add the class "error" to the input -->
<!-- example: <input type="text" class="login error" name="login" value="Username" /> -->
</div>
<div class="row">
<input id="password" type="password" class="password" name="password" placeholder="Wachtwoord"/>
<input id="action" type="hidden" name="action" value="login" />
<!--<a class="forgot" href="#">Wachtwoord vergeten?</a> -->
</div>
<div class="row">
<input type="checkbox" class="remember" name="remember" id="remember" />
<label for="remember">Ik wil ingelogd blijven.</label>
<input type="submit" value="Log in" />
</div>
</fieldset>
<?php echo $loginDiv ?>
</form>





// If we're not already logged in, check if we're trying to login or logout
if ($page == Page::LOGIN && $action == $_POST["action"] )


{
switch ($action)
{
case 'login':
{
$userData = Users::checkCredentials (stripslashes ($_POST['login-username']),
stripslashes ($_POST['password']));
var_dump($userData);
exit;
if ($userData[0] != 0)
{
$_SESSION['nurse-userID'] = $userData[0];
if (isset ($_POST['remember']))
{
// We set a cookie if the user wants to remain logged in after the
// browser is closed
// This will leave the user logged in for 168 hours, or one week
setcookie('nurse-userID', $userData[0], time () + (3600 * 168));
}
else
{
setcookie('nurse-userID', $userData[0], false);
}

header ('Location: ./');

exit;
}
else
{
$loginDiv = '<div id="login-box" class="error">The username or password ' .
'you entered is incorrect.</div>\n';
}
break;
}
// Destroy the session if we received a logout or don't know the action received
case 'logout':
default:
{
// Destroy all session and cookie variables
$_SESSION = array ();
setcookie('nurse-userID', '', time () - (3600 * 168));

// Destory the session
session_destroy ();

$loginDiv = '<div id="login-box" class="info">Thank you. Come again!</div>\n';

break;
}
}
}

return $loginDiv;




Als goed is kan je nu hier verder mee.

gotenks
1 August 2012, 16:42
Ik heb de oplossing van je geprobeerd, maar ik kan nog steeds niet inloggen. Wanneer ik op inloggen druk, kom ik op een lege pagina terecht (van login.php) met de volgende output:


array(1) { [0]=> int(0) }

Butterflyice
1 August 2012, 17:35
Je inlog functie werk dus niet naar behoren anders had je wel 1 terug gehad.

Spoorzoeker
2 August 2012, 09:57
Misschien ligt het aan mij, maar was de opdracht dat je heel moeilijk moest doen ?

Ik vind je code namelijk heel onbegrijpelijk. En hoe meer code, hoe meer kans op fouten.

Waarom niet simpel gehouden ?
Input voor de login, vergelijken in de database en afhankelijk van het resultaat
wel of niet ingelogd. Eventueel aangevuld met een cookie.

Lijkt me alles, toch ? :)

gotenks
2 August 2012, 13:19
Misschien ligt het aan mij, maar was de opdracht dat je heel moeilijk moest doen ?

Ik vind je code namelijk heel onbegrijpelijk. En hoe meer code, hoe meer kans op fouten.

Waarom niet simpel gehouden ?
Input voor de login, vergelijken in de database en afhankelijk van het resultaat
wel of niet ingelogd. Eventueel aangevuld met een cookie.

Lijkt me alles, toch ? :)
Ja, het was nog een code van op mijn hogeschool studies, dus dacht ik om deze verder te gebruiken en aan te vullen :) De opdracht zegt verder dat we ook sessions en cookies moeten gebruiken, dus heb ik dit er ook proberen bij te steken. Ik ben geen programmeerwonder, kun je waarschijnlijk zelf wel zien :p

Spoorzoeker
2 August 2012, 14:13
Als er iets moeilijk is, dan is het wel bestaande code hergebruiken.
Ik doe het ook wel eens, maar vaak begin ik toch maar weer opnieuwe.
Of omdat ik niet meer precies weet wat er gebeurt in die code, of
het aanpassen duurt langer dan herschrijven. :D