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
enter image description here



In Chrome Developer Tools
enter image description here



In Firefox Inspector
enter image description here



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.










share|improve this question




















  • 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















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
enter image description here



In Chrome Developer Tools
enter image description here



In Firefox Inspector
enter image description here



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.










share|improve this question




















  • 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













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
enter image description here



In Chrome Developer Tools
enter image description here



In Firefox Inspector
enter image description here



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.










share|improve this question















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
enter image description here



In Chrome Developer Tools
enter image description here



In Firefox Inspector
enter image description here



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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 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














  • 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








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












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">







share|improve this answer























    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
    });


    }
    });














    draft saved

    draft discarded


















    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">







    share|improve this answer



























      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">







      share|improve this answer

























        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">







        share|improve this answer














        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">








        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 15 at 19:50

























        answered Nov 12 at 14:35









        Trent Crawford

        243




        243






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Guess what letter conforming each word

            Port of Spain

            Run scheduled task as local user group (not BUILTIN)