Door
Jochem Odendaal
op 28-02-2018 22:38
gewijzigd op 01-03-2018 09:44
5.188 views
Hallo allemaal!
Ik probeer in simpel inlog form te maken via informatie uit een database. De informatie uit de database komt door een registratie form die ik heb gemaakt. Er is nu dus een probleem met mijn code waar hij geen foutmelding over geeft. Het enige wat hij doet is de hele tijd "echo "U heeft een onjuist login/wachtwoord ingevoerd";" uitvoeren dus ik heb heel erg het gevoel alsof ik iets ben vergeten. Ik heb op het moment niet iemand dichtbij die misschien wel het probleem ziet, maar daarom hoop ik dat jullie mij kunnen helpen. Hier is mijn code:
<?php
session_start();
$connect = new mysqli("localhost",
"root",
"usbw",
"cms");
if($connect ->connect_errno)
{
printf("Connect failed %s", $db->connect_error);
return false;
}
if (isset($_POST['submit']))
{
$loginpost = $_POST['login'];
$wachtwoordpost = $_POST['wachtwoord'];
$loginpost = $_SESSION['login'];
$uitkomst = mysqli_query($connect, "SELECT * FROM auteurs") or die($uitkomst . "<br/><br/>" . mysqli_error());
$row = mysqli_fetch_array($uitkomst);
$login = $row['Login'];
$wachtwoord = $row['Wachtwoord'];
if ($row["Login"] == $loginpost && $row["Wachtwoord"] == $wachtwoordpost)
{
echo "U bent ingelogd!";
}
else
{
echo "U heeft een onjuist login/wachtwoord ingevoerd";
}
}
}
?>
Ik hoop dat jullie mij hiermee kunnen helpen want ik word er helemaal gek van!
Alvast bedankt!
[quote="- Ariën - op 28/02/2018 22:51:57"]
Ik hoop dat je je wachtwoord wel veilig gehashed hebt!
[size=xsmall]Toevoeging op 28/02/2018 22:53:22:[/size]
[quote="Jasper Schellekens op 28/02/2018 22:51:55"]
als er een result is, vergelijk $_POST['wachtwoord']; met het wachtwoord uit de db.
Ook moet je rekening houden met sql injection. Je moet de string escapen.
Bijvoorbeeld:
$wachtwoordpost = mysqli_real_escape_string($connect, $_POST['Wachtwoord'];);
Dit is zo, maar als een wachtwoord gehashed is (AANRADER!!!), dan is het niet nodig. Je hebt dan toch altijd een veilige string.
[/quote]
Inderdaad, ik had mijn wachtwoord input ook niet escaped omdat ik zoiets al had gedacht. Maar de rest wel, want als je een sql injectie krijgt ben je toch wel de sjaak.
[size=xsmall]Toevoeging op 28/02/2018 22:59:04:[/size]
Jochem Odendaal op 28/02/2018 22:55:40
[quote="- Ariën - op 28/02/2018 22:51:57"]
Ik hoop dat je je wachtwoord wel veilig gehashed hebt!
Dat heb ik zeker! de registratie werkt prima. Alleen de login lukt me maar niet :(
[/quote]
In je code zie ik geen manier van hash.
MD5 werkt bijvoorbeeld zo: (MD5 kan je beter niet gebruiken)
$postwachtwoord = md5($_POST["Wachtwoord"]);
Als ik het goed heb dan, anders vergelijkt hij volgensmij joun ingevulde wachtwoord met een lange code die encrypted is.
[/quote]
JUP! dat was hem :D. Echt hartelijk bedankt voor uw hulp! Ik heb hier de hele middag aan gezeten en af te vragen wat er nou fout aan is maar nu werkt hij!
Jaa vandaar dat ik zei: (MD5 kan je beter niet gebruiken)
Was even als voorbeeld. Ik heb het namelijk ook gebruikt, totdat ik wist waarom het niet veilig is.
Jaa vandaar dat ik zei: (MD5 kan je beter niet gebruiken)
Was even als voorbeeld. Ik heb het namelijk ook gebruikt, totdat ik wist waarom het niet veilig is.
Het is voor school dus er werd ons uitgelegd waarom we beter geen md5 kunnen gebruiken maar daarna zei onze leraar dat we het moesten gebruiken in de komende paar opdrachten om er mee te leren werken.
md5() is opsich niet afgeschreven als functie, dus ik snap zijn argument wel. Maar voor het hashen van wachtwoorden is het zeer afgeraden. Ikzelf gebruik md5() enkel alleen voor het genereren van filehashes [php]md5_file[/php] om corruptie van bestanden te detecteren en voor tijdelijke hashes.
Je had het zelf heel snel kunnen vinden door te gaan debuggen: controleer wat er in een variabele zit door deze te echoën. Dan had je zelf gezien dat die twee waarden niet overeen kwamen en was heel snel duidelijk waar de oorzaak van je probleem lag.
Nu ging jij er van uit dat ze hetzelfde waren en was je verbaast over de uitkomst.
[quote="Jochem Odendaal op 28/02/2018 23:06:47"]Het is voor school
Mag ik vragen wat voor opleiding jij volgt?
Heb jij naast enige PHP-theorie ook uitleg gekregen over hoe (My)SQL werkt en hoe je vragen kunt stellen aan de database?
En tot slot, is je ook verteld hoe je veilig DATA invoegt in SQL?
[/quote]
Jup, dat is ons allemaal geleerd maar heel veel is zelfstudie dus of je het kan ligt eraan of je de opdrachten doet. En voor de opleiding die ik doe, ik doe applicatie en media ontwikkelaar. ERG leuke opleiding. Alleen wel moeilijk haha.
Verder zal het sowieso niet werken omdat jij de variable $loginpost overschrijft met een $_SESSION['login']-variable die niet bestaat, neem ik aan.
Als de gebruiker de juiste gegevens heeft ingevuld, kan je bijvoorbeeld zijn gebruikersnaam of gebruikers ID uit de database in de $_SESSION['login']-variable stoppen.
Met een hele erge vriendelijke groet,
Maarten uit je klas :p
Haha maarten :D.
Ik heb het al veranderd hoor :) ik had gisteren heel veel variaties gemaakt en deze klopte niet echt helemaal. Ik heb het nu verbeterd en netter gemaakt.