Hallo!

Hoe kan ik zorgen dat een error verdwijnt als je de pagina reload, zonder AJAX te gebruiken. Want nu blijft de error als je ctrl+r gebruikt omdat die dan de POST opnieuw doet, maar ik wil juist dat dit niet kan. Atm heb ik nog geen code, maar hier had ik eerder een probleem mee. Ik zal code toevoegen als ik 't heb. ;)
Wellicht een idee om pas een topic te openen wanneer je relevante informatie hebt ;-)

Edit:
Wellicht bedoel je de POST refresh die opnieuw wordt uitgevoerd.
Je kan d.m.v. een header("Location: /link.php"); iemand door-/terugsturen, daarmee vervalt de POST.
Ja, maar dan reload page bv. na 3 seconden, misschien heeft die gene dan al informatie ingevuld wat dan weg is.
..... zonder AJAX te gebruiken zeg je.
Dan is mijn oplossing, ZONDER ajax en heeft het niks t emaken met "reloaden" na 3 seconden.

Post relevante code en we kunnen verder kijken :)
index.php

<?php
session_start(); // START SESSION \\

// INCLUDE SOME FILES \\
include $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/init.php';
include $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/functions.php';
include $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/login.php';

if (empty($_CONFIG['configuration'])) {
	header('Location: /configuration');
	exit();
}
if ($_CONFIG['configuration'] == 1) {
	if(empty($_CONFIG['installation'])) {
		if($_CONFIG['language'] == "nl") {
			header('Location: /installeren');
		} else {
			header('Location: /installation');
		}
	}
	
}
?>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<title>Welkom - <?=$_CONFIG['company'];?></title>
		<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
		<link rel="stylesheet" href="paneel/assets/bootstrap/css/bootstrap.min.css">
		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
		<link rel="stylesheet" href="paneel/assets/css/paneel.css">
		<link rel="stylesheet" href="paneel/assets/plugins/iCheck/square/blue.css">
	</head>
	<body class="hold-transition login-page">
		<div style="margin-top: 40px;" class="login-box">
			<div class="login-logo">
				<a href="/"><b><?=$_CONFIG['company']?></b></a>
			</div>
			<div class="login-box-body">
				<p class="login-box-msg">Login om je sessie te starten</p>
				<?php if (!empty($loginerrornl)) { echo '<p>'.$loginerrornl.'</p>'; } ?>
				<?php if (!empty($loginduccesnl)) { echo '<p>'.$loginsuccesnl.'</p>'; } ?>
				<form action="" method="post">
					<div class="form-group has-feedback">
						<input type="text" name="username" class="form-control" placeholder="Gebruikersnaam">
						<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
					</div>
					<div class="form-group has-feedback">
						<input type="password" name="password" class="form-control" placeholder="Wachtwoord">
						<span class="glyphicon glyphicon-lock form-control-feedback"></span>
					</div>
					<div class="row">
						<div class="col-xs-8">
							<div class="checkbox icheck">
								<label class="">
									<div class="icheckbox_square-blue" aria-checked="false" aria-disabled="false" style="position: relative;"><input type="checkbox" style="position: absolute; top: -20%; left: -20%; display: block; width: 140%; height: 140%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;"><ins class="iCheck-helper" style="position: absolute; top: -20%; left: -20%; display: block; width: 140%; height: 140%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;"></ins></div> Onthoud mijn gegevens
								</label>
							</div>
						</div>
						<div class="col-xs-4">
							<button style="padding-left: 5px;" name="login" type="submit" class="btn btn-primary btn-block btn-flat">Inloggen</button>
						</div>
					</div>
				</form>
				<div class="social-auth-links text-center">
					<p>- OF -</p>
					<a href="#" class="btn btn-block btn-social btn-facebook btn-flat"> Maak een nieuw account aan!</a>
					<a href="#" class="btn btn-block btn-social btn-google btn-flat"> Ik ben mijn wachtwoord vergeten!</a>
				</div>
			</div>
			<p style="text-align: center; margin-top: 10px; font-size: 13pt;">Copyright © <?=date('Y');?> <b><?=$_CONFIG['company']?></b></p>
			<p style="text-align: center; margin-top: -5px;"><i>Alle rechten voorbehouden aan de rechtmatige eigenaar.</i></p>
		</div>
		<script src="paneel/assets/plugins/jQuery/jquery-2.2.3.min.js"></script>
		<script src="paneel/assets/bootstrap/js/bootstrap.min.js"></script>
		<script src="paneel/assets/plugins/iCheck/icheck.min.js"></script>
		<script>
			$(function () {
				$('input').iCheck({
					checkboxClass: 'icheckbox_square-blue',
					radioClass: 'iradio_square-blue',
					increaseArea: '20%'
				});
			});
		</script>
	</body>
</html>


login.php

<?php
$loginerrornl = '';
$loginerroren = '';
$loginsuccesnl = '';
$loginsuccesen = '';
$prefix = $mysqli->real_escape_string($_CONFIG['prefix']);

if (isset($_POST['login'])) { // CHECK IF THERE'S A LOGIN REQUEST \\
	// PREVEND SQL INJECTIONS \\
	$username = $mysqli->real_escape_string($_POST['username']);
	$password = $_POST['password'];
	
	if (empty($username) || empty($password)) {
		$loginerrornl = 'Vul alstublieft alle velden in.';
		$loginerroren = 'Please fill in all fields.';
	} else {
		$prefix = $mysqli->real_escape_string($_CONFIG['prefix']);
		$table = $prefix.'users';
		$result = $mysqli->query("SELECT * FROM `$table` WHERE `username`='$username'");
		if(FALSE === $result) {
			$loginerrornl = 'Er is een fout opgetreden.';
			$loginerroren = 'There is an error occurred.';
			exit();
		}
		$row = $result->fetch_assoc();
		if ($username == $row['username']) {
			if (password_verify($password, $row['password'])) {
				$loginsuccesnl = 'U bent met succes ingelogd.';
				$loginsuccesen = 'You are logged in successfully.';
			} else {
				$loginerrornl = 'Foutive login gegevens.';
				$loginerroren = 'Wrong login details.';
			}
		} else {
			$loginerrornl = 'Foutive login gegevens.';
			$loginerroren = 'Wrong login details.';
		}
	}
}
?>
"Hoe kan ik zorgen dat een error verdwijnt als je de pagina reload"
"Want nu blijft de error als je ctrl+r gebruikt omdat die dan de POST opnieuw doet"

Euhm, je maakt overal een variabele aan, om JUIST een melding te tonen, zodra er een POST wordt gedaan.
Je hebt zelfs een variabele wanneer men juist is ingelogd.

"maar ik wil juist dat dit niet kan"
Wat wil je dan dat die wel doet?

Edit: regel 45, je gebruikt loginduccesnl, ik neem aan dat je loginsuccesnl bedoelt.
Ja klopt, maar als ik de persoon de pagina reload, ook met ctrl+r dat de error verdwijnd. Nu als ik de pagina reload blijft de error staan totdat ik in de adresbalk het selecteer en op enter druk.
Logisch, je POST blijft ook behouden, dus wordt het formulier ook opnieuw uitgevoerd, maar stopt dan toch vanwege de validatie die niet voldaan wordt. Dan lijkt het mij logisch dat je na een refresh alsnog de error krijgt.

Als alles goed gaat na de validatie, dan kan je het beste een redirect doen met:
header("Location: /link.php");

Zorg er dan wel voor dat je geen HTML-output of witregels er voor hebt staan.
Ja maar 't is de bedoeling dat de error verdwijnd na reload ;P
... dat is toch ook precies wat je nu uitvoert...

Elke keer zodra er een "submit" gedaan word, dan controleert login.php de velden.
Een refresh, is tevens een submit en dus een ctrl+r ook.

Wat wil je precies bereiken?
--> Zodra men een post doet, moet er een melding komen.
--> Zodra men refresht --> Logischerwijs voer je dan je controles opnieuw uit.

Wanneer komt dan het moment dat er GEEN melding getoond moet worden dan?
Als ik een goede tip mag geven: Zet de foutmeldingen in een array. Dan kan je als er een fout is meteen alle mogelijke foutmeldingen tonen. Als je wilt kan ik wel even een opzetje maken zo. Voor een login-systeem draait het vaak maar om één error, dus dan is het niet relevant.

Reageren