Terwijl ik zo eens aan het experimenteren ben dacht ik een pagina te beveiligen met een wachtwoord wat uitgelezen word uit een txt file.

Ik begon zo, het formulier:

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
    <form name="form1" method="post" action="password.php">Wachtwoord: <input type="password" name="password"><br><input type="submit" name="Submit" value="Ga verder"> </form>
    </body>
</html>


password.php:

<?php

$wachtwoord = $_POST['password'];
$file = file_get_contents("pass.txt");
$string = "$wachtwoord";
if(!strstr($file, "$string"))
{
print "Code geaccepteerd";
else
print "Er is een fout opgetreden";
}
?>

De pagina doet helemaal niks, bij elke bewerking loop ik vast en krijg ik een error..
ik hoop dat iemand me een beetje opweg kan helpen!

met vriendelijke groet

En die error wil je niet eventjes delen met ons?

Zowieso is het open-en-bloot opslaan van een wachtwoord totaal onveilig!!
De error is zichtbaar in mijn internetbrowser "deze pagina bevat een programeerfout" of iets dergelijks..

Even een overzicht om het mischien iets te verduidelijken:

//Register, Login - flat file


Registreren.html
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <form name="form1" method="post" action="registreren.php"><br>Naam: <input type="text" name="naam"><br><br>Volledige naam: <input type="text" name="volledigenaam"><br><br>Email: <input type="text" name="mail"><br>Bedrijf/Instelling: <input type="text" name="instelling"><br><br>Gebruikersnaam: <input type="text" name="gebruikersnaam"><br>Wachtwoord: <input type="password" name="wachtwoord"><br><input type="submit" name="Submit" value="Inschrijven"> </form>
    </body>
</html>


Registreren.php
<?php



$naam = $_POST['naam'];
$vnaam = $_POST['volledigenaam'];
$email = $_POST['mail'];
$instelling = $_POST['instelling'];
$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['wachtwoord'];


//de gegevens

$data = "$naam\n $vnaam\n $email\n $instelling\n";
$password = "$wachtwoord";

//open the file and choose the mode
mkdir($gebruikersnaam, 0700);
$fh = fopen($gebruikersnaam . "/gegevens.txt", "a");
$pass = fopen($gebruikersnaam . "/pass.txt", "a");

fwrite($fh, $data);
fwrite($pass, $password);


//sluiten

fclose($fh);
fclose($pass);


print "Succesvol geregistreerd";



?>

login.html
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
    <form name="form1" method="post" action="login.php">Gebruikersnaam: <input type="text" name="gebruikersnaam"><br>Wachtwoord: <input type="password" name="password"><br><input type="submit" name="Submit" value="Inloggen"> </form>
    </body>
</html>


login.php
<?php

$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['password'];
$file = file_get_contents($gebruikersnaam . "/pass.txt");
$string = "$wachtwoord";
if(!strstr($file, "$string"))
print "Succesvol ingelogt";
else
print "Er is een fout opgetreden";
?>

Ik kom nu niet verder als 'er is een fout opgetreden'

PS. Ik weet dat dit soort dingen makkelijker kunnen dmv een database, en dat dit wsl de meest onveilige optie is.. maar ik doe het graag zo!
Waarom kopieer je steeds variabelen? je hebt $_POST['password'], en dan kopieer je die naar #wachtwoord, en dan nog een keer naar $string? Waarom?

Dit geldt ook voor je andere $_POST variabelen.
Omdat ik nieuw ben in php en zo'n beetje alles nog moet leren..
En dingen af te leren zoals dit, het maakt je script onoverzichtelijk, en je gaat inefficinent om dat de data.

"deze pagina bevat een programeerfout" of iets dergelijks.."
Dit zegt mij niks, gebruik je Internet Explorer soms, zet even 'Gebruiksvriendelijke foutmeldingen' uit. Als je PHP-errors ziet, dan hebben we daar meer aan.
Ik probeer graag onderaan te beginnen en dus de scripts te begrijpen, en ik dacht aan deze community een goeie steun te hebben.. helaas ervaar ik steeds meer slechts commentaar ipv hulp
Positief opbouwende kritiek als commentaar geven is toch ook hulp.
Wat verwacht je eigenlijk precies, als ik eerlijk mag vragen? Ik help je toch met een logischer script, zodat je straks niet in een groot oerwoud aan slechte code een fout probeert te debuggen.
Vat het niet te persoonlijk op :p, wat ik verwacht.. Iets van een beetje uitleg in 'niet de programeerders taal' want dat versta ik niet.

Voor dit script heb ik een hoop op moeten zoeken, en het feit dat ik nu geen error krijg maar in ieder geval een melding die ik er zelf heb neergezet (ondanks het niet het gewenste resultaat is) , is voor mij al heel wat..

De bedoeling is dat er een login script komt wat werkt met flatfiles(textfiles).. zonder database. Dit zal veel php programeurs nogal raar in de oren klinken en ze zullen het ongetwijfelt een enorme omweg vinden.. maar het feit dat ik geen database gebruik heeft te maken met de software waarin/waarbij het gebruikt gaat worden.

Het hoeft niet per definitie een login script te zijn..

Het gaat mij erom dat ik leer hoe ik bestanden schrijf in textfiles met php.. en dat lukt..
Nu moet ik alleen nog de textfiles uit kunnen lezen.. dus de gegevens in het formulier moeten kloppen met wat er in de textfiles staat zoals bijvoorbeeld een wachtwoord.

Vandaar de keuze om me te foccussen op een login script.
Als je toch wachtwoorden op wilt slaan, encrypt ze dan met password_hash(), en sla de bestanden BUITEN je webroot op (public_html, www, htdocs).
met password_verify() kan je het password controleren. Het ophalen is echt een NO-GO, en kan gelukkig niet met deze opzet.

Om het open en bloot zichtbaar te houden is echt een groot veiligheidslek. Als iemand ze al in kan zien, dan is een connectie met de gebruikers hun gmail, facebook, twitter, outlook, mogelijk al snel gelegd met de gevolgen van dien.
Beste aar, ik waardeer je inzet enorm en ik begrijp dat je me wil helpen.. maar met password_hash() en password_verify() kom ik als php newbie niet heel ver..

De bedoeling is; formulier > beveiligingscode > php controleerd of de ingevoerde beveiligingscode overeen komt met de .txt file..

Ik begreep dat met file_get_contents je een regel kon controleren..

Reageren