Como decodificar "URL encoding" de um script CGI?
Olá, é o seguinte, eu fiz um formulário em HTML que passa os dados pra um CGI no servidor, este CGI salva as informações num arquivo e as esvia por email, porém:
"Quando o seu servidor web envia os dados do FORM para o seu CGI, ele faz um encode dos dados recebidos. Caracteres alfanumérico são enviados normalmente, espaços são convertidos para o sinal de mais (+), outros caracteres como tab, aspas são convertidos para %HH, onde HH são dois dígitos hexadecimais representando o código ASCII do caractere."
E não sei como fazer esse "URL DECODE", encontrei o codigo abaixo, porém não tenho ideia de como se fazer.
http://www.shelldorado.com/scripts/cmds/urldecode
Meu CGI:
Código :
#!/bin/sh
#daniel.uramg
#20/10/2009
#Formail
#Prepara arquivo para exibição
echo "content-type: text/html"
echo
echo "<html> <head> <title> Formulário Enviado </title> </head>"
echo "<body>"
VAR=$(sed -n '1p')
# echo "$VAR"
echo "<br><b>Os dados abaixo foram enviados com sucesso!</b>"
nome=$(echo $VAR | sed 's/\(name=\)\(.*\)\(\&mail=.*\)/\2/;s/+/ /g')
mail=$(echo $VAR | sed 's/\(.*&mail=\)\(.*\)\(\&tel=.*\)/\2/;s/%40/@/')
tel=$(echo $VAR | sed 's/\(.*&tel=\)\(.*\)\(\&endereco=.*\)/\2/')
end=$(echo $VAR | sed 's/\(.*&endereco=\)\(.*\)\(\&message=.*\)/\2/')
text=$(echo $VAR | sed 's/\(.*&message=\)\(.*\)\(\¶=.*\)/\2/')
TO=$(echo $VAR | sed 's/\(.*¶=\)\(.*\)\(\&btnOK=.*\)/\2/;s/%40/@/')
OK=$(echo $VAR | sed 's/.*\&btnOK=//')
#Dados exibidos no navegador
echo "<br>
<br><b>Nome:</b> $nome
<br><b>Email:</b> $mail
<br><b>Telefone:</b> $tel
<br><b>Endereço:</b> $end
<br><b>Mensagem:</b> $text
<br>"
echo "<br><b><i>Aguarde que em breve entraremos em contato.</i></b>"
echo "</body>"
echo "</html>"
#Envia as informações para o arquivo para serem enviados por email
echo < $(echo -e >/partition/formsend/$nome.txt "Subject: Contato através do site
To: $TO
From:"$nome"
Formulário de contato enviado pelo site:
Nome: $nome
Email: $mail
Telefone: $tel
Endereço: $end
Mensagem: $text
")
#Envia arquivo por email
cat "/partition/formsend/$nome.txt" | /usr/sbin/msmtp -t -C /etc/.msmtprc
Como exemplo um email enviado por este formulário:
Citação:
Formulário enviado pelo site:
Nome: Daniel Placido
Email:
[email protected]
Telefone: 3351-5555
Endereço: QNB+09+LOTE+02+LOJA+01
Mensagem: Mensagem+de+teste+na+primeira+linha.%0D%0ASegunda+linha%2C+esta+ferrando+com+os+espa%E7os+e+acentos%21%0D%0AN%E3o+consigui+mesmo+arrumar%21%0D%0A%0D%0AAlguem%3F%3F
Grato!