Inlogscript hulp - code werkt niet meer
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$username = $_POST['username_box'];
$password = $_POST['password_box'];
// Login data webmaster:
$username_webmaster = "webmaster";
$password_webmaster = "mypass";
if ($username == $username_webmaster && $password == $password_webmaster) {
header('Location: de pagina waar je naartoe wordt gestuurd'); // De pagina waar je naartoe wordt gestuurd wanneer er goed is ingelogd.
}
?>
$username = $_POST['username_box'];
$password = $_POST['password_box'];
// Login data webmaster:
$username_webmaster = "webmaster";
$password_webmaster = "mypass";
if ($username == $username_webmaster && $password == $password_webmaster) {
header('Location: de pagina waar je naartoe wordt gestuurd'); // De pagina waar je naartoe wordt gestuurd wanneer er goed is ingelogd.
}
?>
Ik heb in de map "cp" het bestand "login.php" staan. Hier staat het html form met een textbox passwordbox en een submit button.
de textbox heet username_box en de passwordbox heet password_box
Ik weet dat het script niet echt veilig is maar ik wil toch graag weten wat ik nou precies fout gedaan heb.
Gewijzigd op 26/06/2013 21:14:13 door Kelvin van der Heijden
Error-reporting aanzetten.
Waar controleer je of het formulier verzonden is?
Waar controleer je of de $_POST-variabelen bestaan?
Waarom kopieer je de $_POST-variabelen?
Je header klopt niet.
Als de combinatie onjuist is, gebeurt er niets (je hebt geen else)
Ik maak PHP scripts met Microsoft WebMatrix die heeft automatische error reporting en geeft geen errors aan.
Obelix en Idefix op 26/06/2013 20:58:02:
Waar controleer je of het formulier verzonden is?
Hoe moet ik dit controleren? Ik heb de 2 bestanden doorgezocht of het goede bestand wel is ingevuld bij "form_action=" en dat klopt allemaal. Er is ook een "POST" methode in het html form.
Obelix en Idefix op 26/06/2013 20:58:02:
Waar controleer je of de $_POST-variabelen bestaan?
Ik snap dit niet helemaal, hoe moet ik dit controleren? In het PHP bestand staan de $_POST variabelen gewoon net zoals in het voorbeeld in het script.
Obelix en Idefix op 26/06/2013 20:58:02:
Waarom kopieer je de $_POST-variabelen?
Hoezo heb ik deze gekopieerd?
Obelix en Idefix op 26/06/2013 20:58:02:
Als de combinatie onjuist is, gebeurt er niets (je hebt geen else)
Nee, dat weet ik heb ik ook bewust gedaan, dit voeg ik later toe.
Controleren of variabelen bestaan:
Met kopiëren bedoelt hij dat je een extra variabelen ($username en $password) maakt, terwijl je ook gewoon $_POST['username'] kunt gebruiken.
Dus <input type="text" name="username_box" value="vul gebruikersnaam in">
If (isset($_POST['username_box']))
Het is <form action="login.php" method="post"> zonder underscore
Het is allemaal wel vreemd. Ik heb nog steeds hetzelfde staan als eerst (zoals ik plaatste bovenaan topic) behalve de header() dan. Ik heb er else() bij gezet en weer een header() dat je bijvoorbeeld naar een pagina gaat die aangeeft dat je inloggegevens niet correct zijn. Naar deze pagina leiden doet hij dus wel, dat betekent dat ik volgens het script de verkeerde wachtwoord en/of gebruikersnaam heb ingevoerd terwijl die helemaal niet waar is. Ik heb gewoon de goede inloggegevens ingevoerd en toch denkt hij dat dit niet zo is? waar ligt dit dan aan?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username_box']) && isset($_POST['password_box'])) {
if ($_POST['username_box'] == 'webmaster' && $_POST['password_box'] == 'mypass') {
header('Location: de pagina waar je naartoe wordt gestuurd'); // De pagina waar je naartoe wordt gestuurd wanneer er goed is ingelogd.
} else {
echo 'Verkeerde gegevens!';
}
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username_box']) && isset($_POST['password_box'])) {
if ($_POST['username_box'] == 'webmaster' && $_POST['password_box'] == 'mypass') {
header('Location: de pagina waar je naartoe wordt gestuurd'); // De pagina waar je naartoe wordt gestuurd wanneer er goed is ingelogd.
} else {
echo 'Verkeerde gegevens!';
}
}
?>
<form id="form_2" name="frm01" action="../scripts/login_check.php" accept-charset="UTF-8" method="post" target="_self" enctype="text/plain" style="margin:0;position:absolute;left:321px;top:189px;width:318px;height:106px;">
<div style="position:absolute;left:8px;top:8px;width:95px;height:18px;overflow:hidden;">
<p class="Wp-Body-P"><label for="edit_3"><span class="Body-C-C0">Username:</span></label></p>
</div>
<input type="text" id="edit_3" name="username_box" value="" style="position:absolute; left:119px; top:8px; width:181px;">
<div style="position:absolute;left:8px;top:38px;width:90px;height:18px;overflow:hidden;">
<p class="Wp-Body-P"><label for="edit_4"><span class="Body-C-C0">Password:</span></label></p>
</div>
<input type="password" id="edit_4" name="password_box" value="" style="position:absolute; left:119px; top:38px; width:181px;">
<input type="submit" style="position:absolute; left:8px; top:68px; width:58px; height:22px;" name="btn_01" value="OK">
</form>
Ook is accept-charset en target="_self" onnodig.
Code aub tussen code-tags. Dan is het leesbaar ;-)
Inline-css is niet meer van deze tijd.
Debuggen: echo in login_check.php eens de beide $_POST-waarden. Kloppen die wel met wat je invult in het formulier?
de PHP scripts maak ik wel zelf. Ik heb het altijd zo gedaan en werkte ook altijd tot nu dan. Ik zal proberen de code van het form de veranderen zoals me is verteld en kijken wat het resultaat is.