what to do in order to make the form remember the previous input or the current input of the user even after he/she refreshed the page ?
should I do ,
Session is a good way to store and remember data but why complicate things? Consider if the form has many fields, developer has to store lots of values in session. Why not simply print or echo.
Example:
Form is submitted with input ssName and hidden field ssAct with value of send
Get the ssName and ssAct on form submit
$ssAct=$_REQUEST["ssAct"];
$ssName=$_REQUEST["ssName"];
and the form
<input type="text" name="ssName" value="<?php if($ssAct=='send' && $ssName!='') { echo "$ssName"; } ?>">
<input type="hidden" name="ssAct" value="send">
On submit name will be echoed if it was submitted and was not empty.
after posting your details to session, write like this in value
<?php print $_SESSION['messenger'] ?>
if you are writing both php and HTML in same file then you can do like this
<?php print $messenger] ?>
There are some main issues to check in order to get the data appear after refresh or any event handler:
1) Be aware of the signature. it must contain the method="post" attribute as follows:
<form method="post"/>
else the using of the $_POST['messenger'] will not work.
The default value of the method attribute in the form is get.
<form> equals to <form method="get">
2) Many programmers mix between the attributes id vs name. Be aware of using the correct attribute. The $_POST associative array is using the name to get data from it. That is why the next example will not work correctly:
<input type="text" id="data" value="<?php echo isset($_POST['data']) ? $_POST['data'] : "" )?/>"
To get it work right you must add the attribute name="data" as follows:
<input type="text" name="data" id="data" value="<?php echo isset($_POST['data']) ? $_POST['data'] : "" )?/>"
Good luck
I had similar issue at one of my project so I wrote some js to handle this using cookies. First I found two simple functions to set and get cookies values:
function setCookie(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
function getCookie(c_name) {
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1) {
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1) {
c_value = null;
} else {
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1) {
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start, c_end));
}
return c_value;
}
Than I wrote two other functions to set and get input values:
function saveValue(input) {
var name = input.attr('name');
var value = input.val();
setCookie(name,value);
}
function getValue(input) {
var name = input.attr('name');
var value = getCookie(name);
if(value != null && value != "" ) {
return value;
}
}
And using jQuery I save user's input value to session cookie
$('input[type=text]').each(function(){
var value = getValue($(this));
$(this).val(value);
}).on('blur', function(){
if($(this).val() != '' ) {
saveValue($(this));
}
});
I hope it'll help ;)