Reputation:
This is probobly a really stupid issue, but I cannot find out what is the issue. I have this form which I am using as a kind of 'settings' thing with checkbox's for the settings. But for some reason (I am unsure whether data is not getting posted or if its an issue with my function) the $_SESSION
variable never gets any data in it.
Form code:
<form action="savesettings.php" method="POST" id="CSform">
<div class="modal-body">
<P class="noticeme">Please note that all of your settings are stored via cookies</P>
<div class="checkbox">
<label><input type="checkbox" name="setting1" value="unchecked">Disable page visit alert on page load</label>
</div>
<br><br><br><br><br><br>
<div class="text-centered">
<button class="btn btn-sm btn-success onclickspin" id="MSSave">Submit</button>
</div>
</div>
</form>
Jquery function (This submits the form):
$("#MSSave").click(function(){
$("#MSSave").html('<i class="fa fa-refresh fa-spin"></i>');
$('#MSSave').prop('disabled', true);
$("#CSform").submit()
});
savesettings.php:
<?php
include_once './includes/init.php';
if (isset($_POST['setting1'])) {
$_SESSION['startupalert'] = 'off';
} else {
$_SESSION['startupalert'] = 'on';
}
header('Location: index.php');
echo $_POST['setting1'];
?>
Summary: The variable $_SESSION['startupalert']
does not get filled with any data.
EDIT: Forgot to mention that init.php only has session_start();
in it.
This is where the variable $_SESSION['startupalert']
is used
<?php
if ($_SESSION['startupalert'] === 'off') {
$_SESSION['visits'] = $_SESSION['visits'] + 1;
} elseif (empty($_SESSION['firstvisit'])) {
$_SESSION['firstvisit'] = 'false';
$_SESSION['visits'] = 2;
?>
<script> swal("Welcome", "This is your first time on the site", "info"); </script>
<?php
} else {
?>
<script> swal("Welcome back", "This is your <?php echo suffix($_SESSION['visits']) ?> visit", "info"); </script>
<?php
$_SESSION['visits'] = $_SESSION['visits'] + 1;
}
?>
Upvotes: 2
Views: 52
Reputation: 4192
Just to summarize in the solution from the comments:
Your jQuery needs to stop the form from submitting twice. So, I recommend something similar to:
$("#MSSave").click(function(){
$("#MSSave").html('<i class="fa fa-refresh fa-spin"></i>');
$('#MSSave').prop('disabled', true);
$("#CSform").submit(function(e){
e.preventDefault; // this is new to your code
)};
});
Upvotes: 1