What I want the code to do is if the london radio button is selected and submitted this changes the $WEATHERCONF value to 328328, the $weatherconf is on another script whiich is output as startPage.html. The $weatherconf is in the code:
the output echos a statement and shows that the if statement is working but its not changing based on the form inout but the initial value I set? Any Help with the html form have I got the name and value wrong?
Nothing is going to automatically change the value of $CitySelect for you, CGI doesn't work that way. When the user makes a GET query, the entire string appears in ${QUERY_STRING}, which you can process as you please, deriving the value from it instead of setting it to LONDON.
I basically want to update the variable in another script in the config script and send the amended value on submit to change the city. Would you suggest a different method or would this way work.
Another newbie question - do i just echo out ${QUERY_STRING} as written to output the get value/how exactly can you process this?
Your other script has to process ${QUERY_STRING} and extract the variable from it. ${QUERY_STRING} will contain values like
VAR1=value1&VAR2=value2&VAR3=value3
just like you'd see appended to the end of the webpage.
I process it like this:
# Just an example/test, you should not set QUERY_STRING yourself
QUERY_STRING="a=b&c=d&g=h&i=j"
OLDIFS="$IFS"
IFS="&" # Split strings upon & instead of space
set -- ${QUERY_STRING} # Set $1="a=b", $2="c=d", $3="g=h", $4="i=j"
while [ "$#" -ne 0 ] # Loop until we're all out of $1 $2 $3 ...
do
IFS="=" read NAME VAL <<EOF
${1}
EOF
IFS="=" read CGI_"$NAME" VAL <<EOF
${1}
EOF
shift # Get rid of $1 so $1="c=d", $2="g=h", ...
done
IFS="$OLDIFS" # Return to default splitting behavior
echo ${CGI_a}
echo ${CGI_c}
echo ${CGI_g}
You will end up with variables like CGI_a, CGI_c, CGI_g, and so forth. The CGI_ prefix is so that web users can't accidentally (or worse, maliciously) change important, special variables like PATH in your script... This way if someone tries, all they'll set is CGI_PATH.
All the read junk is just a tricky way of setting random variable names without resorting to eval. This prevents malicious web users from feeding `rm -Rf ~/ into your code...