C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛

рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ?


рд╣рд╛рдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдмреЗрдХрд╛рд░ рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдпрд╛рдо рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдк рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдмрддрд╛рдКрдВрдЧрд╛ред

рдпрд╣ рди рдХреЗрд╡рд▓ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧреА рдФрд░ рдмрд╣реБрдд рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рднреА рд╣реЛрдЧрд╛ред

рд╣реЛрд╕реНрдЯрд┐рдВрдЧ


рдЖрдк рд╢рд╛рдпрдж рд╕реЛрдЪрддреЗ рд╣реИрдВ: рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдпрд╛ рдЖрднрд╛рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рд░реНрд╡рд░ рдХрдИ рд╕рд╛рдЗрдЯреЛрдВ (рди рдХреЗрд╡рд▓ рд╕реА ++ рд╕рд╛рдЗрдЯреЛрдВ) рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдк рд╕рд╛рдЭрд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рд╕реА ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреЛрдИ рднреА рд╡реЗрдм рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЬреЛ рд╕реАрдЬреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ (рдЬреЛ рдХрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ) C ++ рдореЗрдВ рдПрдХ рд╕рд╛рдЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреАред рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рд╕реАрдзреЗ SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрд╛рджрди рдФрд░ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦреЗрдВред

рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ


рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореИрдВ cPanel рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╡реЗ рд╕рд╕реНрддреА, рд╕рд╕реНрддреА рдФрд░ рд╕реБрд╕рдВрдЧрдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рдХреБрдЫ рд╕рд░рд▓ рдЕрдкрд╛рдЪреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдПрдХ рдЖрднрд╛рд╕реА рдпрд╛ рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рдпрд╛ рдЕрдореЗрдЬрд╝реЕрди рдИрд╕реА 2 рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

cPanel рд╣рдореЗрдВ cgi-bin рдлрд╝реЛрд▓реНрдбрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдлрд╝рд╛рдЗрд▓ .cgi рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреА рдпрджрд┐ рдЙрд╕рдореЗрдВ рд╕рд╣реА рдЕрдиреБрдорддрд┐рдпрд╛рдБ (рдЖрдорддреМрд░ рдкрд░ 0755) рд╣реЛрдВред рдпрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ (Makefile рдореЗрдВ TAB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ)

makefile:

all: g++ -O3 -s hello.cpp -o hello.cgi clean: rm -f hello.cgi 

hello.cpp:

 #include <iostream> #include <string> #include <stdlib.h> using namespace std; void set_content_type(string content_type) { cout << "Content-type: " << content_type << "\r\n\r\n"; } void set_page_title(string title) { cout << "<title>" << title << "</title>\n"; } void h1_text(string text) { cout << text << "\n"; } int main() { set_content_type("text/html"); // Output HTML boilerplate cout << "<!doctype html>\n"; cout << "<html lang=\"en\">\n"; cout << "<head>\n"; set_page_title("Hello, World!"); cout << "</head>\n"; cout << "<body>\n"; h1_text("Hello, World!"); cout << "</body>\n"; cout << "</html>"; return 0; } 

рдпрджрд┐ рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рд╕рдВрдХрд▓рдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдЖрдкрдХреЛ рдЕрдкрдиреА рд╡реЗрдм рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЯреАрдо рд╕реЗ рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ), рддреЛ рдмрд╕ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ SSH рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ public_html рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ, рдлрд┐рд░ рдХрд░реЗрдВ:

 make 

Hello.cgi рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрддрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 http://your-test-site.com/hello.cgi 

рдлрд┐рд░ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдирд╛рдо рдпрд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ URL рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ-test-site.com рдХреЛ рдмрджрд▓реЗрдВред "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

рдХреЛрдб рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЕрдкрд╛рдЪреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ рдирд┐рдпрдо рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ рдкрд░ рджрд┐рдЦрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ hello.cgi рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрдирдкреБрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред Apache рдлрд┐рд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ set_content_type, set_page_title рдФрд░ h1_text рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛ред рд╕рд░рд▓ рд╕рд╣рд╛рдпрдХ рд╣реИрдВ рдЬреЛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдореЗрдВ рд╕реНрд╡рдЪреНрдЫрддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдмрд╕ рдореБрдЦреНрдп рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдлрд╛рдпрджрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ HTML рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 void p(string text) { cout << "<p>" << text << "</p>\n"; } 

рддреЛ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 p("This would be paragraph text."); 

рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЖрдк рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ p, h1_text рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реЗ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп, cout рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕реАрдзреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп рдкрд╛рда рд▓реМрдЯрд╛рдПрдВред рдЙрд╕реА рд╕рдордп, рдЖрдк рдмрд╣реБрдд рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рдХреБрд╢рд▓ C ++ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдкреГрд╖реНрда рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдШреЛрдВрд╕рд▓рд╛ рдЙрддреНрддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рддрдХ рдкреВрд░реНрдг рдкрд╣реБрдВрдЪ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рд╢ рдкрд░ рдкреВрд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред

рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ


рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдкрд╛рдЪреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред рдЖрдк рдЙрдирдХреЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП C рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ getenv () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХреЛрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ #include <stdlib.h> рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдкреВрд░реНрдг рдЕрдиреБрд░реЛрдз рдПрдирдЖрд░рдЖрдИ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

 string request_uri = getenv("REQUEST_URI"); 

рдЗрд╕ рдорд╛рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЪрд░:

  • REMOTE_ADDR - рдЖрдЧрдВрддреБрдХ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
  • REQUEST_METHOD - рдПрдХ рд╡рд┐рдзрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА GET, POST, рдЖрджрд┐)
  • DOCUMENT_ROOT - рд╕рд╛рдЗрдЯ рдХрд╛ рд░реВрдЯ (рдЖрдорддреМрд░ рдкрд░ рд╕рд╛рдЭрд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ ~ / public_html рдпрд╛ рдЖрднрд╛рд╕реА / рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рдкрд░ var / www / html)ред
  • QUERY_STRING - GET рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧред

рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг


рдмреЗрд╢рдХ, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреАрдИрдЯреА рдЪрд░ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ POST рдЪрд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдХреЛ рдмрджрд▓рдХрд░ рдХреБрдХреАрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕реЗрдЯ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рдердХрд╛рдК рд╣реИрдВред

рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреЛрд▓реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП GNU cgicc рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ HTML рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд░реВрдкреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдордп рдХреА рдмрдЪрдд рд╣реЛрдЧреАред

рдбреЗрдмрд┐рдпрди рдФрд░ рдЙрдмрдВрдЯреВ рдкрд░, рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 apt install libcgicc5 libcgicc5-dev 

рд▓реЗрдХрд┐рди CentOS / RHEL рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реИрдВред рдЙрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд▓рд╛рдПрдВ:

 cd /usr/local/src wget ftp://ftp.gnu.org/gnu/cgicc/cgicc-3.2.19.tar.gz tar xfz cgicc*.tar.gz cd cgicc* ./configure тАФ prefix=/usr make make install 

рдиреЛрдЯ: 3.2.19 рд▓реЗрдЦрди рдХреЗ рд╕рдордп рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдерд╛, рд▓реЗрдХрд┐рди рдЖрдк ftp.gnu.org/gnu/cgicc рдкрд░ рдПрдХ рдирдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдХреБрдЫ рднреА рд╣реЛ, рд╢рд╛рдВрддрд┐ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓реЗрдВред

Cgicc рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдВ, рдЬреЛ рдПрдХ рдлрд╝реЙрд░реНрдо рд╕реЗ рдЗрдирдкреБрдЯ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

makefile:

 all: g++ -O3 -s hello.cpp -o hello.cgi g++ -O3 -s cgicc.cpp -o cgicc.cgi /usr/lib/libcgicc.a clean: rm -f hello.cgi cgicc.cgi 

cgicc.html:

 <!doctype html> <html lang="en"> <head> <title>cgicc Test</title> </head> <body> <form method="POST" action="cgicc.cgi"> <label for="name">Name</label> <input name="name" type="text" value=""> <input name="submit" type="submit" value="Submit"> </form> </body> </html> 

cgicc.cpp:

 #include <iostream> #include <string> #include <stdio.h> #include <stdlib.h> #include <cgicc/CgiDefs.h> #include <cgicc/Cgicc.h> #include <cgicc/HTTPHTMLHeader.h> #include <cgicc/HTMLClasses.h> using namespace std; using namespace cgicc; void set_content_type(string content_type) { cout << "Content-type: " << content_type << "\r\n\r\n"; } void set_page_title(string title) { cout << "<title>" << title << "</title>\n"; } void h1_text(string text) { cout << text << "\n"; } int main() { Cgicc cgi; string name; set_content_type("text/html"); cout << "<!doctype html>\n"; cout << "<html lang=\"en\">\n"; cout << "<head>\n"; set_page_title("cgicc Test"); cout << "</head>\n"; cout << "<body>\n"; cout << "<p>"; // Grab the "name" variable from the form name = cgi("name"); // Check to make sure it isn't empty. if (!name.empty()) { cout << "Name is " << name << "\n"; } else { cout << "Name was not provided."; } cout << "</p>\n"; cout << "</body>\n"; cout << "</html>"; return 0; } 

рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореЗрдХрдлрд╛рдЗрд▓ рдореЗрдВ рдореИрдВрдиреЗ cicicc рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реНрдЯреЗрдЯрд┐рдХрд▓реА рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ (рдЖрдк рдЗрд╕реЗ -Iggicc рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ), рдореИрдВ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдмрд╛рдЗрдирд░реА рдХреЛрдб рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдПред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, cgicc рд▓рд╛рдЗрдмреНрд░реЗрд░реА POST рдЪрд░ рдХреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рддреА рд╣реИ рдФрд░ рд╣рдореЗрдВ "рдирд╛рдо" рд▓реМрдЯрд╛рддреА рд╣реИред

рдореИрдВ POST рдЗрдирдкреБрдЯ рдЪрд░ рд╕реЗ рдмрдЪ рдирд╣реАрдВ рдкрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЙрддреНрдкрд╛рджрди рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ cgicc рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЖрдк рдпрд╣рд╛рдБ рдкреВрд░реНрдг рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред

рдкреНрд░рджрд░реНрд╢рди / рдкреНрд░рджрд░реНрд╢рди


C ++ рдЕрдЪреНрдЫреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рддреЗрдЬрд╝ рд╣реИред CGI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЖрдк PHP рдЬреИрд╕реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рд╣рдореЗрд╢рд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИред рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдЫреЛрдЯреЗ (рдФрд░ рдЕрдЧреЛрдЪрд░, рдпрджрд┐ рд╕рд░реНрд╡рд░ рднрд╛рд░реА рд▓реЛрдб рди рд╣реЛ) рд╡рд┐рд▓рдВрдм рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк Nginx рдпрд╛ Apache рд╕реЗ FastCGI рд╕рдорд░реНрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЛрдИ рджреЗрд░реА рдирд╣реАрдВ рд╣реБрдИ, рд▓реЗрдХрд┐рди рдЯреНрд░реИрдлрд╝рд┐рдХ рд▓реЛрдб рд╡рд╛рд▓реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдФрд░ рднреА рддреЗрдЬрд╝ / рдЖрд╕рд╛рди рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛

рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА


рдкрддрд▓реЗ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд▓рдкреЗрдЯрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдорд╣рд╛рди рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ C / C ++ MySQL рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╣реЗрдбрд░реНрд╕ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк PHP рдХреЗ рд╕рд╛рде MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЪрд░ рдирд╛рдо рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВред

рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ImageMagick C ++ рд╣реЗрдбрд░ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХрд┐рддрдиреА рд▓рдВрдмреА рдФрд░ рдЕрдЬреАрдм рдпрд╛рддреНрд░рд╛ рд╣реИ


C ++ рдореЗрдВ рд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдкреНрд░рджрд░реНрд╢рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореИрдВ рдПрдХ рдмреНрд▓реЙрдЧ рдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ - рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдкрд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреАрдЯрд╛ рдкрде рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рд╡реЗрдм рдкрд░ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдЖрд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП C ++ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

Source: https://habr.com/ru/post/hi480208/


All Articles