HTML 양식. PHP와 양식 그게 다야




HTML 페이지가 웹 사이트와 상호 작용하는 가장 일반적인 방법이 양식이라는 것은 누구나 다 아는 사실입니다. 양식(즉, 양식 태그로 구성된 HTML 요소)은 무료 이메일 서비스, 전자 상점 및 기타 여러 유형의 사이트에서도 사용됩니다.

PHP를 사용하여 간단한 양식을 처리하는 것은 쉽습니다. 그러나 해당 필드의 수가 광범위할 수 있고 그 수가 사전에 알려지지 않았음에도 불구하고 동일한 유형의 여러 필드가 포함된 양식을 처리해야 하는 경우가 가끔 있습니다. 이러한 경우 PHP는 값 배열과 동일한 유형의 필드를 처리하는 기능을 제공합니다.


다양한 유형의 필드에 대한 옵션을 자세히 살펴보겠습니다.

텍스트 필드

이 문서에서 텍스트 필드는 text 유형 매개변수와 textarea 태그가 있는 입력 태그로 생성된 요소로 정의됩니다. 이러한 여러 필드로 구성된 양식의 처리를 구성하는 것이 가장 쉽습니다. 아래 목록은 그러한 양식에 대한 HTML 마크업을 보여줍니다.






목록에서 볼 수 있듯이 PHP 관점에서 양식 요소의 이름은 배열 요소입니다. 따라서 이 양식을 처리하는 PHP 스크립트는 이 양식의 많은 텍스트 필드를 모두 단일 배열로 처리합니다. 개별 요소는 다음 예제와 같이 목록과 각 명령을 사용하여 인덱스로 액세스하거나 열거할 수 있습니다.

n"; ?>

스위치

이 문서에서 체크박스는 type 매개변수가 checkbox 로 설정된 입력 태그에 생성된 요소입니다. 가변 개수의 "스위치"를 사용하는 형식은 정확히 동일한 방식으로 구축됩니다. 특정 라디오 버튼 값(즉, value 속성의 값)을 선택하는 것은 중요하지 않습니다. 아래 목록에 예가 나와 있습니다.






그러나 이러한 양식의 처리는 텍스트 필드에 대해 설명된 처리와 다릅니다. 이 경우 사이트 방문자가 이 스위치를 켰는지 아니면 저 스위치를 켰는지 확인하는 것이 필요합니다. 활성화된 경우 해당 배열 요소가 존재하는 것이며, 그렇지 않은 경우에는 누락된 것입니다. 다음 목록은 활성화된 라디오 버튼을 인쇄하는 PHP 스크립트의 예입니다.

라디오 버튼

라디오 버튼 처리를 설명하기 전에 라디오 버튼이 어떻게 작동하는지 기억할 필요가 있습니다. 라디오 버튼(type 매개변수 값이 radio 인 입력 태그로 생성된 요소)의 본질은 사용자가 하나의 버튼을 선택하면 동일한 세트에서 다른 버튼을 자동으로 선택 취소한다는 것입니다. 버튼은 매우 간단하게 세트로 결합됩니다. 세트의 모든 버튼은 동일한 이름을 갖습니다.

그러나 세트에 있는 버튼의 값(즉, 값 매개변수)은 다릅니다. 그리고 선택한 버튼의 값과 세트 이름이 사이트로 전송됩니다. 텍스트 필드 및 라디오 버튼과 마찬가지로 라디오 버튼 세트의 이름은 PHP의 배열 요소 이름으로 형식화되어야 합니다. 이러한 양식의 예가 다음 목록에 나와 있습니다.

// 첫 번째 버튼 세트
// 두 번째 버튼 세트
// 세 번째 버튼 세트

라디오 버튼 처리는 처리 시 텍스트 필드와 라디오 버튼을 모두 사용한다는 아이디어를 결합한 것입니다. HTML 페이지 작성자가 기본값을 설정하지 않았고 사용자가 라디오 버튼 세트에서 특정 버튼을 선택하지 않은 경우 이 요소는 (라디오 버튼과 마찬가지로) 배열에 포함되지 않습니다.

버튼을 선택하면 해당 배열 요소에 해당 값이 포함됩니다(텍스트 필드의 경우). 다음은 여러 라디오 버튼 세트가 있는 양식을 처리하는 예제 목록입니다.

n"; ?>

따라서 복잡한 형상을 처리하는 데 복잡한 것은 없습니다.

이 튜토리얼에서는 PHP 변수와 CSS를 사용하여 간단한 디자인 템플릿 전환기를 만듭니다.

유사한 스위치가 많이 있으며 저는 이미 이 주제에 대한 강의를 몇 번 번역했습니다. 특별한 PHP 스크립트를 사용하여 디자인을 완전히 변경하거나 JavaScript를 사용할 수 있습니다. 이 경우 스크립트는 단순히 스타일 시트를 변경합니다. 페이지에서 몇 가지 스타일만 변경해야 한다면 어떻게 해야 할까요? 이 때문에 여러 가지 다른 CSS 파일을 생성하지 않습니다.

다행히도 이 상황에서 벗어날 수 있는 방법이 있습니다. PHP 변수는 스타일 시트의 일부 줄을 변경하고 그에 따라 디자인도 변경하는 데 도움이 됩니다.

우선, 페이지 콘텐츠에 대한 PHP 파일을 생성해야 합니다. 우리는 그것을 매우 간단하게 만들 것이지만 더 복잡한 응용 프로그램 체계를 개발할 수 있습니다. 스타일 시트는 .php 확장자를 가지며 CSS 폴더에 있습니다.


< html >

CSS 데모의 PHP 변수
< meta http -equiv="Content -Type" content="text /html; charset = utf-8" />










Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco Laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labum.





템플릿을 변경할 수 있는 작은 탐색 기능을 사용하여 일부 콘텐츠를 만들었습니다(이 경우 헤더가 변경됨).

쿼리 문자열을 사용하여 이름 값을 동일한 PHP 파일에 전달하여 현재 테마를 변경합니다. 또한 현재 사용하고 있는 디자인을 기억하고 사이트 전체에 남아 있는 스크립트가 필요합니다.

doctype 앞에 다음 코드를 삽입합니다.

세션_시작();


$_SESSION["템플릿"] = $_GET["템플릿"];

) elseif (isset($_SESSION["템플릿"])) (
$template = "?template=".$_SESSION["template"];
) 또 다른 (
$템플릿 = "";
}
?>

이 코드의 기능은 다음과 같습니다. 세션을 사용하고 있으므로 먼저 세션을 시작해야 합니다. 다음으로 쿼리 문자열에 템플릿 변수 값이 포함되어 있는지 확인합니다. 그렇지 않은 경우 세션 변수를 템플릿 값으로 설정합니다. 다음으로 CSS 파일의 위치에 추가할 문자열이 포함된 지역 변수를 만듭니다. 이를 통해 PHP 파일에서 사용하려는 템플릿 이름을 전달하고 CSS 스타일을 만들 수 있습니다.

이제 템플릿 전환기를 만들 수 있습니다. 원하는 패턴을 식별하기 위해 숫자 1-3을 사용합니다.

테마 전환:
1
2
3

CSS 생성을 담당하는 PHP 파일의 위치도 변경해야 합니다.

이제 템플릿 생성을 담당할 PHP 파일을 생성할 준비가 되었습니다. CSS 스타일이 여기에 포함될 것임을 파일 시작 부분에서 브라우저에 알려야 합니다. 다음 코드 줄은 이에 도움이 될 것입니다:

Header("콘텐츠 유형: 텍스트/css; 문자 집합: UTF-8");

이제 이 파일을 PHP 변수를 삽입하는 기능을 갖춘 일반 스타일 시트로 사용할 수 있습니다. 이는 페이지의 모양을 변경할 수 있을 뿐만 아니라 콘텐츠를 동적으로 바꿀 수 있는 좋은 기회를 열어줍니다.

가능한 패턴은 3개뿐이므로 해당 3자리 숫자만 사용할 수 있는지 확인해야 합니다. 갑자기 누군가 쿼리 문자열에 다른 값을 전달하려고 하면 기본 템플릿이 눈앞에 열립니다(이 경우에는 "1").

$numberoftemplates = 3;
if (isset($_GET["템플릿"])) (
$template = $_GET["템플릿"];
if ((!is_numeric($template)) || ($template > $numberoftemplates) || ($template< 0)) {
$템플릿 = 1;
) 또 다른 (
$템플릿 = 라운드($템플릿);
}
) 또 다른 (
$템플릿 = 1;
}

이제 사용할 템플릿 번호를 포함하는 로컬 변수 $template이 있습니다. 명확성을 위해 CSS 코드에 대한 주석으로 사용하여 이를 확인할 수 있습니다.

Echo "/*====== 사용된 템플릿: ".$template." ======*/";

그런 다음 style.php 파일을 참조하여 소스 코드에 "/*====== 사용된 템플릿: 1 ======*/"이라는 문구를 볼 수 있습니다. 브라우저에서 style.php?template=2에 액세스하면 다른 값이 표시됩니다.

각 템플릿마다 별도의 스타일 시트를 만들지 않기 때문에 하나의 파일에 디자인 간의 차이점만 표시하면 됩니다. 이러한 변경 사항을 배열에 쓸 수 있습니다.

$css = 배열(
"헤더 배경" => 배열(
1 => "url(../images/header-bg-1.jpg) 반복 없음",
2 => "url(../images/header-bg-2.jpg) 반복 없음",
3 => "url(../images/header-bg-3.jpg) 반복 없음"
),
"헤더-h1-색상"=> 배열(
1 => "#fff",
2 => "#fff",
3 => "#666"
),
"헤더-h1-글꼴"=> 배열(
1 => "굵은 일반 35px Helvetica, Arial, sans-serif",
2 => "굵은 일반 35px Trebuchet MS, Arial, sans-serif",
3 => "보통 일반 35px 조지아, 세리프"
);

보시다시피 각 CSS 선택기에 대해 배열에 3개의 요소를 할당했습니다.

이제 올바른 위치로 대체하면 됩니다.

배경:;

템플릿에 따라 배경 이미지가 달라집니다.

그게 당신이 필요한 전부입니다. 파일 전체에서 이러한 구성을 사용하십시오. 이 방법으로 페이지의 다양한 요소를 바꿀 수 있습니다. 전체 스타일 시트:

* {
여백:0;
패딩:0;
}
몸 (
글꼴 크기:.8em;
배경:#F3F4F9;
글꼴 모음:Arial;
텍스트 정렬:가운데;
}
#포장하다 (
너비:990px;
여백:0 자동;
텍스트 정렬:왼쪽;
}
#nav (
패딩:10px 0;
너비:990px;
오버플로:자동;
}
#로고 (
왼쪽으로 뜨다;
}
#스위처(
플로트:오른쪽;
너비:170px;
텍스트 정렬:오른쪽;
패딩:45px 20px 0 0;
}
#스위처 범위(
왼쪽으로 뜨다;
패딩:6px 10px 0 0;
}
#스위처 a (
표시:블록;
왼쪽으로 뜨다;
패딩:4px 8px;
테두리:1px 솔리드 #ccc;
배경:#eee;
여백:0 0 0 2px;
}
#스위처 a:hover (
배경:#fff;
}
#머리글 (
지우기:둘 다;
배경:;
높이: 206px;
}
#헤더 h1 (
텍스트 정렬:오른쪽;
패딩:155px 25px 0 0;
색상:;
폰트:;
}
#col1(
너비:450px;
왼쪽으로 뜨다;
여백:20px 0 0 0;
}
#col2(
너비:450px;
플로트:오른쪽;
여백:20px 0 0 0;
}

그게 다야! 즐기다!

종종 웹 사이트에서 HTML 양식이 배치된 페이지를 찾을 수 있습니다. 웹 양식은 사이트 방문자로부터 정보를 받을 수 있는 편리한 방법입니다. 이에 대한 예는 방문자와 사이트 개발자에게 피드백을 제공하는 방명록입니다. 양식은 사이트 개발자가 CMS를 개발할 때 편리하므로 사이트의 주요 속성인 관련성을 유지할 수 있습니다. 이 기사에서는 HTML 양식 작성, 처리 및 화면 양식에서 PHP 스크립트로 데이터를 전송하는 방법에 대한 기본 사항을 다룹니다.

1) 간단한 양식 만들기

태그

그리고
양식의 시작과 끝을 정의합니다. 시작 양식 태그
두 가지 속성이 포함되어 있습니다. 행동그리고 방법. action 속성에는 스크립트를 처리하기 위해 호출해야 하는 스크립트 URL이 포함되어 있습니다. 기인하다 방법양식을 제출하는 데 사용할 HTTP 요청 유형을 브라우저에 알려줍니다. 가능한 값 우편그리고 얻다.

논평

POST와 GET 방법의 주요 차이점은 정보가 전송되는 방식입니다. GET 메소드에서는 매개변수가 주소 표시줄을 통해 전달됩니다. 본질적으로 HTTP 요청 헤더에 있는 반면, POST 메서드에서는 매개변수가 HTTP 요청 본문을 통해 전송되며 주소 표시줄에는 어떤 방식으로도 반영되지 않습니다.

$text = nl2br($_POST["mytext"]);
?>

일: 2000년부터 2050년까지의 연도가 포함된 드롭다운 목록을 만들어야 한다고 가정해 보겠습니다.
해결책:양식을 처리하려면 SELECT 요소와 PHP 스크립트가 포함된 HTML 양식을 만들어야 합니다.

논의:

먼저 두 개의 파일을 만들어 보겠습니다. form.html그리고 액션.php. 파일에 있음 form.html드롭다운 목록이 있는 HTML 양식이 포함됩니다. 또한 목록의 값은 두 가지 방법으로 지정할 수 있습니다.

I. 수동 데이터 입력:

II. 루프를 통해 데이터 입력:

보시다시피 루프가 있는 두 번째 예는 더 간단합니다. 이 양식은 텍스트 필드와 정확히 동일하게 처리되기 때문에 이 양식에 대한 처리기 스크립트를 제공할 필요가 없다고 생각합니다. 목록 값은 슈퍼글로벌 배열에서 검색할 수 있습니다. $_POST.

설명:

서버에 파일을 보내기 위한 HTML 양식을 만들어 보겠습니다.




이 HTML 양식에는 요소가 포함되어 있습니다. 검색, 서버에 업로드할 파일을 선택하기 위한 대화 상자가 열립니다. 버튼을 누르면 "파일 전송", 파일이 핸들러 스크립트에 전달됩니다.

그런 다음 핸들러 스크립트를 작성해야 합니다. 액션.php. 핸들러를 작성하기 전에 파일을 복사할 디렉터리를 결정해야 합니다.

if(isset($_FILES [ "내파일" ])) //파일이 존재한다면
{
$catalog = "../이미지/" ; // 카탈로그
if (is_dir($catalog)) // 해당 디렉토리가 존재하는 경우
{
$myfile = $_FILES [ "내파일" ][ "tmp_name" ]; // 임시 파일
$myfile_name = $_FILES [ "내파일" ][ "이름" ]; // 파일 이름
if(!copy ($myfile, $catalog)) 에코 "파일 복사 오류". $myfile_name //파일 복사에 실패한 경우
}
else mkdir ("../image/" ); // 해당 디렉토리가 없으면 생성합니다.
}
?>

논평

사용자가 서버에 파일을 업로드하는 것을 신뢰한다면 매우 주의해야 합니다. 공격자는 사진이나 파일에 "나쁜" 코드를 삽입하여 서버로 보낼 수 있습니다. 이러한 경우 파일 다운로드를 엄격하게 제어해야 합니다.

이 예에서는 디렉터리를 만들고 해당 디렉터리에 파일을 서버에 복사하는 방법을 보여줍니다.

또한 요소를 사용하여 예를 보여주고 싶습니다. 체크박스. 이 요소는 요소 중 하나라도 해당되지 않는다는 점에서 다른 요소와 약간 다릅니다. 체크박스’a가 선택되지 않은 경우 슈퍼전역 변수 $_POST빈 값을 반환합니다.


파란색
검은색
하얀색

if (!empty($_POST [ "mycolor" ])) echo $_POST [ "mycolor" ]; //최소 1개의 요소가 선택된 경우
그렇지 않으면 에코 "값 선택";
?>




다른 질문이 있거나 명확하지 않은 경우 - 저희에 오신 것을 환영합니다.

세계의 모든 언어에는 '스위치'라는 단어가 있습니다.
그리고 러시아어로만 – "스위치"!
미하일 자도르노프

오늘 우리는 이러한 구문 요소에 대해 이야기하겠습니다 PHP, 스위치처럼요. HTML 태그와 혼동해서는 안 됩니다. , 스위치도 생성합니다. 그래서,

스위치 문

작업: 사용자가 선택한 항목에 따라 필요한 옵션을 표시합니다. 코드를 살펴보겠습니다:

예 1. 양식이 포함된 HTML 페이지:

사회조사

러시아어로 성적을 입력하세요:

핸들러 코드는 다음과 같습니다.

예 2. 양식 핸들러(cup6.php 파일):

if (! $score ) (
에코();
) elseif ($score == 1 ) (
echo ("공포!" );
) elseif ($score == 2 ) (
echo ("실패 %-(" );
) elseif ($score == 3 ) (
echo ("으...");
) elseif ($score == 4 ) (
echo("알았어");
) elseif ($score == 5 ) (
echo("좋아요!");
) 또 다른 (
에코( "재미있는 평가네요...");
}
?>

여러분 모두 쉽게 코드를 이해하셨고, 어떻게 동작하는지 이해하셨으리라 생각합니다. 일반적으로 이 코드는 정확하고 오류가 없지만(...인 것 같습니다...) 매우 불편합니다. 조건이 너무 많아서 모든 것이 어디에 있는지 추적하기가 매우 어렵습니다. 무엇을 해야 할까요? 이제 스위치 스위치가 필요합니다.

스위치는 다음과 같습니다.

예 3. 스위치 스위치의 모양:

스위치(표현식) (
사례 값1:
// 표현식 = 값1인 경우 실행되는 명령
부서지다; // 필요하지 않음
사례 값2:
// 표현식 = 값2인 경우 실행되는 명령
부서지다; // 필요하지 않음
...
기본:
//찾지 못하면 실행되는 명령
// 맞지 않는다
부서지다; // 필요하지 않음
}

이 전체 블록의 작동 방식:

  1. 표현식의 값이 계산됩니다.
  2. 표현식의 값은 값 1 과 비교하여 확인됩니다. 동일하면 case value1 명령 뒤에 있는 코드가 실행됩니다.
  3. 표현식의 값이 값 1과 같지 않으면 값 2, 4 등과 비교하여 확인됩니다.
  4. 일치하는 항목이 없으면 기본 블록의 코드가 실행됩니다.

기본 블록은 선택 사항이므로 생략할 수 있습니다.

명령 break(); 각 코드 블록이 필요한 후에는 코드가 실행된 후 모든 후속 사례를 건너뛰게 됩니다.

이제 두 번째 예제의 코드를 좀 더 편리하게 변경해 보겠습니다! 예를 들어 다음과 같습니다.

예제 4. 예제 2의 수정된 코드(cup6.php 파일):

스위치 ($점수) (
사례 0 :
에코( “아직 등급을 입력해야 하는데...”);
부서지다;
사례 1:
echo ("공포!" );
부서지다; 사례 2:
echo ("실패 %-(" );
부서지다;
사례 3:
echo ("으...");
부서지다;
사례 4:
echo("알았어");
부서지다;
사례 5 :
echo("좋아요!" );
부서지다;
기본:
에코(
"재미있는 평가네요...");
}
?>

이와 같이. 간단하고 편리합니다. 이 작업의 결과는 그림에 나와 있습니다.

전 후

연결

코드를 여러 부분으로 나누어 올바른 위치에 표시하는 것이 훨씬 더 편리한 경우가 많습니다. 한 파일의 내용을 다른 파일에 포함하려면 두 가지 명령을 사용할 수 있습니다: require(); 그리고 include();

필요하다()

팀 모습:

예 6. require() 명령의 모양:

require("파일명" );

스크립트를 시작하기 전에 PHP모든 require() 명령을 찾습니다. 그리고 해당 명령(명령)을 지정된 파일의 내용으로 바꿉니다..

대체는 스크립트 실행이 시작되기 전에 한 번만 발생하므로 require() 명령을 포함할 수 없습니다. 루프의 본문에!

require() 명령에 포함하는 파일입니다. 포함하고있을 것이다 PHP-암호. 이 코드가 실행됩니다.

포함하다()

팀 모습:

예 7. include() 명령의 모양:

include("파일명");

include() 명령; 지정된 파일의 내용을 삽입하고 실행하며 이는 inlcude() 명령이 나타날 때마다 스크립트 실행 중에 발생합니다. .

명백한 유사성에도 불구하고 require(); 그리고 include(); 심각하게 다릅니다: require() 명령; 스크립트가 실행되기 전에 한 번 실행되고 inlcude(); 코드에서 발생할 때마다 inlcude(); 명령을 쉽게 넣을 수 있습니다. 주기로.

이것이 생활에 어떻게 도움이 되는지: 거의 모든 사이트에는 사이트 전체에서 변경되지 않는 페이지 부분이 있습니다. 예를 들어 사이트의 헤더(헤더)와 사이트의 바닥글(하단)이 있습니다. 각 페이지에 다시 인쇄하지 않으려면 두 개의 별도 파일(예: header.php 및 footer.php)에 넣고 필요에 따라 포함해야 합니다.

이러한 페이지의 코드는 예를 들어 다음과 같습니다.

예 8. 외부 파일에서 페이지 헤더와 하단 연결:

require("header.php" ); // 현재 페이지의 텍스트는 다음과 같습니다.
require("footer.php" );
?>

이 예제에서는 이러한 파일을 한 번만 포함하므로 require()를 사용하는 것이 좋습니다.

require_once() 및 inlcude_once()

특정 파일이 코드에 한 번만 포함되어 있는지 확인해야 하는 경우 require(); 그리고 include(); require_once()를 사용해야 합니다. 및 require_once();

예제를 살펴보세요:

예 9. include_once()의 이중 사용:

include_once("top.php" );
// 여기에 코드가 있습니다 include_once("top.php" );
?>

이전 예에서 top.php 파일은 코드에 두 개의 명령이 있음에도 불구하고 페이지 코드에 한 번만 포함됩니다.

그게 다야...

글쎄, 그게 내가 오늘 당신에게 말하고 싶은 전부인 것 같습니다. 에 문제가 있을까요? PHP- 나에게 편지를 보내주세요. 제가 도와드리겠습니다!

숙제: 간단한 계산기를 만들어 보세요. 힌트를 드리자면 다음과 같은 사진이 있습니다.

그리고 또 다른 것이 있습니다. 그러한 "숙제"를 설정하는 것이 전혀 가치가 있습니까?