Inlogscript hulp - code werkt niet meer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Kelvin van der Heijden

Kelvin van der Heijden

26/06/2013 20:48:46
Quote Anchor link
Ik heb een tijdje geleden al meer inglogscripts gemaakt, maar op de een of andere manier werkt het (niet meer) of maak ik ergens een klein foutje. Dit is de code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.
}
?>


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
 
PHP hulp

PHP hulp

25/04/2024 23:25:46
 
Obelix Idefix

Obelix Idefix

26/06/2013 20:58:02
Quote Anchor link
Wat werkt er niet?

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)
 
Kelvin van der Heijden

Kelvin van der Heijden

26/06/2013 21:12:57
Quote Anchor link
Mijn header klopt niet, dat is zo, het is onduidelijk ik zal het veranderen maar met "other page" bedoelde ik dat je naar de andere pagina gaat. In mijn echte script staat wel de goede pagina.

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.
 
Danny L

Danny L

26/06/2013 21:17:36
Quote Anchor link
Controleren of formulier als POST verzonden is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if($_SERVER['REQUEST_METHOD'] == 'POST') {
//Formulier verzonden...
}


Controleren of variabelen bestaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if(isset($_POST['var'])) {
// $_POST['var'] bestaat!
}


Met kopiëren bedoelt hij dat je een extra variabelen ($username en $password) maakt, terwijl je ook gewoon $_POST['username'] kunt gebruiken.
 
Francoi gckx

Francoi gckx

26/06/2013 21:22:15
Quote Anchor link
Met isset() controleer je of $_POST variablen niet leeg zijn,
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
 
Kelvin van der Heijden

Kelvin van der Heijden

26/06/2013 21:48:35
Quote Anchor link
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?
 
Danny L

Danny L

26/06/2013 21:59:23
Quote Anchor link
Dan ligt het waarschijnlijk aan je formulier, kan je deze eens posten? Ik heb trouwens je code wat verbeterd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!';
    }
}

?>
 
Kelvin van der Heijden

Kelvin van der Heijden

26/06/2013 22:02:32
Quote Anchor link
Dit is de code van mijn form:

<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>
 
Danny L

Danny L

26/06/2013 22:08:08
Quote Anchor link
Haal enctype="text/plain" weg, dat is het probleem.

Ook is accept-charset en target="_self" onnodig.
 
Obelix Idefix

Obelix Idefix

26/06/2013 22:10:04
Quote Anchor link
Bij nagenoeg alle opmerkingen die ik plaats geef je aan niet te begrijpen wat ik bedoel. Misschien handig om (nog eens) een basistut door te nemen (over formulieren).

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?
 
Kelvin van der Heijden

Kelvin van der Heijden

27/06/2013 09:40:22
Quote Anchor link
De html bestanden worden automatisch gemaakt door de website builder die ik gebruik nl. Serif WebPlus X6.
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.