Re: Post-Vars doubled / corrupted

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sabine,

Its been my experience that you need square brackets after the input
checkbox name for PHP to see an array. This page discusses that:

http://www.evolt.org/article/Storing_form_array_data_to_MySQL_using_PHP/18/60222/

Change your code to the following and give it a try.

<ul id="colors">
        <li><input name="colors[]" id="id1" type="checkbox" value="1"
/><label for="id1">red</label></li>
        <li><input name="colors[]" id="id2" type="checkbox" value="2"
/><label for="id2">blue</label></li>
    </ul>

Aaron

On 12/15/05, Sabine <phpdev@xxxxxxx> wrote:
>
> Hi Aaron,
> thanks for your answer. The HTML elements, which "represent" arrays are
> causing problems.
> I just added
> <ul id="colors">
>         <li><input name="colors" id="id1" type="checkbox" value="1"
> /><label for="id1">red</label></li>
>         <li><input name="colors" id="id2" type="checkbox" value="2"
> /><label for="id2">blue</label></li>
>     </ul>
>
> to your minimalistic script.
> Checked both and got
> Array ( [colors] => Array ( [0] => 1 [1] => 2 [2] => 2 ) [testvar] =>
> pleasedontcorrupt [submit] => submit )
> for post.
>
> I don't really think it's a problem of my code.
> Perhaps a problem of the servers configuration. But I'm not really
> familiar with installation and configuration duties. So I don't know
> where to search.
>
> But meanwhile I read something about input filters in Apache 2.
> And thought if there is a filter on this server which corruptes my post
> vars?
>
> Config is (I don't know which parameters are really importend):
> ["IHOST_VERSION"]=>  "Linux-1.0"
> ["SERVER_SOFTWARE"]=> "Apache/2.0.55
> ["SERVER_PROTOCOL"]=>  "HTTP/1.1"
>
> PHP 4.3.11
> Server API Apache 2.0 Filter
>
> I searched for information if PHP 4.3.11 is supposed to work fine with
> Apache 2.0.55, but didn't find a clear answer.
>
> Perhaps you know (or someone else knows) if my thoughts are going in the
> right direction?
>
> Bye
> Sabine
>
>
>
>
>
>
>
>
>
>
>
>
> Aaron Koning schrieb:
>
> > I wasn't aware you could use = instead of echo (<?
> > =$_SERVER['PHP_SELF'] ?>). Try making an even simpler HTML/PHP example
> > and see if the problem exists there. Then you can incrementally build
> > your HTML/PHP back up to the point where it is breaking. Example:
> >
> > <?php
> >   print_r($_POST);
> > ?>
> > <html>
> > <head>
> > </head>
> > <body>
> >   <form action="" method="post">
> >     <input type="hidden" name="testvar" value="pleasedontcorrupt" />
> >     <input type="submit" name="submit" value="Submit" />
> >   </form>
> > </body>
> >
> >
> > Aaron
> >
> > On 12/15/05, *Sabine* <phpdev@xxxxxxx <mailto:phpdev@xxxxxxx>> wrote:
> >
> >     Hello to all,
> >
> >     I distributed my app to a new server and suddenly had values saved
> >     twice
> >     in the db and so on.
> >     I tracked it down and found out, that the problem is the content
> >     of $_POST.
> >     Vars are doubled, Strings corrupted. Absolutely absurd.
> >     I have no idea where to search for the reasons.
> >     PHP-Version is 4.3.11
> >     Does anybody else have an idea?
> >
> >     Thank you in advance
> >     Sabine
> >
> >
> >     A simple testcase:
> >
> >     <?php
> >         echo "Post:";
> >         var_dump($_POST);
> >     ?>
> >     <html>
> >     <body >
> >             <form id="formular" action="<?=$_SERVER['PHP_SELF'] ?>"
> >     method="post">
> >
> >             <ul id="colors">
> >                 <li><input class="buttons" name="colors[]" id="id1"
> >     type="checkbox" value="1"  title="chose color" /><label
> >     for="id1">red</label></li>
> >                 <li><input class="buttons" name="colors[]" id="id2"
> >     type="checkbox" value="2"  title="chose color" /><label
> >     for="id2">blue</label></li>
> >
> >                 <li><input class="buttons" name="colors[]" id="id3"
> >     type="checkbox" value="3"  title="chose color" /><label
> >     for="id3">green</label></li>
> >                 <li><input class="buttons" name="colors[]" id="id4"
> >     type="checkbox" value="4"  title="chose color" /><label
> >     for="id4">yellow</label></li>
> >             </ul>
> >
> >                 <fieldset class="nolegend">
> >                     <input type="submit" value="change colors"
> >     name="aendern" />&nbsp;&nbsp;&nbsp;
> >                     <input type="submit" value="save colors"
> >     name="speichern" />
> >                 </fieldset>
> >             </form>
> >         </body>
> >     </html>
> >
> >     Output for $_POST, if you just click on "change colors":
> >     Post: array(1) { ["aendern"]=> string(34) "change
> colorsaendern=change
> >     colors" }
> >
> >
> >     Output, if you check only "red" and click "change colors":
> >     Post: array(2) { ["colors"]=> array(1) { [0]=> string(1) "1" }
> >     ["aendern"]=> string(13) "change colors" }
> >
> >     output for 2 colors checked:
> >     Post: array(2) { ["colors"]=> array(3) { [0]=> string(1) "1" [1]=>
> >     string(1) "2" [2]=> string(1) "2" } ["aendern"]=> string(13) "change
> >     colors" }
> >
> >     --
> >     PHP General Mailing List (http://www.php.net/)
> >     To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>
>

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux