fichier C:getenv (QUERY_STRING) en C CGI
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
FILE *ptr;
char m[200];
char *data = malloc(200);
data=getenv("QUERY_STRING");
sscanf(data,"%s", m);
printf("%s", m);
ptr=fopen("c:/test.txt", "w");
fprintf(ptr, "%s", m);
fclose(ptr);
return 0;
}
// gcc -g print.c -o PRINT.EXE
fichier HTML:
<html>
<body>
<h2>CGI Server</h2>
<p>
<form action="http://localhost/cgi-bin/print.exe">
<div><label>value: <input name="m" size="10"></label></div>
<div><input type="submit" value="Run"></div>
</form>
</p>
</body>
</html>
Si l'entrée dans le formulaire de la page Web est c: /data.txt puis le résultat est: c% 3A% 2Fdata.txt
Que s'est-il passé? Pourquoi le/et le: endommagé dans la sortie? il semble que le problème est avec QUERY_STRING car getenv ("PATH") ne présente pas ce problème.
Je ne suis pas un C s'attendre, mais je suis sûr qu'il existe des bibliothèques préexistantes pour CGI et l'analyse des données de formulaire. C'est un domaine qui est plus compliqué qu'il n'y paraît, alors ne réinventez pas la roue! – Quentin