As title says, how can i display alert after sending form, and reloading page?
My code looks like:
<?php
if (isset($_POST['add_user'])){
$username = $_POST['username'];
$password = $_POST['password'];
if (!empty($username) && !empty($password)) {
//SQL - Adding user to database
//And i should reload page, to prevent resending form later
//But i also want an alert after page reload
}
}
?>
You can do it like this:
//functions.php
<?php
$current_page = basename($_SERVER['PHP_SELF']);
function AntiFormResend($alert, $location) {
$_SESSION["status"] = $alert;
header("Location: $location");
exit(0);
}
?>
//index.php
<?php
require 'functions.php';
if (isset($_POST['add_user'])){
$username = $_POST['username'];
$password = $_POST['password'];
if (!empty($username) && !empty($password)) {
//SQL - Adding user to database
$alert = '<div class="alert">Success: User added</div>';
AntiFormResend($alert, $current_page);
} else {
$alert = '<div class="alert">Error: User not added</div>';
AntiFormResend($alert, $current_page);
}
}
?>
<html>
<head></head>
<body>
<?php
if (isset($_SESSION["status"])) {
echo $_SESSION['status'];
unset($_SESSION["status"]);
}
?>
</body>
</html>
</div>
The easiest solution, redirect back to your original form, with a parameter added in the URL like so: header("Location: /myForm.php?success=true")
.
Then it's as simple as (In myForm.php):
<?php
if (isset($_GET['success']) && $_GET['success'] === 'true') {
echo "<script>alert('Success!');</script>";
}