» »

C@WEB@SPREMENLJIVKE

C@WEB@SPREMENLJIVKE

yimi ::

Zadeva je cisto preprosta.
Namrec. Veliko strani pisem v php, in pocasi mi to ze smrdi, zaradi nizke hitrosti. Rad bi malo preklopil na C. Sicer sem ze, in tud deluje zelo lepo, vendar je problem, da ne vem kako naj spravim spremenljivke v program. Da bi naprimer preko interneta naprimer preko obrazcev poslal dolocene spremenljivke, ki bi bile na voljo v programu.

Ima kdo kaksno idejo?

darh ::

PHP je čist dost hitra zadeva... problem je verjetn v tem, da ti mal nerodno rešuješ probleme... or am i wrong ?
Excuses are useless! Results are priceless!

wintermute ::

A ti bi zelel programirat CGI-je v C-ju? Naceloma to ni problem.

Ce posiljas podatke preko formov ("obrazcev") imas na voljo 2 moznosti (no ja, v resnici so tri): GET in POST. Ce posiljas podatke z metodo GET, CGI program dobi podatke v environment variabli QUERY_STRING (i think). Ce pa posiljas z POST, gre prenos podatkov preko standardnega vhodnega streama (stdin). Ker server ne zakljucuje podatkov z EOF, moras v tem primeru vedeti tudi stevilo poslanih bytov. To se skriva v env. spremenljivki CONTENT_LENGTH.

Se pravi, ce imas npr v formu


&ltinput type="text" name="input"&gt&lt/Input&gt


Dobi tvoj CGI program string: input=karkoli+user+vpise+v+polje

Zveni enostavno, zavedati pa se moars, da so podatki ki jih dobi CGI program od serverja URL encoded (glej RFC 1738). Se pravi, posebni znaki se zapisejo z %xx, kjer je xx hex koda znaka po ASCII. Posebni znaki so tisti, ki nimajo graficne podobe (recimo presledek, ceprav, kolikor se spomnim, se lahko presledek preslika v +), in sklepam da tudi rezervirani znaki (na primer &, %, ?, @, :, /, ...).

Tule mas en moj testni program (sicer C++) za POST metodo, ki ne naredi nic drugega kot izpise poslane podatke (tiste, napisane v formu ki klice ta CGI).


// CGI POST-method test

#include &ltiostream&gt
#include &ltcstdlib&gt

using namespace std;

int main(int argc, char** argv, char** envp)
{
// get content length from environment
char* pszEnvVal = getenv("CONTENT_LENGTH");
int cbContentLength = atoi(pszEnvVal);

// allocate memory for posted data
char* pbData = new char[cbContentLength + 1];

// get data from stdin
cin.read(pbData, cbContentLength);
// make sure data is zero-terminated
pbData[cbContentLength] = 0;

// write the response to stdout (CGI header first)
cout << "Content-Type: text/html&#92r&#92n&#92r&#92n";

cout << "&ltH4&gtpostecho.exe&lt/H4&gt";
cout << "&ltHR&gt";
cout << "&ltH2&gtCGI with C++&lt/H2&gt&ltBR&gt";
cout << "You posted:&ltBR&gt";
cout.write(pbData, cbContentLength + 1);

delete [] pbData;

return 0;
}


Vec informacij dobis v kaksni knjigi o CGI - tega je na internetu ogromno (ce ne drugje pa na IRCu ... dalnet -> #bookwarez).

Verjetno bi bilo bolje, ce uporabis kaksno namensko knjiznico za CGI (na primer CGIc, poglej na yahoo).

HTH.

Za admine: naprosam avtorja skript (se pravi Primoza), da, ce je mogoce uvede poseben tag za oznacevanje sourca (alpa ze obstaja pa jaz ne vem?). Ker pisat source kodo semle je prava muka.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčna blahajna - PHP - certifikati

Oddelek: Programiranje
5943 (709) app5771283
»

PHP POST težava

Oddelek: Programiranje
121436 (1302) DeeJay
»

[C#] Simobilov Glasnik

Oddelek: Programiranje
134187 (1267) Mrch
»

[baze] Povezava do slike ali BLOB?

Oddelek: Programiranje
101577 (1374) BlueRunner
»

e-mail z virusom...od kod?

Oddelek: Omrežja in internet
141804 (1549) SubOrbit

Več podobnih tem