|
Posted by Chuck Anderson on 10/02/06 20:11
Eric.Thomas.Moore@gmail.com wrote:
> Hey,
>
> My old boss wrote an extensive work tracking system in php for
> internal use. He left and the server he is running it on is very
> outdated so I have been given the task of transfering it over to a new
> server and the latest versions of php, mysql, and apache. That
> information is probably not relevant to the question.
>
> His system has some javascript forms. One of which is a drop down
> menu that uses the onchange functionality. Here is the code:
>
> echo "<FORM NAME=\"changeday\" METHOD=\"post\"
> ACTION=\"workentries.php\">\n";
> echo "<SELECT NAME=\"xselected_date\"
> onchange=\"mySubmit('changeday')\";>\n";
> for($i=0;$i<$past_days;$i++){ // loop through past X days
> echo "<OPTION VALUE='".$dates[$i]."' "; // output option
> if ($dates[$i] == $selected_date) {echo "selected";} // hilight
> currently selected
> echo ">".$months[$i]."/".$days[$i]; // finish option
> } // end of past months loop
> echo "</SELECT>\n"; // end of pull down menu
> echo "<input type=hidden name=xtech value='".$tech."'>"; // keep
> currently selected tech
> echo "</form>\n"; // end of change month form
>
>
> I realize this is messy code, that is why this has been so hard for me.
>
> My problem is the following:
>
> The selected value in the menu is set to $xselected_date. Then upon a
> change the form is submited back to this same php file. At the
> begginning of this php script the code then does:
>
> if (isset($xselected_date)) {blah blah blah}
>
> But this conditional is never evaluating true. Does the select name
> variable not remain declared across the form submit? If not, is there
> a way around this.
>
> Thank you in advance for the help, if i need to provide any more
> information please let me know.
>
> -Eric
>
>
Register_globals is off, by default in Php5 and that appears to be your
problem.
Your conditional would need to be:
if (isset($_POST['xselected_date'])) {blah blah blah}
You will need to make similar changes *all over the place* (for all GET,
POST, and COOKIE variables).
I'll probably get thrashed for saying this, but if you want to see your
scripts work, ... right now ... change register_globals to on in php.ini.
This creates a potential security hole and it is not advised (hence the
default setting in Php5), so you may want to work on the more long term
solution. Most all hosts refuse to run with register_globals on because
of the security issues.
On your own server, it's your own call. Having register_globals on means
you need to be very careful how you treat POST and GET variables.
--
*****************************
Chuck Anderson • Boulder, CO
http://www.CycleTourist.com
*****************************
[Back to original message]
|