我正在使用.ini文件來存儲一些值,並使用iniparser從中檢索值。通過網頁檢索ini文件的問題
當我給(硬編碼)查詢並通過命令行回收值時,我能夠檢索ini文件並執行一些操作。
但是,當我通過HTTP傳遞查詢,然後我得到一個錯誤(找不到文件),即無法加載ini文件。
- 命令行:
int main(void)
{
printf("Content-type: text/html; charset=utf-8\n\n");
char* data = "/cgi-bin/set.cgi?pname=x&value=700&url=http://IP/home.html";
//perform some operation
}
- 通過http:
的.html
function SetValue(id)
{
var val;
var URL = window.location.href;
if(id =="set")
{
document.location = "/cgi-bin/set.cgi?pname="+rwparams+"&value="+val+"&url="+URL;
}
}
- .C
int * Value(char* pname)
{
dictionary * ini ;
char *key1 = NULL;
char *key2 =NULL;
int i =0;
int val;
ini = iniparser_load("file.ini");
if(ini != NULL)
{
//key for fetching the value
key1 = (char*)malloc(sizeof(char)*50);
if(key1 != NULL)
{
strcpy(key1,"ValueList:");
key2 = (char*)malloc(sizeof(char)*50);
if(key2 != NULL)
{
strcpy(key2,pname);
strcat(key1,key2);
val = iniparser_getint(ini, key1, -1);
if(-1 == val || 0 > val)
{
return 0;
}
}
else
{
//error
free(key1);
return;
}
}
else
{
printf("ERROR : Memory Allocation Failure ");
return;
}
}
else
{
printf("ERROR : .ini File Missing");
return;
}
iniparser_freedict(ini);
free(key1);
free(key2);
return (int *)val;
}
void get_Value(char* pname,char* value)
{
int result =0;
result = Value(pname);
printf("Result : %d",result);
}
int main(void)
{
printf("Content-type: text/html; charset=utf-8\n\n");
char* data = getenv("QUERY_STRING");
//char* data = "/cgi-bin/set.cgi?pname=x&value=700&url=http://10.50.25.40/home.html";
//Parse to get the values seperately as parameter name, parameter value, url
//Calling get_Value method to set the value
get_Value(final_para,final_val);
}
*
- file.ini
*
[ValueList]
x = 100;
y = 70;
當請求是通過HTML網頁發送,我總是得到.ini文件丟失。如果直接從C文件發送請求,它可以正常工作。
如何解決這個問題?
你可以打印'data'和'strlen(data)'的值嗎(如果'data'不是'NULL')? – 2010-01-28 07:18:55
我能夠得到的字符串,它不是null。 它與下面的硬編碼示例一樣: 「/cgi-bin/set.cgi?pname=x&value=700&url=http://IP/home.html」 – MalarN 2010-01-28 07:44:00