Ik ben momenteel bezig met een login script en ik krijg een functie niet aan het werk.
Ik zal eerst uitleggen wat de bedoeling is. Ik heb de volgende functie:
<?php
class Login
{
function login($required_fields, $numeric, $bot)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles/stylesheet.css" rel="stylesheet" type="text/css">
<title>CMS - Content management system.</title>
</head>
<body>
<div id="LoginContainer">
<form name="Login" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<fieldset>
<legend id="Login">CMS login</legend>
<div style="padding: 15px;">
<div><input type="text" id="klantnummer" name="klantnummer" onFocus="if(this.value=='Klantnummer')this.value='';" onBlur="if(this.value=='')this.value='Klantnummer';" value="Klantnummer"></div>
<div><input type="password" id="wachtwoord" name="wachtwoord" onFocus="if(this.value=='Wachtwoord')this.value='';" onBlur="if(this.value=='')this.value='Wachtwoord';" value="Wachtwoord"></div>
<br>
<span style="padding-right: 15px;"><input type="submit" name="Submit" value="Login">
<input type="hidden" id="antibot" name="antibot" value="">
<br>
<br>
<a href="#">Wachtwoord vergeten?</a>
<?php
if ($required_fields == true)
{
echo "<span style='color: red'>Vul alle forms correct in.</span>";
}
if ($numeric == true)
{
echo "<span style='color: red'>Het klantnummer bestaat alleen uit cijfers.</span>";
}
if ($bot == true)
{
echo "<span style='color: red'>Bot gedetecteerd. Uw Ip-adres is voor 5 minuten gebanned.</span>";
}
?>
</div>
</fieldset>
</form>
</div>
</body>
</html>
<?php
}
}
?>
Als je kunt zien is het een heel makkelijke functie, maar ik zet het lieven in classes/functies zodat ik het makkelijk kan aanroepen.
Nu wil ik alle ingevoerde waardes gaan controleren. Als iemand bijvoorbeeld bij klantnummer een injectie wilt plaatsen zou hij een foutmeldingen moeten krijgen. Het volgende code is als voorbeeld :
<?php
require_once('sql.class.php');
require_once('login.class.php');
$sql = new Sql();
$login = new Login();
$sql->connect();
//hier gaan wij kijken of de persoon kan inloggen
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$salt = "STT$(@&";
if (!is_numeric($_POST['klantnummer']))
{
// stel je voor dat het klantnummer niet uit nummers bestaat maar ook uit character
die($login->login(false, true, false));
//wat je nu doet is dat je het script helemaal afsluit en via een parameter 2 een melding maakt dat het klantnummer uit getallen moet betaan.
}
else
{
$klantnummer = $inputcheck->StripVar($_POST['klantnummer']);
$wachtwoord = md5($salt.$inputcheck->StripVar($_POST['wachtwoord']));
$query = "SELECT userId, rechten FROM accounts WHERE klantnummer = '".$klantnummer."' AND wachtwoord = '".$wachtwoord."'";
$result = mysql_query($query) or die(mysql_error());
//hier de verder login e.d.
}
?>
Nu is het probleem dat hij deze parameters niet herkent? Ik heb de volgende foutmeldingen
Warning: Missing argument 1 for Login::login(), called in C:\domains\asdf.be\wwwroot\CMS\classes\index.php on line 12 and defined in C:\domains\asdf.be\wwwroot\CMS\classes\login.class.php on line 4
Warning: Missing argument 2 for Login::login(), called in C:\domains\asdf.be\wwwroot\CMS\classes\index.php on line 12 and defined in C:\domains\asdf.be\wwwroot\CMS\classes\login.class.php on line 4
Warning: Missing argument 3 for Login::login(), called in C:\domains\asdf.be\wwwroot\CMS\classes\index.php on line 12 and defined in C:\domains\asdf.be\wwwroot\CMS\classes\login.class.php on line 4
en
Notice: Undefined variable: required_fields in C:\domains\asdf.be\wwwroot\CMS\classes\login.class.php on line 31
Notice: Undefined variable: numeric in C:\domains\asdf.be\wwwroot\CMS\classes\login.class.php on line 36
Notice: Undefined variable: injections in C:\domains\asdf.be\wwwroot\CMS\classes\login.class.php on line 41
Ziet iemand wat ik fout heb gedaan?