Hij doet wel bijna alles maar op een gegeven moent stopt hij na $sql

<?php
echo"test<br>";
include('./dbase.php');

$user = $_POST['username'];
$passwd = $_POST['password'];
$key = $_POST['key'];

echo "<br><br>Do sql query<br>";
echo $user."<br>";
echo $passwd."<br>";
echo $key."<br><br>";

if (!isset($user) && isset($passwd)) {

echo "Data should be there";

}else{

$sql = "SELECT * FROM AdminUsers WHERE Username = '".$user."' AND Passwd = '".$passwd."' AND LoginKey = '".$key."'";
echo $sql."<br>";


$result = mysqli_query($connect, $sql);

if (mysqli_num_rows($result) > 0) {
echo $result."<br>";
}

$resultCheck = mysqli_num_rows($result);
echo $resultCheck."<br><br>";


if (mysqli_num_rows($result) === 1) {
echo $result."<br>";
echo $resultCheck."<br>";
}else{
echo "No data found";
}
// if($resultCheck > 0){
// $_POST['username'] = $user;
// header('Location: ../index.php');
// //die;
// }
mysqli_close($connect);
}
?>

Als ik de $sql in de database direct uitvoer, krijg ik gewoon de results binnen.
Hij stopt gewoon na $sql en de results laat hij niet eens zien.

Wat doe ik fout?

[size=xsmall]Toevoeging op 01/06/2022 12:22:39:[/size]

Arno van Zanten op 01/06/2022 12:19:29

Hij doet wel bijna alles maar op een gegeven moent stopt hij na $sql

<?php
echo"test<br>";
include('./dbase.php');

$user = $_POST['username'];
$passwd = $_POST['password'];
$key = $_POST['key'];

echo "<br><br>Do sql query<br>";
echo $user."<br>";
echo $passwd."<br>";
echo $key."<br><br>";

if (!isset($user) && isset($passwd)) {

echo "Data should be there";

}else{

$sql = "SELECT * FROM AdminUsers WHERE Username = '".$user."' AND Passwd = '".$passwd."' AND LoginKey = '".$key."'";
echo $sql."<br>";


$result = mysqli_query($connect, $sql);

if (mysqli_num_rows($result) > 0) {
echo $result."<br>";
}

$resultCheck = mysqli_num_rows($result);
echo $resultCheck."<br><br>";


if (mysqli_num_rows($result) === 1) {
echo $result."<br>";
echo $resultCheck."<br>";
}else{
echo "No data found";
}
// if($resultCheck > 0){
// $_POST['username'] = $user;
// header('Location: ../index.php');
// //die;
// }
mysqli_close($connect);
}
?>

Als ik de $sql in de database direct uitvoer, krijg ik gewoon de results binnen.
Hij stopt gewoon na $sql en de results laat hij niet eens zien.

Wat doe ik fout?

URL : http://happy-truffles.com/test/admin/


Ik heb het opgelost, wel op een vreemde manier, maar het werkt.

logincheck.php

<?php
echo"test<br>";

include('./dbase.php');
// Zet $_POST-varriabel om naar $varriabel
$user = $_POST['username'];
$pass = $_POST['password'];
$key = $_POST['key'];
// Doe request naar dbase

echo "<br><br>We send this to the Dbase<br><br>";
echo "Username : ".$user."<br>";
echo "Password : ".$pass."<br>";
echo "Key : ".$key."<br>";

$sql = "SELECT * FROM AdminUsers WHERE Username='".$user."' AND Passwd='".$pass."' AND LoginKey='".$key."'";
$result = mysqli_query($connect, $sql);
$logindetails = mysqli_fetch_all($result, MYSQLI_ASSOC);

// show mysql details
echo "<br>Dbase string : ".$sql."<br><br>";
// end

foreach($logindetails as $detail) {
echo "This we got from DBase<br>";
echo "Username : ".$detail['Username']."<br>";
echo "Password : ".$detail['Passwd']."<br>";
echo "LoginKey : ".$detail['LoginKey']."<br>";
echo "Name : ".$detail['Name']."<br>";

}
// compare the values
if(!$details['Username'] == $user) {
echo "<br>Username OK<br>";
} else {
echo "Username not OK<br>";
}
if(!$details['Passwd'] == $pass) {
echo "Password OK<br>";
} else {
echo "Password not OK<br>";
}
if(!$details['LoginKey'] == $key) {
echo "Key OK<br>";
} else {
echo "Key not OK<br>";
}
// If everything is OK
echo "<br>Nu gaan we een sessie aanmaken<br>";
session_start();
$_SESSION['Name'] = $detail['Name'];
$_SESSION['Username'] = $detail['Username'];
$_SESSION['Passwd'] = $detail['Passwd'];
print_r($_SESSION);

header("Location: ../index.php");
?>
Werken zal het wel doen, maar er schort nog een hoop aan:

- Er mist beveiliging tegen SQL-injection. Dus pas [php]mysqli_real_escape_string[/php] toe. Nu kan Jan en Alleman je query manipuleren met kwade gevolgen, maar ook zelf kan je de query saboteren. Vul maar eens een apostrof ' in.

- Je wachtwoorden staan open en bloot. Dit wil je niet, never, nooit! Zorg ervoor dat je ze opslaat met [php]password_hash[/php] en controleert met [php]password_verify[/php]

- Maak niemand wijzer dan ze al zijn, nu verklap je of iemands username goed is. handig voor de inbreker die dan verder kan gaan.

- Je kan een session_start() nooit gebruiken na output van je script. Zet deze altijd bovenaan het script.

- Wat is het nut om een wachtwoord in een sessie op te slaan? Het enige wat je moet opslaan is de status of iemand ingelogd is: $_SESSION['LoggedIn'] wat dan true of false is.
hey, het ging erom dat het werkt en ja ik ga dat zeker nog aanpassen.
Het is dat ik wel de site verder kan afwerken.
Wel moet ik alvast zeggen, bedankt voor je hulp.
Die info die jij mij gaf, was zeer behulpzaam en ik gebruik je idee.
Stap voor stap
Je zou eventueel nog kunnen kijken voor brute-force beveiliging, en een mogelijkheid om accounts te bannen/deactiveren.
Genoeg mogelijkheden te bedenken.

Veel succes!
Is puur voor CMS panel, niet voor gebruikers, deze kunnen zich niet registreren.
Is een zakelijke website, maar toch bedankt voor de goede info.
Bedankt en ik zal zeker jullie hulp nog eens nodig hebben
Ja, maar beiden kunnen zeker dan van belang zijn.
Iemand die 5 mislukte inlogpogingen doet zou je dan bijv. voor 5 minuten kunnen blokkeren voor een verdere inlog.

En als je gevorderd bent, dan kan je zelf bijvoorbeeld 2 Factor Authenticatie inbouwen zodat iedereen die inlogt nog even met bijv. Google Authenticator op zijn mobieltje een code opvraagt die wordt overgetypt na het inloggen.

Veiligheid voor alles.

Reageren