Hoe kan het dat dit ineens niet werkt? Ik zie de geposte waarde van het form in mijn network tab van Chrome en daar is niks vreemds te zien, gewoon 'test'
Dat stond bij een veel geupvote antwoord op stackoverflow dus ik ging er van uit dat dat goed was. Gewoon weghalen dus? Zonder die nieuwe lijn werkt het trouwens nog steeds niet.
[size=xsmall]Toevoeging op 05/07/2018 15:31:09:[/size]
Hoe bedoel je zonder headers? Dit script werkt via AJAX en dat gedeelte werkt gewoon.
Als ik een geupvoted antwoord op Stack Overflow tegenkom, dan kijk ik altijd of het goed is, en of het aan mijn verwachtingen voldoet. Ik ga nooit op voorhand zomaar code kopiëren en plakken zonder te weten wat het doet.
En waarom ga je $conn->real_escape_string gebruiken bij een controle? Deze functie hoor je enkel in queries te gebruiken. Nu kan je het wachtwoord zelfs verminken.
Als je JSON output uitspuugt, dan moet je ook de JSON headers gebruiken.
Dat doe ik maar het leek me overbodig het hele script te plaatsen aangezien er een hoop onrelevante code tussenstaat.
Mijn vraag gaat niet over de sessie e.d. dat werkt allemaal. Puur alleen het encrypt verhaal.
@arien oke logisch ik heb de real_escape_string functie nu in de query zelf geplaatst en weggehaald bij de gepostte waardes.
<?php
// start sessie hier als je deze gebruikt
$users = array(
'thomas' => '$2y$10$5QoIWZLpjQnhCtKdo/gIuutBefpFkXrG3K6oeWZyrvLhEcjNlXGYO', // test1
'hennie' => '$2y$10$DFByYCx458qEDGQAOvVyzOTHZlri1oowrNoCxZ.xkBWFIXpxLQgvK', // test2
);
$return = array(
'success' => false,
'message' => 'no cake',
);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['username']) && array_key_exists($_POST['username'], $users) && isset($_POST['password'])) {
if (password_verify($_POST['password'], $users[$_POST['username']])) {
$return = array(
'success' => true,
'message' => 'cake',
);
// stop hier iets in sessie
}
} else {
// geen geldige username, maar voer een dummy test uit zodat hackers niet kunnen vissen naar usernames
// op grond van afwijkende responstijd, ook bij een query die geen resultaat heeft
password_verify('dummy', '$2y$10$ewdBluCzmebd0qPwj/qmP.znuTSDUZWyVN9xQ27sHedCOhV7/28Bu'); // iets dat false oplevert
}
}
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($return);
?>