⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgi.cpp

📁 一本介绍C++Builder网络应用编程的好书。深入浅出
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl\condefs.h>
#include <vcl\sysutils.hpp>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "Unit1.h"

#pragma hdrstop
//---------------------------------------------------------------------------
USERES("CGI.res");
USEUNIT("Unit1.cpp");
//---------------------------------------------------------------------------
int main(int argc, char **argv)
{
  char *Method, *StrLen, *Buffer, *UserAgent, *Host;
  char *FoundAmpersand, *WorkString, *QueryString;
  long ContentLength;

  Method = getenv("REQUEST_METHOD");
  printf("Context-Type: text/html\n\n");
  if (Method == NULL)
  {
    printf("This was not called from a web browser!\n");
    return 0;
  }

  else if (strcmp(Method, "GET") == 0)
  {
    QueryString = getenv("QUERY_STRING");
    if (QueryString)
    {
      Buffer = new char [strlen(QueryString) + 1];
      strcpy(Buffer, QueryString);
    }
    else
    {
      printf("Could not process GET request");
      return 0;
    }
  }

  else if (strcmp(Method, "POST") == 0)
  {
    StrLen = getenv("CONTENT_LENGTH");
    if (StrLen)
    {
      ContentLength = strtol(StrLen, NULL, 0);
      if (ContentLength > 0)
      {
        Buffer = new char [ContentLength + 1];
        fread((void *)Buffer, ContentLength, 1, stdin);
        Buffer[ContentLength] = '\0';
      }
      else
      {
        printf("Content length was not specified!\n");
        return 0;
      }
    }
    else
    {
      printf("Content length was not specified\n");
      return 0;
    }
  }

  else
  {
    printf("Unrecognized method\n");
    return 0;
  }

  printf("***Some HTTP Headers***\n");
  UserAgent = getenv("HTTP_USER_AGENT");
  if (!UserAgent)
    printf("HTTP_USER_AGENT = Unknown\n");
  else
    printf("HTTP_USER_AGENT = %s\n", UserAgent);

  Host = getenv("HTTP_HOST");
  if (!Host)
    printf("HTTP_HOST = Unknown\n");
  else
    printf("HTTP_HOST = %s\n", Host);

  printf("\n***Information from form ***\n");
  printf("Method: %s\n", Method);

  Buffer = url2str(Buffer);
  WorkString = Buffer;
  FoundAmpersand = strchr(WorkString, '&');
  while (FoundAmpersand)
  {
    FoundAmpersand[0] = '\0';
    printf("%s\n", WorkString);
    WorkString += (FoundAmpersand - WorkString + 1);
    FoundAmpersand = strchr(WorkString, '&');
  }

  if (strlen(WorkString))
    printf("%s\n", WorkString);

  delete [] Buffer;
  return 0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -