Why is Firefox removing / ignoring hidden input values from an HTML form?
up vote
0
down vote
favorite
I have an HTML form that uses hidden inputs to manage behavior in the PHP processing script.
In browser testing I found that the form works perfectly in Chrome and IE, but there's a problem with Firefox.
The Firefox browser (using 39.0) removes hidden input values. They just completely disappear leaving only value=""
. This in turn messes up my PHP.
I've searched high and wide for information about this issue but have found nothing.
Why is Firefox removing (or ignoring) hidden input values in my HTML form?
In Original File
In Chrome Developer Tools
In Firefox Inspector
UPDATE (based on comments posted)
Browser Tests. The form has been tested across all major browser both desktop and mobile versions. The form works perfectly across all browsers (including Firefox mobile), but fails to fully function in Firefox desktop (39.0) because the hidden input values are removed.
UPDATE 2
Re-starting and re-installing Firefox has failed to fix the problem.
UPDATE 3
Have removed all client side scripting and checked HTML validation (no errors). Problem persists.
UPDATE 4
This seems to be an issue related to the way Firefox caches data and handles POST requests.
When I "Clear All History" (including cookies, cache, etc.) the form works as intended... ONCE.
In all subsequent submissions the value
attribute has an empty value, and no data is passed to PHP, until I "Clear All History" again.
This doesn't happen in other browsers.
php html forms firefox hidden-field
|
show 16 more comments
up vote
0
down vote
favorite
I have an HTML form that uses hidden inputs to manage behavior in the PHP processing script.
In browser testing I found that the form works perfectly in Chrome and IE, but there's a problem with Firefox.
The Firefox browser (using 39.0) removes hidden input values. They just completely disappear leaving only value=""
. This in turn messes up my PHP.
I've searched high and wide for information about this issue but have found nothing.
Why is Firefox removing (or ignoring) hidden input values in my HTML form?
In Original File
In Chrome Developer Tools
In Firefox Inspector
UPDATE (based on comments posted)
Browser Tests. The form has been tested across all major browser both desktop and mobile versions. The form works perfectly across all browsers (including Firefox mobile), but fails to fully function in Firefox desktop (39.0) because the hidden input values are removed.
UPDATE 2
Re-starting and re-installing Firefox has failed to fix the problem.
UPDATE 3
Have removed all client side scripting and checked HTML validation (no errors). Problem persists.
UPDATE 4
This seems to be an issue related to the way Firefox caches data and handles POST requests.
When I "Clear All History" (including cookies, cache, etc.) the form works as intended... ONCE.
In all subsequent submissions the value
attribute has an empty value, and no data is passed to PHP, until I "Clear All History" again.
This doesn't happen in other browsers.
php html forms firefox hidden-field
1
Sorry, but I doubt that FireFox really removes input field values just like that. As you say yourself: there is no evidence for that on the internet. So maybe you should look for other explanations... Maybe there is some client side scripting that alters the markup? Maybe there is some server side scripting that reacts on the browser identification? The fact that the order of properties is altered as well suggests that the content has been re-created by some processing step inbetween
– arkascha
Jul 18 '15 at 20:29
How could that be "messing up your php?" php is scripted server side; it operates independent of any browser interpretation. those tools are irrelevant.
– nomistic
Jul 18 '15 at 20:30
@nomistic it could be messing up PHP because it is expecting the field to exist. When a field is empty, it is not sent to the server at all. I can see this being a problem.
– Anonymous
Jul 18 '15 at 20:31
1
I checked on 39 - everything is working properly. This is all the code? You can reproduce this behavior injsfiddle.net
?
– stdob--
Jul 18 '15 at 20:33
@Anonymous sorry to differ, but the interpretation of this code is client side and would happen AFTER the code was sent to the browser. As arkascha states, likely there is something going on from some client-side tools. It could not be php.
– nomistic
Jul 18 '15 at 20:34
|
show 16 more comments
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have an HTML form that uses hidden inputs to manage behavior in the PHP processing script.
In browser testing I found that the form works perfectly in Chrome and IE, but there's a problem with Firefox.
The Firefox browser (using 39.0) removes hidden input values. They just completely disappear leaving only value=""
. This in turn messes up my PHP.
I've searched high and wide for information about this issue but have found nothing.
Why is Firefox removing (or ignoring) hidden input values in my HTML form?
In Original File
In Chrome Developer Tools
In Firefox Inspector
UPDATE (based on comments posted)
Browser Tests. The form has been tested across all major browser both desktop and mobile versions. The form works perfectly across all browsers (including Firefox mobile), but fails to fully function in Firefox desktop (39.0) because the hidden input values are removed.
UPDATE 2
Re-starting and re-installing Firefox has failed to fix the problem.
UPDATE 3
Have removed all client side scripting and checked HTML validation (no errors). Problem persists.
UPDATE 4
This seems to be an issue related to the way Firefox caches data and handles POST requests.
When I "Clear All History" (including cookies, cache, etc.) the form works as intended... ONCE.
In all subsequent submissions the value
attribute has an empty value, and no data is passed to PHP, until I "Clear All History" again.
This doesn't happen in other browsers.
php html forms firefox hidden-field
I have an HTML form that uses hidden inputs to manage behavior in the PHP processing script.
In browser testing I found that the form works perfectly in Chrome and IE, but there's a problem with Firefox.
The Firefox browser (using 39.0) removes hidden input values. They just completely disappear leaving only value=""
. This in turn messes up my PHP.
I've searched high and wide for information about this issue but have found nothing.
Why is Firefox removing (or ignoring) hidden input values in my HTML form?
In Original File
In Chrome Developer Tools
In Firefox Inspector
UPDATE (based on comments posted)
Browser Tests. The form has been tested across all major browser both desktop and mobile versions. The form works perfectly across all browsers (including Firefox mobile), but fails to fully function in Firefox desktop (39.0) because the hidden input values are removed.
UPDATE 2
Re-starting and re-installing Firefox has failed to fix the problem.
UPDATE 3
Have removed all client side scripting and checked HTML validation (no errors). Problem persists.
UPDATE 4
This seems to be an issue related to the way Firefox caches data and handles POST requests.
When I "Clear All History" (including cookies, cache, etc.) the form works as intended... ONCE.
In all subsequent submissions the value
attribute has an empty value, and no data is passed to PHP, until I "Clear All History" again.
This doesn't happen in other browsers.
php html forms firefox hidden-field
php html forms firefox hidden-field
edited Aug 1 '15 at 21:40
asked Jul 18 '15 at 20:22
Michael_B
143k46226337
143k46226337
1
Sorry, but I doubt that FireFox really removes input field values just like that. As you say yourself: there is no evidence for that on the internet. So maybe you should look for other explanations... Maybe there is some client side scripting that alters the markup? Maybe there is some server side scripting that reacts on the browser identification? The fact that the order of properties is altered as well suggests that the content has been re-created by some processing step inbetween
– arkascha
Jul 18 '15 at 20:29
How could that be "messing up your php?" php is scripted server side; it operates independent of any browser interpretation. those tools are irrelevant.
– nomistic
Jul 18 '15 at 20:30
@nomistic it could be messing up PHP because it is expecting the field to exist. When a field is empty, it is not sent to the server at all. I can see this being a problem.
– Anonymous
Jul 18 '15 at 20:31
1
I checked on 39 - everything is working properly. This is all the code? You can reproduce this behavior injsfiddle.net
?
– stdob--
Jul 18 '15 at 20:33
@Anonymous sorry to differ, but the interpretation of this code is client side and would happen AFTER the code was sent to the browser. As arkascha states, likely there is something going on from some client-side tools. It could not be php.
– nomistic
Jul 18 '15 at 20:34
|
show 16 more comments
1
Sorry, but I doubt that FireFox really removes input field values just like that. As you say yourself: there is no evidence for that on the internet. So maybe you should look for other explanations... Maybe there is some client side scripting that alters the markup? Maybe there is some server side scripting that reacts on the browser identification? The fact that the order of properties is altered as well suggests that the content has been re-created by some processing step inbetween
– arkascha
Jul 18 '15 at 20:29
How could that be "messing up your php?" php is scripted server side; it operates independent of any browser interpretation. those tools are irrelevant.
– nomistic
Jul 18 '15 at 20:30
@nomistic it could be messing up PHP because it is expecting the field to exist. When a field is empty, it is not sent to the server at all. I can see this being a problem.
– Anonymous
Jul 18 '15 at 20:31
1
I checked on 39 - everything is working properly. This is all the code? You can reproduce this behavior injsfiddle.net
?
– stdob--
Jul 18 '15 at 20:33
@Anonymous sorry to differ, but the interpretation of this code is client side and would happen AFTER the code was sent to the browser. As arkascha states, likely there is something going on from some client-side tools. It could not be php.
– nomistic
Jul 18 '15 at 20:34
1
1
Sorry, but I doubt that FireFox really removes input field values just like that. As you say yourself: there is no evidence for that on the internet. So maybe you should look for other explanations... Maybe there is some client side scripting that alters the markup? Maybe there is some server side scripting that reacts on the browser identification? The fact that the order of properties is altered as well suggests that the content has been re-created by some processing step inbetween
– arkascha
Jul 18 '15 at 20:29
Sorry, but I doubt that FireFox really removes input field values just like that. As you say yourself: there is no evidence for that on the internet. So maybe you should look for other explanations... Maybe there is some client side scripting that alters the markup? Maybe there is some server side scripting that reacts on the browser identification? The fact that the order of properties is altered as well suggests that the content has been re-created by some processing step inbetween
– arkascha
Jul 18 '15 at 20:29
How could that be "messing up your php?" php is scripted server side; it operates independent of any browser interpretation. those tools are irrelevant.
– nomistic
Jul 18 '15 at 20:30
How could that be "messing up your php?" php is scripted server side; it operates independent of any browser interpretation. those tools are irrelevant.
– nomistic
Jul 18 '15 at 20:30
@nomistic it could be messing up PHP because it is expecting the field to exist. When a field is empty, it is not sent to the server at all. I can see this being a problem.
– Anonymous
Jul 18 '15 at 20:31
@nomistic it could be messing up PHP because it is expecting the field to exist. When a field is empty, it is not sent to the server at all. I can see this being a problem.
– Anonymous
Jul 18 '15 at 20:31
1
1
I checked on 39 - everything is working properly. This is all the code? You can reproduce this behavior in
jsfiddle.net
?– stdob--
Jul 18 '15 at 20:33
I checked on 39 - everything is working properly. This is all the code? You can reproduce this behavior in
jsfiddle.net
?– stdob--
Jul 18 '15 at 20:33
@Anonymous sorry to differ, but the interpretation of this code is client side and would happen AFTER the code was sent to the browser. As arkascha states, likely there is something going on from some client-side tools. It could not be php.
– nomistic
Jul 18 '15 at 20:34
@Anonymous sorry to differ, but the interpretation of this code is client side and would happen AFTER the code was sent to the browser. As arkascha states, likely there is something going on from some client-side tools. It could not be php.
– nomistic
Jul 18 '15 at 20:34
|
show 16 more comments
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
I had exactly the same issue. No client side script used. I nested the hidden field in a div and then all worked.
This worked:
<div>
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
</div>
This replicated exact behavior described in post:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
Either variant above worked on Chrome. Issue only appeared on desktop Firefox 63.0.1 (64-bit).
Update (2018-11-15) Actually in my case the issue was that the HTML was malformed (there was no space before the name attribute). It appears that Chrome was tolerant of this and Firefox less so. Firefox submitted the value once and then not again unless cache was cleared. Correcting the HTML corrected this quirky behavior experienced with Firefox. Corrected HTML:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>" name="_token">
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f31495222%2fwhy-is-firefox-removing-ignoring-hidden-input-values-from-an-html-form%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
I had exactly the same issue. No client side script used. I nested the hidden field in a div and then all worked.
This worked:
<div>
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
</div>
This replicated exact behavior described in post:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
Either variant above worked on Chrome. Issue only appeared on desktop Firefox 63.0.1 (64-bit).
Update (2018-11-15) Actually in my case the issue was that the HTML was malformed (there was no space before the name attribute). It appears that Chrome was tolerant of this and Firefox less so. Firefox submitted the value once and then not again unless cache was cleared. Correcting the HTML corrected this quirky behavior experienced with Firefox. Corrected HTML:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>" name="_token">
add a comment |
up vote
0
down vote
accepted
I had exactly the same issue. No client side script used. I nested the hidden field in a div and then all worked.
This worked:
<div>
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
</div>
This replicated exact behavior described in post:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
Either variant above worked on Chrome. Issue only appeared on desktop Firefox 63.0.1 (64-bit).
Update (2018-11-15) Actually in my case the issue was that the HTML was malformed (there was no space before the name attribute). It appears that Chrome was tolerant of this and Firefox less so. Firefox submitted the value once and then not again unless cache was cleared. Correcting the HTML corrected this quirky behavior experienced with Firefox. Corrected HTML:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>" name="_token">
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
I had exactly the same issue. No client side script used. I nested the hidden field in a div and then all worked.
This worked:
<div>
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
</div>
This replicated exact behavior described in post:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
Either variant above worked on Chrome. Issue only appeared on desktop Firefox 63.0.1 (64-bit).
Update (2018-11-15) Actually in my case the issue was that the HTML was malformed (there was no space before the name attribute). It appears that Chrome was tolerant of this and Firefox less so. Firefox submitted the value once and then not again unless cache was cleared. Correcting the HTML corrected this quirky behavior experienced with Firefox. Corrected HTML:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>" name="_token">
I had exactly the same issue. No client side script used. I nested the hidden field in a div and then all worked.
This worked:
<div>
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
</div>
This replicated exact behavior described in post:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
Either variant above worked on Chrome. Issue only appeared on desktop Firefox 63.0.1 (64-bit).
Update (2018-11-15) Actually in my case the issue was that the HTML was malformed (there was no space before the name attribute). It appears that Chrome was tolerant of this and Firefox less so. Firefox submitted the value once and then not again unless cache was cleared. Correcting the HTML corrected this quirky behavior experienced with Firefox. Corrected HTML:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>" name="_token">
edited Nov 15 at 19:50
answered Nov 12 at 14:35
Trent Crawford
243
243
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f31495222%2fwhy-is-firefox-removing-ignoring-hidden-input-values-from-an-html-form%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Sorry, but I doubt that FireFox really removes input field values just like that. As you say yourself: there is no evidence for that on the internet. So maybe you should look for other explanations... Maybe there is some client side scripting that alters the markup? Maybe there is some server side scripting that reacts on the browser identification? The fact that the order of properties is altered as well suggests that the content has been re-created by some processing step inbetween
– arkascha
Jul 18 '15 at 20:29
How could that be "messing up your php?" php is scripted server side; it operates independent of any browser interpretation. those tools are irrelevant.
– nomistic
Jul 18 '15 at 20:30
@nomistic it could be messing up PHP because it is expecting the field to exist. When a field is empty, it is not sent to the server at all. I can see this being a problem.
– Anonymous
Jul 18 '15 at 20:31
1
I checked on 39 - everything is working properly. This is all the code? You can reproduce this behavior in
jsfiddle.net
?– stdob--
Jul 18 '15 at 20:33
@Anonymous sorry to differ, but the interpretation of this code is client side and would happen AFTER the code was sent to the browser. As arkascha states, likely there is something going on from some client-side tools. It could not be php.
– nomistic
Jul 18 '15 at 20:34