Fix redirect URL in process_login.php, update login form submission handling, and enhance QR scanner UI

This commit is contained in:
vista-man
2025-04-10 17:31:50 +02:00
parent 950ba3aafb
commit 4769f68e9b
4 changed files with 45 additions and 55 deletions

View File

@@ -45,7 +45,7 @@ document.getElementById('loginForm').addEventListener('submit', function (e) {
if (username === 'admin' && password === 'password') { if (username === 'admin' && password === 'password') {
alert('Succesvol ingelogd!'); alert('Succesvol ingelogd!');
window.location.href = '../qr/qr.html'; window.location.href = './qr/qr.html';
} else { } else {
alert('Ongeldige inloggegevens.'); alert('Ongeldige inloggegevens.');
} }

View File

@@ -35,7 +35,7 @@ try {
// Start session and store user ID // Start session and store user ID
session_start(); session_start();
$_SESSION['user_id'] = $user_id; $_SESSION['user_id'] = $user_id;
header("Location: ../qr/qr.html"); // Redirect to the QR scanner page header("Location: "); // Redirect to the QR scanner page
exit(); exit();
} else { } else {
// Redirect back to login page with an error message // Redirect back to login page with an error message

View File

@@ -1,56 +1,42 @@
const video = document.createElement("video"); const btnScanQR = document.getElementById('btn-scan-qr');
const canvasElement = document.getElementById("qr-canvas"); const qrCanvas = document.getElementById('qr-canvas');
const canvas = canvasElement.getContext("2d"); const qrResult = document.getElementById('qr-result');
const outputData = document.getElementById('outputData');
const qrResult = document.getElementById("qr-result"); btnScanQR.addEventListener('click', () => {
const outputData = document.getElementById("outputData"); qrCanvas.hidden = false;
const btnScanQR = document.getElementById("btn-scan-qr"); qrResult.hidden = true;
let scanning = false; const context = qrCanvas.getContext('2d');
navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' } })
.then((stream) => {
const video = document.createElement('video');
video.srcObject = stream;
video.setAttribute('playsinline', true); // Required to work on iOS
video.play();
qrcode.callback = res => { const scan = () => {
if (res) { if (video.readyState === video.HAVE_ENOUGH_DATA) {
outputData.innerText = res; qrCanvas.height = video.videoHeight;
scanning = false; qrCanvas.width = video.videoWidth;
context.drawImage(video, 0, 0, qrCanvas.width, qrCanvas.height);
video.srcObject.getTracks().forEach(track => { try {
track.stop(); const qrCodeData = qrcode.decode();
}); outputData.innerText = qrCodeData;
qrResult.hidden = false;
qrResult.hidden = false; qrCanvas.hidden = true;
canvasElement.hidden = true; stream.getTracks().forEach(track => track.stop());
btnScanQR.hidden = false; } catch (e) {
} requestAnimationFrame(scan);
}; }
} else {
btnScanQR.onclick = () => { requestAnimationFrame(scan);
navigator.mediaDevices }
.getUserMedia({ video: { facingMode: "environment" } }) };
.then(function(stream) { scan();
scanning = true; })
qrResult.hidden = true; .catch((err) => {
btnScanQR.hidden = true; console.error('Error accessing camera:', err);
canvasElement.hidden = false; });
video.setAttribute("playsinline", true); // required to tell iOS safari we don't want fullscreen });
video.srcObject = stream;
video.play();
tick();
scan();
});
};
function tick() {
canvasElement.height = video.videoHeight;
canvasElement.width = video.videoWidth;
canvas.drawImage(video, 0, 0, canvasElement.width, canvasElement.height);
scanning && requestAnimationFrame(tick);
}
function scan() {
try {
qrcode.decode();
} catch (e) {
setTimeout(scan, 300);
}
}

View File

@@ -29,6 +29,10 @@ html {
#btn-scan-qr { #btn-scan-qr {
cursor: pointer; cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
height: 75vh; /* Full viewport height for vertical centering */
} }
#btn-scan-qr img { #btn-scan-qr img {
@@ -36,6 +40,7 @@ html {
padding: 15px; padding: 15px;
margin: 15px; margin: 15px;
background: white; background: white;
border-radius: 10px; /* Optional: Add rounded corners */
} }
#qr-result { #qr-result {
@@ -45,4 +50,3 @@ html {
max-width: 700px; max-width: 700px;
background-color: white; background-color: white;
} }