Ben momenteel bezig een inlog systeem aan het maken voor een website. en daarvoor heb ik een tutorial gevolgd alleen op een of andere manier kom ik niet verder dan de functie: if($num == 1) tijdens het testen kan ik geen gebruikersnaam en wachtwoord vinden. ziet iemand eventueel de fout?????


<?php
if(isset($_POST['hidden'])){

include('mysql_connect.php');

// variable
$username = $_POST['username'];
$password = $_POST['password'];

echo($sql);
$sql = "SELECT * FROM leden WHERE username='".$username."' AND password='".$password."'";
$query = mysql_query ($sql);
$num = mysql_num_rows($query);


if($num == 1){
// Ingelogd
echo "lol";

$sql2 = "SELECT * FROM leden WHERE username'".$username."' AND password='".$password."'";
$query2 = mysql_query($sql2);
$fetch = mysql_fetch_assoc($query2);

$_SESSION['username'] = $username;
$_SESSION['id'] = $fetch['id'];
$_SESSION['ingelogd'] = true;
header('location: member.php');

echo "Ingelogd";
}
else{
echo "Gebruikersnaam of Wachtwoord is verkeerd!!";
}
}
else{
?>

<form action='index.php' method='POST'>

Username: <input type='text' name='username'/><br>
Password: <input type='password' name='password'/><br>
<input type='hidden' name='hidden'>
<input type='submit' value='login!'>

</form>
<?php
}
}
?>
Je echo op regel 10 staat er natuurlijk een beetje voor Jan met de korte achternaam, als je een regel later pas de sql string aanmaakt. Die echo levert dus niets op.
En waarom voer je precies dezelfde query twee keer uit? Ook nutteloos, de resultaten die je nodig hebt op regel 24 t/m 26 kan je ook gewoon uit de eerste halen.

Maar om de fout te vinden zal je toch echt eerst een foutafhandeling moeten inbouwen.
<?php
if('POST' == $_SERVER['REQUEST_METHOD']) {

include('mysql_connect.php');

// variable
$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * FROM leden
WHERE username='" . mysql_real_escape_string($username) . "'
AND password='" . mysql_real_escape_string($password) . "'";
if(!$resultset = mysql_query($sql)) {
echo 'er trad een fout op: '. mysql_error();
echo '<br>'. $sql;
exit();
}
$num = mysql_num_rows($resultset);


if($num == 1) {
// Ingelogd
echo "lol";
$fetch = mysql_fetch_assoc($resultset);

$_SESSION['username'] = $fetch['username'];
$_SESSION['id'] = $fetch['id'];
$_SESSION['ingelogd'] = true;

// als je nu doorgestuurd wordt, zie je op regel 29 de echo niet meer....
//header('location: member.php');

echo "Ingelogd";
}
else {
echo "Gebruikersnaam of Wachtwoord is verkeerd!!";
$_SESSION['ingelogd'] = false;
$_SESSION['id'] = null;
$_SESSION['username'] = null;
}
}
else {
?>
Waarbij opgemerkt dat er niet gecontroleerd wordt of de beide $_POST-waarden bestaan.
Het aanmaken van 2 variabelen (regel 7/8) niet echt zinvol is.
Een wachtwoord niet zonder enige beveiliging opgeslagen dient te worden.
In een live-omgeving je geen fouten gaat echo-en op het scherm, maar via logboek of mail.
Gebruik geen * in een query, maar geef het veld/de velden op die je wilt ophalen.
mysql is 'deprecated' en zal op (korte) termijn tot foutmeldingen/problemen gaan leiden. Stap over op mysqli of PDO.
ik dacht, laten we eerst zorgen dat in lijn met TS's beperkte tutorial een werkend geheel ontstaat.

en om daarna pas met de gebreken te komen.
Dat vermoeden had ik al ;-) maar wilde TS er op wijzen dat zijn code nog wel wat verbeterpunten heeft.
Aan TS om daar (n)iets mee te doen.
heeft iemand anders een betere code voor een inlog/registreer systeem en database ?
Het is hier geen afhaalchinees ;-)

Op dit forum komen regelmatig vragen naar voren die vergelijkbaar zijn met jouw code en waar advies voor verbetering wordt gegeven. Mbv Google is heel veel te vinden. Kortom: wat houdt je tegen om zelf bezig te gaan om je te ontwikkelen i.p.v. een klaar en klaar script te vragen (waarbij je geen idee hebt wat waarvoor staat). Copy/Paste is heel gemakkelijk, maar uiteindelijk geen oplossing.
En momenteel zit ik al een week vast op zo'n simpel iets waardoor mijn andere opdrachten van school erbij inschieten en dat ik dan achter ga lopen en vertraging mee kan oplopen :(
Enrico van der List op 30/03/2014 18:46:02

En momenteel zit ik al een week vast op zo'n simpel iets waardoor mijn andere opdrachten van school erbij inschieten en dat ik dan achter ga lopen en vertraging mee kan oplopen :(


Kennelijk is het niet zo simpel, anders had je het wel klaar ;-)
Het is dus als opdracht van school?! Wil je dat wij jouw huiswerk gaan maken?
Als het goed is heb je ook les en een docent. Ga er niet van uit dat ze op school maar zo wat doen. Jij zou er dan wat van moeten leren ipv copy/paste te gaan doen.

Reageren