html - 来自网站表单的 cgi/变量

标签 html c web cgi

有人知道下面的代码有什么问题吗?

printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
printf("<TITLE>VASTAUS</TITLE>\n");
printf("<H3>The Result is!!!</H3>\n");

data = getenv("QUERY_STRING");
sscanf(data, "v=%lf&energiaLuokka=%c[^&]&kaupunki=%s[^&]&vuosi=%s[^&]&kuukausi=%s[^&]&pva=%s", &v, &energiaLuokka, kaupunki, vuosi, kuukausi, pva);
printf("Kuutio: %lf luokka: %c kaupunki: %s vuosi: %s kuukausi: %s paiva: %s", v, energiaLuokka, kaupunki, vuosi, kuukausi, pva);

它应该使用 cgi 获取通过网站表单给出的变量,但目前它只选择 2 个第一个值.. 结果输出:Kuutio: 54.000000 luokka: D kaupunki: vuosi: kuukausi: paiva:

如您所见,将“kaupunki、vuosi、kuukausi 和 paiva”变量完全留空。

我也想知道代码是否正确,但问题出在 html 中..但至少还没有找到解决它的方法

<BR>
<fieldset><legend>Rakennuksen paikkakunta</legend>
<label class="labelcenter" for="kaupunki">Paikkakunta</label> 
<select name="kaupunki" id="kaupunki"> 
<option value="0">Valitse</option> 
<option value="Espoo">Espoo</option> 
<option value="Forssa">Forssa</option>
</select>
</fieldset>
<BR>

感谢您的宝贵时间!

最佳答案

格式字符串中的所有 [^&] 可能都不应该存在。它们不自然且多余,并且会导致解析失败。

但是,我不得不问,你为什么要使用 sscanf() 来解析查询字符串?如果查询字符串参数以任何不同的顺序出现,它将中断(并且任何规范中都没有规定浏览器必须保留表单中参数的顺序)。此外,您不会对百分比编码进行解码。

我的建议是使用能够正确完成工作的 CGI 库。

关于html - 来自网站表单的 cgi/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23806195/

相关文章:

css 代码行上的 javascript 未知错误

python - 如何让特定用户在 Django 中看到不同的网页?

c++ - 使用 json 库创建 json 字符串

python - 在 Flask 中创建 Python 类的多个实例

mysql - MySQL IIS 托管网站上的突然错误

javascript - 在两个不同的 html 文件中检索具有相同 ng-app 名称的工厂值

jquery - 避免下拉子菜单元素在单击时关闭主下拉菜单

html - 如何在CSS中设置选择下拉列表的大小

c++ - Makefile 中的 "relink"意味着什么?

c - 非托管结构作为托管的返回值