			    cgiparseˤĤ

					    v1.01a 2026/6/21
					    Nide lab @ Nara Women's Univ.
					    nide@ics.nara-wu.ac.jp

1. ϲ

  ˤCERN httpd°ƤcgiparseޥɤδʰʤǤ
륹ץȤCGIץ뤿ƻȤƺޤ
  cgiparseȤPerlǽ񤫤ƤޤưˤCGI.pmɬפǤPerl
CGI.pmgФɤδĶǤʼΤưȻפޤʬˤ⥷
ץȤCGIץ뤿ƻȤƺäΤǤ顢UNIX
ϴĶǤѤꤷƤޤ
  CERN httpd°cgiparse(ʲʪפȸƤӤޤ)ޥɤεǽΤ
¸Ƥޤ󤬡¸ƤʬˤĤƤʪȻȤ·
ƤޤޤʪˤϤʤǽȤơCGI饢åץɤ줿ե
μФפǽˤʤäƤޤ
  DACSȤեȥˤ⡢cgiparseȤƱ̾ǵǽλޥɤ
ޤƤΤǤcgiparseȤϻȤ䥪ץʤɤۤ
ޤλ
  ʤpublic domainȤޤ


2. ȯηа

  ȤȤϡ륹ץȤCGIץˤäơcgiparse
ȤΤhttpdΤ򥳥ѥ뤹ΤѤȤͳǡ2005ǯ
ʤνǤʸϾ¤ʤȤäƤΤ2018ǯˤʤäƸ
ΤǤ
  ȯCERN httpdϴˤʤŤեȥǡδĶǥ
ѥ뤹ˤʽפ塢cgiparse򥳥ѥ뤹뤳Ȥ
ưפʤĤˤϤʤäƤʤäȤ𤬤ޤʤ줫
ΤǤºݤ˥륹ץȤǤCGIǻȤǽϤʤ
ΤǡǾ¤εǽμ¸ˤȤɤޤäƤޤ
  DACScgiparseȤʤäͳϡ

   1. ȯDACScgiparse¸ߤΤʤä(cgiparseǸ
      CERN httpdΤΤʤäϡDACSˤϤޤ
      cgiparse°ƤʤäȤǽʤϤʤ
      ݤϺȤʤäƤ)

   2. CERN httpdcgiparseȤȤȤCGI˻ͤ
      ᡢȻȤ·ä

2ˤޤ


3. 󥹥ȡ

  PerlCGI.pm󥹥ȡ뤷ƤСȤcgiparseեPATH
̤äǥ쥯ȥ֤(Ƽ¹Բǽˤ)Ǥ󥤥󥹥ȡ
⡢ΥեǤ
  v1.01aʹߡcgiparseϷȤƤϥ륹ץȤˤʤäƤꡢLC_ALL=C
ˤƤperlץȤȤƵư褦ˤʤäƤޤϡ
Perl5.38ʹߤǥޥХȥΥݡȤԴˤʤä(UTF-8ʳ
ΥޥХȥ뤬󥵥ݡȤȤʤä)Ȥˤ֤ǡݡȤ
ʤcgiparseư줿Ȥͽ۳ư򵯤ʤ
ǤФcgiparseưС

	perl -x cgiparseޥɤΥѥ 

ưϤǤ


4. Ȥ

  ʲ2ĤΤ줫Ǥ

    1. cgiparse -init
    2. cgiparse -form [-prefix PREFIX] [-sep SEP] [-file VAR=FILE]

¤1.ξ⡢-prefix, -sep, -fileγƥץϼդΤǤ
ñ̵뤹褦ˤʤäƤޤ
  1., 2.Τɤξ⡢ޤʸޤʸ
ϡĶѿREQUEST_METHODͤGETʤ鲼(1)POSTʤ鲼(2)
ɤǤʤ(3)ǹԤޤ

   (1) ĶѿQUERY_STRINGͤȤ
   (2) ɸϤĶѿCONTENT_LENGTH˻ꤵ줿Ĺɤ
   (3) ĶѿQUERY_STRING¸ߤƤʤ(1)Ǥʤ(2)

ʸ󤬡ѿ̾=&&ѿ̾=͡פη򤷤Ƥ뤳Ȥ
Ȥޤ
  1.ξϡʸ&פǶڤäƤ;פϢ뤷

	QUERY_STRING='줿ʸ'; export QUERY_STRING

ȤΤϤޤ줿ʸפʬURL󥳡ɤ
ǡˡ'פ뤳ȤϤޤ
  2.ξϡʸ&פǶڤꡢ

	FORM_ѿ̾=''

ȤΤ1Ԥ1ĽϤޤѿ̾פرѻޤϡ_
ǻϤޤꡢѿȡ_פʤΡ٤Ǥʤ̵뤹褦ˤʤäƤ
ޤ͡פʬˡ'פäƤС'\''פѴޤ
ʸˡƱѿ̾Фͤʣ

	FORM_ѿ̾='1, 2'

Τ褦ˡ, פǶڤä1ĤˤޤȤޤ1.2.Τξ⡢
ϤshevalǤޤ
  2.ǡ-prefixץ󤬤硢FORM_פˤͤȤޤ
-sepץ󤬤硢Ʊѿ̾ФͤζڤȤơ, פ
ˤͤȤޤ
  ޤ2.-fileץ󤬤硢CGIΥեΥåץɤ
ǤΤǤˤĤƤϼǽҤ٤ޤ(CERN httpdcgiparse
ˤϤʤäǽǤ)


5. CGI

  Webڡ¦

	<form action="CGIץ" method="POSTޤGET"></form>

Τ褦ˤѤޤե

	<input type="" name="ѿ̾" value="">

Τ褦ˤȡΥФ줿˥ʸˡѿ̾=͡פ
ΤǡCGIץ(륹ץ)¦

	eval "`cgiparse -form`"

Τ褦ˤȡCGI¦ΥѿFORM_ѿ̾פ͡͡פޤ

	eval `cgiparse -form`

Ǥϡ͡פˤ*פʤɤüʸ¸ʤȤ
Τǡ" "פǰϤǲ㤨cgiparse -formνϤFORM_x='a  b'
(2)FORM_x='a /* b'פΤ褦ʾ˱ƶޤ

  ե򥢥åץɤϡform

	<form action="" method="" enctype="multipart/form-data">
	<input type="file" name="̾"></form>

Τ褦enctype="multipart/form-data"ꤷCGI¦

	eval "`cgiparse -form -file ̾=ե̾`"

ȤƤСåץɤ줿եϡ֥ե̾פΥե˳Ǽ
졢ΥեΥ饤¦Ǥ̾(եѥɤϥ饤
¦δĶˤäưۤʤ)CGI¦ΥѿFORM_̾פޤ
ʣեΥåץɤϡcgiparseޥɤΡ-file ̾=ե̾
ץ̾פʬѤʣꤹ뤳Ȥǲǽǡξ
inputʣꤷƲ
  եΥåץɤ˼Ԥ硢cgiparseޥɤͤ0
ʤޤå

	EVALCODE=`cgiparse -form -file ̾=ե̾` || {
		顼
	}
	eval "$EVALCODE"

Τ褦ˤޤ(evalΤȤˡ" "פɬ)

	eval "`cgiparse -form -file ̾=ե̾`" || {
		顼
	}

ǤϤǤ(evalΰʤcgiparseνϤϥѿؤ
ɤǡ¹ԤƤͤ0ˤϤʤʤΤ)
  ʤåץɤե뤬饤¦ǻꤵʤäϡ
cgiparseޥɤͤ0ˤϤʤޤ󡣤ΥΥåϡ
ѿFORM_ѿ̾פͤɤθǹԤäƲ
  åץɥµǽߤƤʤΤǡ¤¾μ
(㤨WebФApache2ʤLimitRequestBodyǥ쥯ƥ֤ʤ)
ԤäƲ
