HTML 양식(GET 및 POST)
양식이 PHP 스크립트에 제출되면 양식의 정보가 스크립트에서 자동으로 사용 가능해집니다. 이 정보에 액세스하는 방법은 다양합니다. 예를 들면 다음과 같습니다.
예제 #1 간단한 HTML 양식
<form action="foo.php" method="POST"> Name: <input type="text" name="username"><br /> Email: <input type="text" name="email"><br /> <input type="submit" name="submit" value="Submit me!" /> </form>
특정 설정 및 개인 선호도에 따라 HTML 형식의 데이터에 액세스하는 방법은 다양합니다. 예:
예제 #2 간단한 POST HTML 양식에서 데이터에 액세스
<?php // 自 PHP 4.1.0 起可用 echo $_POST['username']; echo $_REQUEST['username']; import_request_variables('p', 'p_'); echo $p_username;// 自 PHP 5.0.0 起,这些长格式的预定义变量 // 可用 register_long_arrays 指令关闭。 echo $HTTP_POST_VARS['username'];// 如果 PHP 指令 register_globals = on 时可用。不过自 // PHP 4.2.0 起默认值为 register_globals = off。 // 不提倡使用/依赖此种方法。 echo $username; ?>
GET 양식을 사용하는 것도 비슷하지만 적절한 GET 사전 정의 변수가 사용됩니다. GET은 QUERY_STRING(URL에서 "?" 뒤에 오는 정보)과도 작동합니다. 예를 들어 http://www.example.com/test.php?id=3에는 $_GET['id'] 로 액세스할 수 있는 GET 데이터가 포함되어 있습니다. $_REQUEST 및 import_request_variables() 를 참조하세요.
참고:
$_POST 및 $_GET과 같은 슈퍼전역 배열은 PHP 4.1.0부터 사용할 수 있습니다.
참고:
변수 이름의 점과 공백은 밑줄로 변환됩니다. 예를 들어 는 $_REQUEST["a_b"]가 됩니다.
위와 같이 PHP 4.2.0 이전에는 Register_globals의 기본값이 on입니다. PHP 커뮤니티는 모든 사람이 이 지시어에 의존하지 말 것을 권장하며 이 지시어가 꺼져 있다고 가정하여 코딩할 것을 권장합니다.
참고:
magic_quotes_gpc 구성 지시문은 Get, Post 및 Cookie 값에 영향을 미칩니다. 켜져 있으면 값("PHP!")이 자동으로 ("PHP!")로 변환됩니다. 10여 년 전에는 데이터베이스 삽입에 이러한 이스케이프가 필요했는데, 이제는 더 이상 사용되지 않으므로 꺼야 합니다. addlashes() , stripslashes() 및 Magic_quotes_sybase를 참조하세요.
PHP는 양식 변수의 맥락에서도 배열을 이해합니다(관련 FAQ 참조). 예를 들어 관련 변수를 그룹화하거나 이 기능을 사용하여 다중 선택 입력 상자에서 값을 가져올 수 있습니다. 예를 들어, 자신에게 양식을 게시하고 제출 시 데이터를 표시합니다.
예제 #3 더 복잡한 양식 변수
<?php if (isset( $_POST [ 'action' ]) && $_POST [ 'action' ] == 'submitted' ) { echo '<pre class="brush:php;toolbar:false">' ; print_r ( $_POST ); echo '<a href="' . $_SERVER [ 'PHP_SELF' ] . '">Please try again</a>' ; echo '' ; } else { ?>
IMAGE SUBMIT 변수 이름
양식을 제출할 때 표준 제출 버튼 대신 이미지를 사용할 수 있습니다. 다음과 같은 태그를 사용하세요:
<input type="image" src="image.gif" name="sub" />
사용자가 이미지의 아무 곳이나 클릭하면 해당 양식이 서버로 전송되고 두 개의 변수 sub_x와 sub_y가 추가됩니다. 여기에는 사용자가 클릭한 이미지의 좌표가 포함됩니다. 숙련된 사용자는 브라우저에서 보낸 실제 변수 이름에 밑줄 대신 점이 포함되어 있음(예: sub.x 및 sub.y)을 알 수 있지만 PHP는 자동으로 점을 밑줄로 변환합니다.
HTTP 쿠키
PHP는 RFC 6265에 정의된 대로 » HTTP 쿠키를 투명하게 지원합니다. 쿠키는 원격 브라우저에 데이터를 저장하고 다시 방문한 사용자를 추적하거나 식별할 수 있는 메커니즘입니다. 쿠키는 setcookie() 함수를 사용하여 설정할 수 있습니다. 쿠키는 HTTP 헤더의 일부이므로 출력이 브라우저로 전송되기 전에 SetCookie 함수를 호출해야 합니다. header() 함수에도 동일한 제한 사항이 적용됩니다. 쿠키 데이터는 $_COOKIE , $HTTP_COOKIE_VARS 및 $_REQUEST 와 같은 해당 쿠키 데이터 배열에서 사용할 수 있습니다. 자세한 내용과 예제는 setcookie() 매뉴얼 페이지를 참조하십시오.
쿠키 변수에 여러 값을 할당하려면 배열에 할당해야 합니다. 예:
<?php setcookie ( "MyCookie[foo]" , 'Testing 1' , time ()+ 3600 ); setcookie ( "MyCookie[bar]" , 'Testing 2' , time ()+ 3600 ); ?>
MyCookie가 스크립트에서 단일 배열이더라도 이렇게 하면 두 개의 별도 쿠키가 생성됩니다. 단 하나의 쿠키에 여러 값을 설정하려면 먼저 해당 값에 대해 serialize() 또는Explode() 사용을 고려하세요.
경로나 도메인이 다르지 않는 한 쿠키는 브라우저에서 이전 쿠키를 동일한 이름으로 대체합니다. 따라서 장바구니 프로그램은 카운터를 유지하고 이를 함께 전달할 수 있습니다. 예:
예제 #4 setcookie()의 예
<?php if (isset( $_COOKIE [ 'count' ])) { $count = $_COOKIE [ 'count' ] + 1 ; } else { $count = 1 ; } setcookie ( 'count' , $count , time ()+ 3600 ); setcookie ( "Cart[ $count ]" , $item , time ()+ 3600 ); ?>
变量名中的点
通常,PHP 不会改变传递给脚本中的变量名。然而应该注意到点(句号)不是 PHP 变量名中的合法字符。至于原因,看看:
<?php $varname . ext ; ?>
这时,解析器看到是一个名为 $varname 的变量,后面跟着一个字符串连接运算符,后面跟着一个裸字符串(即没有加引号的字符串,且不匹配任何已知的健名或保留字)'ext'。很明显这不是想要的结果。
出于此原因,要注意 PHP 将会自动将变量名中的点替换成下划线。
确定变量类型
因为 PHP 会判断变量类型并在需要时进行转换(通常情况下),因此在某一时刻给定的变量是何种类型并不明显。PHP 包括几个函数可以判断变量的类型,例如: gettype() , is_array() , is_float() , is_int() , is_object()和 is_string()
위 내용은 PHP 외부의 변수는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!