style of course deit buttons
[confetti] / cgi.sh
1 #!/bin/zsh
2
3 declare -A _GET
4 declare -A _POST
5 declare -A _REF
6
7 cgi_get() {  # parse HTTP GET string
8   echo "$QUERY_STRING" |tr '&' '\n' |while read query; do
9     key="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\1:')"
10     val="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\2:')"
11     _GET["$key"]="$(echo -e "$(echo "$val" |sed 's:+: :g;s:%:\\x:g')")"
12   done
13 }
14
15 cgi_post() {  # parse HTTP POST string
16   sed -u 1q |tr '&' '\n' |while read query; do
17     key="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\1:')"
18     val="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\2:')"
19     value="$(echo -e "$(echo "$val" |sed 's:+: :g;s:%:\\x:g')")"
20     if [ -n "$_POST[\"$key\"]" ]; then
21       n=0
22       while [ -n "$_POST[\"$key$n\"]" ]; do n=$(($n + 1)); done
23       _POST["$key$n"]="$value"
24     else
25       _POST["$key"]="$value"
26     fi
27     #debug "_POST[$key] => $value"
28   done
29 }
30
31 cgi_refdata() { # Parse GET data from referer
32   echo "$HTTP_REFERER" |cut -d'?' -f2- |tr '&' '\n' |while read query; do
33     key="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\1:')"
34     val="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\2:')"
35     _REF["$key"]="$(echo -e "$(echo "$val" |sed 's:+: :g;s:%:\\x:g')")"
36   done
37 }