html 확장자가 있는 페이지에서 PHP를 사용합니다. 레이아웃의 양식 HTML 페이지 PHP를 읽는 방법

로그인 양식을 만들려고 합니다. 이것은 내 HTML 양식 코드입니다.

개인적으로 저는 PDO용으로 구입했습니다.

포인트 4와 5

$password = mysql_real_escape_string(stripslashes(md5($_POST["password"])));

첫째, 순서가 잘못되었습니다. $_POST["password"]를 해시하고 그 다음에스트립슬래시를 사용하려고 합니다 - ~ 후에해시에는 슬래시가 없습니다. 그러나 사람들이 비밀번호에 슬래시(또는 기타 다른 문자)를 사용하는 것을 방지하려는 경우 문자열을 해싱하기 전에 슬래시를 제거해야 합니다.

다음 md5는 비밀번호 해싱 알고리즘으로 사용되어서는 안 됩니다. 이 알고리즘은 취약하고 무차별 대입 공격을 통해 필요한 것보다 훨씬 더 자주 문자열 충돌을 일으킬 수 있습니다.

그래요 당신 ~ 해야 하다비밀번호 자체가 아닌 비밀번호의 해시 또는 "지문"을 저장하십시오. 그러나 이상적으로는 해당 비밀번호를 md5() 함수에 던지는 대신 해당 비밀번호를 솔트 및 해시(최소 sha1 사용)하는 것이 좋습니다.

그리고 선택한 검색 엔진을 사용하여 "비밀번호 해시 설정"을 검색하세요.

포인트 6

$table WHERE 사용자 이름 = "" 에서 ID를 선택하세요. $사용자 이름. "" 및 비밀번호 = "" . $password. "";

원래 질문에서 누락된 =를 추가했지만 그게 전부입니다. 요청한 사용자 이름과 비밀번호가 일치하지 않습니다...누군가가 귀하의 사용자 이름에 SQL 주입을 시도한 경우 비밀번호는 확인되지 않습니다. 소개하다:

사용자 WHERE user.username = "fred" OR 1 = 1 -- AND user.password = "abc123"에서 user.id 선택

데이터베이스 수준의 비밀번호 확인을 신뢰하는 것보다 데이터베이스에서 지문 사용자 ID와 비밀번호를 선택한 다음 애플리케이션에서 비밀번호를 평가하는 것이 좋습니다. 이는 또한 앱 자체 내에서 특수 해싱 및 솔팅 알고리즘을 사용하여 비밀번호를 확인할 수 있음을 의미합니다.

포인트 7

$_SESSION["사용자"] = $_POST["사용자 이름"];

세션에 사용자 이름을 저장하는 것입니까? 이는 어떤 방식으로든 "로그인 검증 도구"로 사용되어서는 안 됩니다. 특히 세션에 하이재킹을 방지할 만한 것이 (분명히) 아무것도 없는 경우에는 더욱 그렇습니다.

세션 ID는 실시간으로 쿠키에서 쉽게 스니핑될 수 있으며, 이것이 다른 사람의 사용자 이름을 "빌려오는" 데 필요한 전부입니다. 적어도 사용자의 IP 주소, UserAgent 문자열 또는 각 페이지와 비교할 수 있는 상대적으로 정적인 데이터의 다른 조합을 연결하여 세션 하이재킹 가능성을 줄이도록 노력해야 합니다. 그러나 거의 모든 접근 방식에는 단점이 있습니다(특히 , 이미 발견한 바와 같이 AOL을 사용하는 방문자가 있는 경우) 그러나 99% 효과적인 지문 세션을 만들어 사용자 세션이 실수로 재설정될 가능성을 매우 낮추고 하이재킹을 줄일 수 있습니다.

이상적으로는 세션 토큰을 생성하여 완화할 수도 있습니다. CSRF 공격사용자가 데이터베이스에 대해 "권한 있는" 작업(데이터 또는 기타 업데이트)을 수행해야 하는 경우. 토큰은 데이터베이스 및/또는 데이터베이스에 저장된 완전히 무작위이고 고유한 코드일 수 있습니다. 쿠키사용자가 로그인할 때 SSL(사용자가 HTTPS 외부에서 데이터베이스를 업데이트하는 작업을 수행할 수 없는 경우). 이는 단순히 인터넷을 통해 일반 텍스트로 데이터를 전송하기 때문입니다. 나쁜 생각).

토큰은 모든/모든 양식에 대해 숨겨진 양식 필드에 배치되며 해당 양식이 제출될 때 쿠키(또는 세션 또는 데이터베이스)에 저장된 값과 비교하여 확인됩니다. 이렇게 하면 양식을 제출하는 사람이 최소한 귀하의 웹사이트에서 실시간 세션을 갖게 됩니다.

여러 가지 문제가 있을 수 있습니다.

첫째로,$match 문에 비밀번호 동일 연산자가 누락되었습니다.

$match = "$table WHERE에서 ID 선택 사용자 이름 = "".$username."" 및 비밀번호"".$password."";";

해야한다:

$match = "$table WHERE에서 ID 선택 사용자 이름 = "".$username."" 및 비밀번호 = "".$password."";";

둘째, 데이터베이스에 비밀번호를 삽입합니다. ~ 후에 md5를 사용하여 사용합니까?

그렇지 않은 경우 귀하의 요청은 md5(비밀번호)를 비밀번호와 일치시키려고 시도하는 것입니다.

개인 웹사이트를 만들 때에도 모든 사람이 모든 것을 제공할 수는 없습니다. 가능한 방법추가 사용. 향후 개발을 위한 기반을 마련하는 것은 매우 중요합니다. 과거에 웹사이트를 만들고 기본적으로 모든 페이지에 .html 확장자를 할당한 후 PHP를 사용하기로 결정했다면 계속 읽어보세요.

이전에는 SSI를 사용하려면 사이트 페이지 이름이 .shtml 확장자로 끝나야 했지만 오늘날 대부분의 인터넷 서버는 .html 확장자를 가진 페이지에서도 SSI를 사용할 수 있도록 구성되어 있어 매우 편리합니다. PHP는 완전히 다른 이야기입니다. .php 확장자가 기본 확장자입니다. 무엇이 사용될지 미리 알고 있는 웹사이트 개발자 주어진 언어프로그래밍하면 라인석에 올바른 확장자가 할당됩니다.

하지만 모든 페이지가 .html 확장자로 끝나면 어떻게 해야 할까요?

HTML 확장을 PHP로 대체

이는 여러 가지 방법으로 수행할 수 있습니다. 가장 확실한 방법은 모든 페이지에 .php 확장자를 부여하거나 기존 확장자(.html, .shtml 등)를 변경하는 것입니다. 이 방법에는 단점이 있습니다. 예를 들어, 이미 색인이 생성된 .html 확장자를 가진 페이지는 다시 색인을 생성해야 합니다. 검색 엔진. 아니면 더 나쁜 것 - 모든 것 외부 링크, 특정 페이지로 명시적으로 링크되는 링크는 유효하지 않습니다. 그리고 각 사이트의 소유자에게 이러한 변경 사항을 알리고 각 페이지에 대해 301 오류가 있는 다른 페이지를 만들어야 합니다. 물론 하나의 확장을 다른 확장으로 변경하는 것은 허용되지만 사이트에 이미 많은 페이지가 있고 다른 사이트의 다른 페이지에 대한 링크가 많이 있는 경우 어떻게 해야 합니까?

의식적인 이유로 이 순간이 사이트의 모든 페이지는 html 확장자로 끝나며 위의 변경을 원하지 않아서 불필요한 어려움을 겪었습니다.

다른 방법으로 할 수 있습니다. 사이트를 호스팅하는 서버가 mod_rewrite를 지원하고(대부분의 경우 지원함) .htaccess 파일에 액세스할 수 있는 경우 바로 이 파일에 다음 줄을 추가할 수 있습니다.

RewriteRule ^(.*)\.html $1\.php의 RewriteEngine

이 코드를 .htaccess 에 추가하면 걱정할 필요가 없습니다. .html 확장자를 가진 요청된 존재하지 않는 모든 페이지는 Apache의 경이로움 덕분에 자동으로 .php 확장자로 대체됩니다. 하지만 이 방법이 유일한 방법은 아닙니다. 동일한 .htaccess 파일에 다음을 작성할 수 있습니다.

AddHandler 애플리케이션/x-httpd-php .php .html .htm

내 생각에는 가장 성공적인 방법이다. 이는 HTML 페이지를 PHP 페이지와 동일하게 만들어, 이제 모든 PHP 기능을 HTML 확장이 포함된 페이지에서 사용할 수 있음을 의미합니다. .htaccess 파일에 액세스할 수 없는 경우 호스팅 회사에 편지를 쓰고 관리자에게 정중하게 등록을 요청할 수 있습니다. 아파치 구성(httpd.conf) 사이트에 필요한 값입니다.

그런데 이전에 사이트에서 다음과 같이 SSI를 사용했다면:

그런 다음 새 PHP 상태에서 이 코드를 다음으로 바꿔야 합니다.

그게 다예요. 위의 방법 중 하나가 도움이 될 것 같아요.

PHP는 임베디드 서버측 프로그래밍 언어입니다. 구문의 대부분은 C, Java 및 Perl에서 차용되었습니다. 또한 다음과 같은 몇 가지 고유한 특성을 추가했습니다. PHP 함수. 이 언어의 주요 목적은 동적으로 생성된 PHP HTML 페이지를 만드는 것입니다.

PHP에서 HTML로

복잡한 웹 페이지를 만들 때 특정 작업을 수행하려면 PHP와 HTML을 결합해야 하는 필요성에 직면하게 됩니다. 언뜻 보기에는 PHP와 HTML이 서로 독립적인 분야이기 때문에 복잡해 보일 수 있지만 그렇지 않습니다. PHP는 HTML과 상호 작용하도록 설계되었으며 해당 코드는 페이지 마크업에 포함될 수 있습니다.

PHP 코드는 특수 태그를 사용하여 HTML 페이지에 포함됩니다. 사용자가 페이지를 열면 서버는 PHP 코드를 처리한 다음 처리 결과를 보냅니다. PHP 코드) 브라우저에.

HTML과 PHP는 결합하기가 매우 쉽습니다. 태그 외부의 PHP 스크립트 부분PHP 컴파일러는 이를 무시하고 브라우저에 직접 전달합니다. 아래 예를 보면 완전한 PHP 스크립트가 다음과 같은 모습을 볼 수 있습니다.

안녕하세요 오늘.

위의 코드는 일반 HTML조금 PHP 스니펫출력 현재 날짜내장된 날짜 기능을 사용합니다. 이 경우, 모든 HTML은 PHP 컴파일러에 의해 무시되고 변경되지 않은 채 브라우저로 전송됩니다.

PHP를 HTML에 통합하는 것은 정말 쉽습니다. 스크립트는 일부 PHP 코드가 포함된 HTML 페이지라는 점을 기억하세요. HTML(태그 없음)만 포함하는 스크립트를 생성할 수 있습니다.) 그러면 정상적으로 작동할 것입니다.

고급 방법:

  • 메뉴 아이템

결과는 다음과 같습니다.

short_open_tag를 사용하여 PHP에서 HTML로

HTML을 PHP에 삽입하기 전에 코드를 최대한 짧게 만들어야 한다면 short_tags를 사용할 수 있습니다. 결과적으로 입력할 필요가 없습니다.짧은 태그" 와 함께 " 끄다" 에 " ~에". 대부분의 서버에는 이미 이 옵션이 활성화되어 있지만 항상 수동으로 확인하는 것이 가장 좋습니다. 짧은 태그를 사용할 때 발생할 수 있는 문제는 XML을 사용할 때의 충돌입니다. XML 구문 표현에서

short__tag를 사용하여 PHP에서 HTML로

안녕하세요 오늘은.

가능한 한 많은 플랫폼과 호환되는 사이트를 만들고 싶다면 HTML에 PHP를 삽입할 때 short_tags에 의존해서는 안 된다는 점을 명심하세요.

에코를 사용하여 HTML을 PHP로

HTML을 PHP 파일에 통합하는 또 다른 방법은 echo: 명령입니다.

이는 대부분의 편집기에서 마크업 강조 표시에 영향을 미칩니다. 그러므로 모두 선택해야 합니다. 큰따옴표백슬래시를 사용하여 HTML 코드 내부에 있습니다.

PHP에서 HTML로 - 파일 확장자

표준 구성된 웹 서버의 경우:

AddHandler cgi-script .html .htm

FastCGI를 실행하는 웹 서버의 경우:

AddHandler fcgid-script .html .htm

HTML에서 PHP로

PHP 스크립트에서 HTML 코드를 사용할 수도 있습니다. PHP를 사용하여 페이지를 열 때, 열리는 페이지의 순서를 변경하기만 하면 됩니다. HTML 태그그리고 PHP.

PHP에서 HTML 사용:

개인적인 정보

이름:
성:
"; ?>

이런 방식으로 HTML에 PHP를 삽입하면 훨씬 적은 양의 코드를 사용할 수 있습니다. 여기서는 $PHP_SELF를 전역적으로 사용하여 아래에 지정된 필드 값을 동일한 파일에서 사용할 수 있도록 합니다. 일반적으로 이러한 양식에 대해 두 개의 파일이 생성됩니다. 첫 번째는 HTML 양식 자체이고 두 번째는 처리를 수행하는 PHP 파일입니다.

이미 많은 수의 파일을 사용하고 단순화하려는 복잡한 PHP 애플리케이션이 있는 경우 이 방법이 도움이 될 수 있습니다.

이 간행물은 친절한 프로젝트 팀이 준비한 "HTML의 PHP" 기사를 번역한 것입니다.

>

초보자를 위한 PHP

이 페이지에서는 동적 웹사이트 구축의 논리를 설명하려고 합니다. Php는 서버에서 실행되는 스크립트입니다. 이것은 무엇을 의미 하는가? 서버에는 특정 언어 구성을 이해하는 특수 인터프리터가 설치되어 있습니다. PHP 파일 자체는 마치 위에서 아래로 실행하는 것처럼 한 줄씩 읽습니다. 예를 들어 다음 단어를 찾으면 출구, 그런 다음 중지하고 더 이상 아무것도 읽지 않고 이 단어 이전에 찾은 내용을 실행합니다. 예를 들어 인쇄"엄청난!"인쇄됩니다. 훌륭해요!

인쇄"엄청난!";
출구 ;
?>

이것은 가장 간단한 PHP 파일이지만 실제로는 복잡한 PHP 파일을 다루어야 합니다. 사이트에는 많은 페이지가 있습니다. 현재 페이지 수는 24,000개이므로 동일한 수의 PHP 파일을 작성하거나 HTML 파일만 작성해야 합니다. 그러나 PHP를 사용하면 이 모든 작업을 하나의 실행 파일로 수행할 수 있습니다. 즉, 이 파일 자체의 링크를 이렇게 하면 저렇게 하고, 저렇게 하면 저렇게 구성해야 합니다. Php를 사용하면 링크를 매우 잘 구성할 수 있습니다. 일반적인 계획은 다음과 같습니다.

스크립트에서 다음과 같은 구획을 볼 수 있습니다.
만약 (그러면)
그럼 우리가 하자
}

그렇다면 첫 번째 조건이 충족되면 어떻게 될까요? $uslovie 1== "yes"이면 스크립트의 이 섹션과 관련된 대괄호( ) 안의 스크립트를 실행합니다. 그런 다음 이 섹션에는 다음이 있습니다. 출구- 여기서 프로그램이 종료됩니다. 즉, 구획을 사용하여 PHP 파일을 구성 요소 부분으로 나눌 수 있습니다. 그리고 조건은 무엇입니까 - if($uslovie == "예")??? 이 네트워크는 동일한 링크입니다. 이 경우 변수가 다음과 같은 경우 무언가가 실행됩니다. $uslovie평등할 것이다 .

파일 이름을 지정해보자 all.php. 명령줄에서 링크를 구성하려면 간단히 추가하세요. all.php?uslovie=예. 명령줄에 물음표가 표시되면 이 경우의 링크는 다음과 같습니다. $uslovie == "예". 그런 다음 실행 가능한 스크립트에 대한 링크를 작성할 html 파일을 만듭니다.



새 페이지


우슬로비1=예" >첫 번째 링크
우슬로비2=예" >두 번째 링크

두 개의 링크가 보입니다. 링크를 클릭하면 파일이 실행됩니다. all.php, 첫 번째 경우 스크립트는 변수가 $uslovie 1==예, 그리고 두 번째 경우에는 $uslovie 2==예. 첫 번째 링크부터 첫 번째 칸이 완성됩니다그러면 프로그램이 중지됩니다. 두 번째 링크를 사용하면 프로그램이 첫 번째 구획을 통해 실행되고 두 번째 구획의 무언가가 성취될 것입니다(위 참조). 달러 기호는 링크에 기록되지 않으며 프로그램은 링크를 스크립트에 전달할 때, 즉 명령줄에 전달할 때 변수를 만듭니다.

이제 우리는 PHP 파일에 대한 링크를 구성하는 방법, 이를 섹션으로 나누는 방법, 파일에 대한 html 텍스트의 링크를 구성하는 방법을 알았습니다. 하지만 한 가지가 더 있습니다... 사실 사이트를 이런 방식으로 구성하면 원래 형식으로 링크가 많지 않으면 문제가 발생하지 않습니다. 10개의 구획이 있다고 가정하면 모두 하나의 파일에 조용히 들어갈 것입니다. 그러나 링크가 많으면(예: 24,000페이지) 원칙적으로 모든 섹션을 하나의 PHP 파일에 넣는 것은 불가능합니다. 예를 들어 변경 등을 위해 하나의 파일에서 이 구획이나 저 구획을 검색하면 자신이 고문을 당할 것입니다. 또한 파일 크기가 매우 커서 all.php가 1MB를 차지합니다. 또한 한 가지 더 이해해야 할 점은 많은 서버에서 실행 파일 크기에 제한이 있으며(예: 50Kb) 이를 초과하면 해당 파일이 무시되고 실행되지 않는다는 것입니다. 이러한 계산과 관련하여 실행 로드는 1MB이지만 기본 파일의 크기를 8Kb로 줄였습니다. 어떻게 해야 하나요? PHP는 다음 명령을 사용하여 PHP 파일을 조각으로 분할할 수 있는 훌륭한 기회를 제공합니다. 포함됨....

이제 포함된 다른 모든 파일의 총 크기가 1MB이기 때문에 기본 파일을 8Kb로 줄인 방법이 분명해졌으며, 이를 별도의 폴더에 숨기고 필요에 따라, 즉 명령의 링크에 따라 연결했습니다. 선. include 명령은 파일이 기본 스크립트에 작성된 것처럼 연결하므로 삽입된 파일에서 데이터베이스나 html 파일에 액세스하는 경우 계산은 기본 파일에서 정확하게 수행되어야 합니다. all.php. 예를 들어 폴더가 있습니다. HTML, 파일이 포함되어 있습니다 one.htm인쇄하는 방법. 그러면 one.php 파일은 다음과 같습니다.

포함하다"html/one.htm";
인쇄
출구 ;
?>

내용을 인쇄해봤습니다 one.htm, 플러스 인쇄 이것은 프로그램의 첫 번째 섹션입니다., 프로그램을 중지했습니다. 즉, HTML 이론에 따르면 파일을 포함해야 합니다. one.htm그래서: "../html/one.htm"을 포함합니다., 폴더 이후 HTML파일보다 한 수준 위에 위치 one.php. 그러나 PHP에서는 그렇지 않습니다. include 명령은 단순히 스크립트에 코드를 추가하고 스크립트의 필수 부분이 됩니다. 즉, 모든 링크는 포함된 파일이 아닌 기본 파일을 기준으로 계산됩니다.



새 페이지


우슬로비1=예" >첫 번째 링크
우슬로비1=예& 행동=예" >
우슬로비2=예" >두 번째 링크
우슬로비2=예& 행동=yes" >두 번째 링크이지만 act=yes이기도 합니다.

그런 다음 PHP 파일 one.php이를 다음과 같이 변환합니다.

만약에($act == "예")(
포함하다"html/one.htm";
출구 ;
}
인쇄"이것은 프로그램의 첫 번째 섹션입니다.";
출구 ;
?>

uslovie1 링크를 클릭하셨다면=yes" >첫 번째 링크만 인쇄됩니다. 이것은 프로그램의 첫 번째 섹션입니다. uslovie1 링크를 클릭했다면=예& 행동=yes" >첫 번째 링크이고 act=yes이면 파일 내용이 인쇄됩니다. HTML/one.htm, 프로그램이 중지됩니다.

403KB

아카이브를 다운로드하세요. Php를 알 필요 없이 HTML만 알면 되는 방식으로 만들어졌습니다.

응.))

index.php의 복사본을 만들고 이름을 contact.php로 바꾼 다음 새 콘텐츠로 middle을 middle2로 변경하는 것이 더 쉬울 것입니다.

주전자 나는 작은 PHP입니다


아직도 이해가 안 돼요.
나는 웹사이트를 가지고 있습니다.
루트에 인덱스 파일이 있습니다. 예를 들어 다른 폴더에는 상단 중간 하단에 파일이 있습니다.

메뉴가 있습니다. 메뉴 항목을 클릭하면 다른 중간이 표시되기를 원합니다.

어떻게 하고, 어디에 넣어야 할까요???

답: 글쎄요, 어디든요. 매우 간단합니다. 메뉴 스크립트를 만드는 것입니다. menus.html


배열이 없는 것 $_GET ["uslovie"] ; 당신의 예는 나에게 적합하지 않습니다

답변: 서버에서 전역 변수에 대한 지원이 비활성화되어 있으면 모든 스크립트의 시작 부분에 해당 줄을 넣을 수 있습니다.

만약에 (isset($_GET )) ( 각각($_GET as $key =>$val ) ( $$key =$val ; ) )

그런 다음 $_GET [ "uslovie" ]를 사용하지 않고 스크립트를 사용할 수 있지만 $uslovie만 입력하면 됩니다.


당신이 가지고 있는 매우 흥미로운 자료입니다..
정보 주셔서 감사합니다.

답변:


오랫동안 PHP 웹사이트가 어떻게 만들어지는지 살펴보겠다고 약속했는데 왜 약속을 지키지 않았나요? 어쩌면 이 주제에 대한 기사를 쓸 수도 있습니다(그리고 MySQL도 사용한다면 모든 것이 괜찮을 것입니다).

답변:


아주 그렇습니다. 단지, too.htm 대신 two.htm이 필요할 것입니다.
필수는 아니지만 순서대로 유지하기 위해))

답변:


모든 연산자와 PHP 코드를 읽고 배울 수 있는 곳을 알려주세요. 예: 에코 , 포함하다 , 또 다른 , 만약에 , 인쇄 , 각각 , isset등등, 그것은 무엇을 의미하며 무엇을 제공합니까?

대답: Alexander, 저는 한 달 동안 휴가 중이었고 현재 전체 사이트의 새 버전을 완성하는 중입니다. 마치자마자 이것에 대한 작은 페이지를 만들겠습니다.


Mobilesfinks, 제가 PHP 4를 다시 설치하려고 준비하는 동안 PHP 5의 새 버전의 사이트가 이미 출시되었습니다. 문제가 없었고 모든 것이 잘 작동했습니다 %tashus%

답변:


안녕하세요!

각 페이지마다 창 상단의 TITLE을 변경하는 방법을 알려주십시오. 즉, " 새 페이지" ...

예를 들어, "1" 링크를 따라가면 창 이름은 "첫 번째 섹션. 수학"이어야 합니다. 즉, HTML 코드는 다음과 같아야 합니다. 첫 번째 섹션. 수학...
예를 들어 링크가 "2"인 경우 창 이름은 "두 번째 섹션 지리"여야 합니다. 즉, HTML 코드는 다음과 같아야 합니다. 두 번째 섹션. 지리학...

PHP를 사용하여 어떻게 변경할 수 있나요?

답: html.html


Denver용 PHP4를 설치해야 합니다. 설치 스크립트는 모든 변경을 자체적으로 수행합니다.
그런 다음 생성한 all.php 파일이 있는 폴더에
".htaccess"라는 파일에 한 줄을 추가합니다.
페이지: 1
현재 페이지: 1 총 메시지 수: 22

컴퓨터에 관한 책을 읽는 많은 독자들은 즉각적인 관심이 없는 모든 내용을 훑어보고 실제로 필요한 내용으로 넘어갑니다. 원하다알다. 개인적으로 그게 내가 하는 일이다. 그러나 여기에는 아무런 문제가 없습니다. 처음부터 끝까지 읽어야 하는 기술 서적은 거의 없습니다. 아니면 처음 8개 장을 건너뛰고 제목이 가장 흥미로웠기 때문에 이 장을 선택했을 수도 있습니다. 직장에서 다른 프로젝트가 진행 중일 때 세부 사항을 확인하는 데 시간을 낭비하고 싶은 사람이 누가 있을까요?

다행스럽게도 그렇게 서두르더라도 책의 두 번째 부분에 있는 내용을 제대로 익히는 데 방해가 되지는 않습니다. 이 부분에서는 PHP를 사용하여 사이트를 구축하고 웹과 상호 작용하는 방법을 다루고 있습니다. 이 장에서는 웹 페이지의 내용을 쉽게 수정하고 링크와 다양한 표준 기능을 사용하여 웹을 탐색하는 방법을 알아봅니다. 다음 장에서는 제시된 자료를 보완할 것입니다. HTML 형식에서 사용자와 상호 작용하는 방법을 자세히 검토합니다. 11장에서는 데이터베이스와의 인터페이스 구성을 설명합니다. 두 번째 부분의 나머지 장에서는 PHP 웹 프로그래밍의 중요하지 않은 측면을 논의합니다.

다만, 1부에서 다룬 내용은 기억해 두셔야 합니다. 꼭 필요한 PHP에 대한 일반적인 지식을 위해. 여러분이 이미 Part 1을 읽었다고 가정하므로 예제에서는 이전에 설명한 많은 개념을 사용할 것입니다. 따라서 책의 일부를 훑어보면 때때로 이전 장으로 돌아가서 따라잡아야 할 것입니다.

단순 링크

<а href = "date.php">

$link = "날짜.php";

인쇄하다 "<а href = \"$link\">오늘 날짜 보기
\N"

링크 코드에서 따옴표(") 앞에 백슬래시(\)가 있는 이유가 궁금할 것입니다. 사실 PHP에서 따옴표는 특수 문자이며 줄 구분 기호로 사용됩니다. 따라서 문자열에서 따옴표는 리터럴로 보호되어야 합니다. .

따옴표를 이스케이프 처리해야 하는 것이 귀찮다면 php.ini 파일에서 Magic_quotes_gpc 모드를 활성화하기만 하면 됩니다. 결과는 모두 아포스트로피, 따옴표, 백슬래시 및 널 문자입니다. 텍스트에서 자동으로 이스케이프됩니다!

주어진 예제를 전개해보자. 브라우저에 링크 목록을 빠르게 표시하려면 배열을 사용할 수 있습니다.

// 섹션 배열 생성

$contents - array("튜토리얼", "문서", "스크립트", "연락처");

// 반복하여 배열의 각 요소를 순차적으로 표시합니다.

for ($i = 0; $i< sizeof($contents; $i++)

인쇄하다 " ".$콘텐츠[$i]."
\N";

// - 마커 지점에 대한 특별 지정 endfor;

파일 구성요소(템플릿)

제가 가장 좋아하는 PHP 기능 중 하나를 살펴보았습니다. 템플릿(웹 프로그래밍과 관련)은 여러 페이지에서 사용할 웹 문서의 일부입니다. PHP 함수와 같은 템플릿을 사용하면 페이지 콘텐츠와 프로그램 코드를 불필요하게 복사/붙여넣는 일이 줄어듭니다. 사이트 규모가 커질수록 사이트 전체 수준에서 쉽고 빠르게 수정이 가능하기 때문에 템플릿의 중요성이 더욱 커집니다. 이 섹션에서는 간단한 템플릿을 사용할 때 열리는 몇 가지 가능성에 대해 설명합니다.

일반적으로 콘텐츠/코드의 공통 부분(예: 템플릿)은 별도의 파일에 저장됩니다. 웹 문서를 작성할 때 페이지의 적절한 위치에 이러한 파일을 "포함"하면 됩니다. PHP에는 이를 위한 두 가지 함수, 즉 include()와 require()가 있습니다.

include() 및 require()

PHP의 가장 뛰어난 측면 중 하나는 템플릿과 프로그래밍 라이브러리를 구축한 다음 이를 새 스크립트에 삽입하는 기능입니다. 라이브러리를 사용하면 여러 웹사이트에서 공통 기능을 사용하는 데 드는 시간과 노력을 절약할 수 있습니다. 독자

다른 언어(예: C, C++ 또는 Java)로 프로그래밍한 경험이 있고 함수 라이브러리의 개념과 기능 확장을 위한 프로그램에서의 사용에 익숙합니다.

스크립트에 하나 이상의 파일을 포함시키는 작업은 표준 PHP 함수 require() 및 include()를 사용하여 수행됩니다. 다음 섹션에서 볼 수 있듯이 이러한 각 기능은 특정 상황에 적용됩니다.

기능

PHP에는 PHP 스크립트에 파일을 포함시키는 네 가지 함수가 있습니다.

  • 포함하다();
  • include_once();
  • 필요하다();
  • require_once().

이름의 유사성에도 불구하고 이러한 기능은 서로 다른 문제를 해결합니다.

include() 함수는 파일 내용을 스크립트에 포함합니다. include() 함수 구문은 다음과 같습니다.

포함(파일 파일]

include() 함수에는 한 가지 흥미로운 기능이 있습니다. 즉 조건부로 실행될 수 있다는 것입니다. 예를 들어 if 명령 블록에 함수 호출이 포함된 경우입니다. 그런 다음 조건 i f가 참인 경우에만 파일이 프로그램에 포함됩니다. 조건부 명령에 includeO 함수를 사용하면 ~ 해야 하다중괄호나 대체 구분 기호로 묶어야 합니다. 목록 9.1과 9.2의 구문 차이점을 비교해보세요.

목록 9.1. include()의 잘못된 사용

if (some_conditional)

include("text91a.txt"); 또 다른

include("text91b.txt");

목록 9.2. include()의 올바른 사용

if (some_conditional) :

include("text91a.txt");

include("text91b.txt");

포함 파일의 모든 PHP 코드 반드시 PHP 태그에 있습니다. 단순히 PHP 명령을 파일에 저장한다고 해서 해당 명령이 올바르게 처리될 것이라고 가정하지 마십시오.

대신 다음 예제와 같이 적절한 태그로 명령을 래핑해야 합니다.

"이것은 잘못된 포함 파일입니다"를 인쇄합니다.

include_once() 함수는 한 가지 예외를 제외하고는 include()와 동일한 작업을 수행합니다. 즉, 프로그램에 파일을 포함하기 전에 해당 파일이 이미 포함되었는지 확인합니다. 파일이 이미 포함되어 있으면 include_once() 호출은 무시되고, 그렇지 않으면 표준 파일 포함이 발생합니다. 다른 모든 측면에서 include_once()는 include()와 다르지 않습니다. include_once() 함수 구문은 다음과 같습니다.

include_once(파일파일)

일반적으로 require() 함수는 include()와 유사합니다. 또한 require() 호출이 있는 파일에 템플릿도 포함합니다. require() 함수 구문은 다음과 같습니다.

필요 (파일 파일)

그러나 require()와 include() 함수 사이에는 한 가지 중요한 차이점이 있습니다. require()로 지정한 파일은 스크립트 내 require() 위치와 상관없이 스크립트에 포함됩니다. 예를 들어, if 블록에서 requi re()를 호출하는 경우 조건이 false이면 파일은 여전히 ​​스크립트에 포함됩니다!

많은 상황에서는 사이트 전체에서 사용되는 변수 및 기타 정보가 포함된 파일을 만든 다음 필요에 따라 포함하는 것이 편리합니다. 이 파일의 이름은 임의적이지만 일반적으로 init.tpl("initializaion.template"의 약자)이라고 부릅니다. 목록 9.3은 매우 간단한 init.tpl 파일의 모습을 보여줍니다. 목록 9.4에서는 init.tpl의 내용이 require()를 사용하여 스크립트에 포함되어 있습니다.

목록 9.3. 초기화 파일의 예

$site_title = "PHP 레시피";!}

$contact_email = " [이메일 보호됨]";

$contact_name = "WJ 길모어";

목록 9.4. init.tpl 파일 사용

<? print $site_title; ?>

\"mai1 받는 사람:$contact_email\">$contact_name."; ?>

require()를 호출할 때 URL을 전달하는 것은 "URL fopen 래퍼" 모드가 활성화된 경우에만 허용됩니다(이 모드는 기본적으로 활성화되어 있습니다).

사이트의 크기가 커지면 일부 파일이 스크립트에 여러 번 포함되는 경우가 있습니다. 이로 인해 문제가 발생하지 않는 경우도 있지만, 파일을 다시 포함하면 변경된 변수의 값이 재설정되는 경우가 있습니다. 포함 파일이 함수를 정의하는 경우 이름 지정 충돌이 발생할 수 있습니다. 그러면 다음 함수인 require_once()로 넘어갑니다.

require_once() 함수는 파일이 스크립트에 한 번만 포함되도록 보장합니다. requi re_once()가 호출되면 동일한 파일을 포함하려는 모든 추가 시도가 무시됩니다. require_once() 함수의 구문은 다음과 같습니다.

웹 애플리케이션의 크기가 커지기 시작하면 파일 포함 기능을 더 자주 사용하게 될 것입니다. 이러한 함수는 코드 중복을 줄이기 위해 이 책의 예제에 자주 등장합니다. 첫 번째 예는 기본 템플릿 구성 원칙에 대한 다음 섹션에서 논의됩니다.

건물 구성 요소

저는 일반적인 웹페이지의 구조를 정의할 때 보통 머리글, 본문, 바닥글의 세 부분으로 나눕니다. 일반적으로 적절하게 구성된 대부분의 웹사이트에는 사실상 변경되지 않은 헤더가 있습니다. 주요 부분은 사이트에서 요청한 콘텐츠를 표시하므로 자주 변경됩니다. 마지막으로 바닥글에는 저작권 정보와 탐색 링크가 포함되어 있습니다. 머리글과 마찬가지로 바닥글도 일반적으로 변경되지 않습니다. 오해하지 마세요. 저는 여러분의 창의적인 열망을 억누르려는 것이 아닙니다. 나는 이러한 원칙을 따르지 않는 훌륭한 웹사이트를 많이 보았습니다. 나는 단지 추가 작업을 위한 출발점이 될 수 있는 일반적인 구조를 생각해내려고 노력하고 있을 뿐입니다.

표제

헤더 파일(목록 9.5의 파일과 같은)은 PHP를 사용하는 거의 모든 웹사이트에 나타납니다. 이 파일에는 다음이 포함되어 있습니다.

제목, 연락처 정보 및 일부 HTML 페이지 코드 구성 요소와 같은 사이트 전체 정보.

목록 9.5. 예시 헤더 파일

// 파일: header.tpl

// 목적: PhpRecipes 웹사이트의 헤더 파일입니다.

$site_name = "PHPRescipes";

$site_email= " [이메일 보호됨]";

$site_path = "http://localhost/phprecipes";

<? print $site_name; ?>

// 현재 날짜와 시간을 출력

print date("F d, h:i a");

포함된 파일에 대한 방문자의 액세스가 제한되는 경우가 많습니다. 특히 해당 파일에 민감한 정보(예: 비밀번호)가 포함되어 있는 경우 더욱 그렇습니다. Apache에서는 http.conf 또는 htaccess 파일을 편집하여 특정 파일이 표시되지 않도록 할 수 있습니다. 다음 예에서는 확장명이 .tpl인 모든 파일을 보지 못하게 하는 방법을 보여줍니다.

주문 허용, 거부

127.0.0.1에서 허용

PHP와 웹사이트 보안 문제는 16장에서 자세히 다룹니다.

소제목

바닥글은 일반적으로 사이트 페이지 하단에 있는 정보(연락처 정보, 링크, 저작권 정보)입니다. 이 정보는 별도의 파일에 배치할 수 있으며 헤더와 동일한 방식으로 템플릿으로 포함될 수 있습니다. 새해가 시작되면서 저작권 정보를 변경하고 이를 "Copyright © 2000-2001" 형식으로 가져와야 한다고 가정해 보겠습니다. 두 가지 옵션이 있습니다. 크리스마스 이브에 수백 개의 정적 페이지를 정신없이 편집하면서 보내세요. 또는목록 9.6에 표시된 것과 같은 템플릿을 사용하십시오. 간단한 변화 하나만으로 휴가 일상으로 돌아갈 수 있습니다.

목록 9.6.바닥글 파일 예시(footer.tpl)

연락하다 |

귀하의 개인 정보

바닥글 파일에서 $site_email 전역 변수 사용에 유의하세요. 이 변수의 값은 페이지 전체에 적용되며 header.tpl 및 footer.tpl 파일이 하나의 최종 페이지에 포함된다고 가정합니다. 또한 개인 정보 링크에 $site_path가 있는지 확인하세요. 나는 항상 내 템플릿에 모든 링크의 전체 경로를 포함합니다. 링크 URL이 단지 Privacy.php라면 바닥글 파일은 특정 디렉토리에 하드코딩됩니다.

주요 부분

페이지의 주요 부분에는 머리글과 바닥글의 내용이 포함되어 있습니다. 본질적으로 사이트 방문자의 관심을 끄는 정보가 포함된 주요 부분입니다. 머리글은 인상적으로 보이고 바닥글에는 유용한 정보가 포함되어 있지만 사용자가 사이트를 계속해서 방문하는 것은 페이지의 주요 부분입니다. 특정 페이지 구조에 대한 조언을 제공할 수는 없지만 목록 9.7에 있는 것과 같은 템플릿은 페이지 관리를 크게 단순화합니다.

목록 9.7. 페이지 주요 부분의 예(index_body.tpl)

/tutorials.php">튜토리얼

기사

스크립트

연락처

PHPRecipes에 오신 것을 환영합니다. PHP 스크립트, 튜토리얼,

그리고 미식 요리에 대한 정보까지!

모두 함께: 머리글, 바닥글, 본문

아마도 내 기분은 유명한 TV 시리즈 "The A-Team"의 "Hannibal" Smith 대령(George Peppard)의 대사로 가장 잘 요약될 수 있습니다. 서로 다른 템플릿이 함께 모여 완전한 웹 문서를 형성하는 것과 비슷한 현상을 경험하고 있습니다. 세 개의 문서 섹션(header.tpl, index_body.tpl 및 footer.tpl)을 결합하면 목록 9.8에 표시된 것과 같은 간단한 페이지를 빠르게 빌드할 수 있습니다.

목록 9.8. 여러 파일을 포함하여 index.php 페이지 구축

// 파일: index.php

// 대상: PHPRecipes 홈페이지

// 제목 인쇄

include("header.tpl");

// 주요 부분 출력

include("index_body.tpl");

// 바닥글 표시

include("footer.tpl");

그래서 방법? 세 가지 간단한 명령을 내리면 페이지가 완성됩니다. 마지막 페이지의 텍스트는 목록 9.9에 나와 있습니다.

목록 9.9. 목록 9.8에 내장된 HTML 페이지(index.php)

PHP레시피

8월 23일 오후 03:17

튜토리얼

조항

스크립트

연락하다

PHP 스크립트, 튜토리얼의 시작점인 PHPRecipes에 오신 것을 환영합니다.

그리고 미식가 요리 팁과 요리법!

저작권 2000 PHPRecipes. 판권 소유.

연락하다 |

귀하의 개인 정보 보호

그림에서. 그림 9.1은 결과 페이지가 브라우저에 어떻게 나타나는지 보여줍니다. 평소에는 표 테두리를 사용하지 않지만, 이번에는 그림에서 페이지의 세 부분이 더 명확하게 돋보이도록 테두리를 그렸습니다.

쌀. 9.1. 목록 9.8에 구축된 페이지의 모습

템플릿 최적화

두 번째(내 의견으로는 더 바람직함) 옵션에서는 템플릿이 별도의 파일에 있는 기능으로 설계되었습니다. 이는 템플릿에 추가 구조를 제공합니다. 나는 이 파일을 초기화 파일이라고 부르고 그 안에 다른 유용한 정보를 저장합니다. 비교적 긴 머리글과 바닥글 예제를 이미 살펴보았으므로 목록 9.10과 9.11은 새로운 아이디어를 설명하기 위해 약간 단축되었습니다.

목록 9.10. 최적화된 사이트 템플릿(site_init.tpl)

// 파일: site_init.tpl

// 목적: PhpRecipes 초기화 파일

$site_name = "PHPRescipes";

$site_email = " [이메일 보호됨]";

$site_path = "http://localhost/phprecipes/";

함수 show_header($site_name) (

<? print $site_name: ?>

헤더입니다

함수 표시 바닥글()

이것은 바닥글입니다

목록 9.11. 초기화 파일 사용

// 초기화 파일 포함

include("site_init.tpl");

// 제목 인쇄

헤더 표시($site_name);

// 본문 내용 이것은 신체 정보입니다.

// 바닥글 표시 Show_footer();

프로젝트: 페이지 생성기

내가 만든 대부분의 웹 사이트는 데이터베이스에서 읽은 정보를 기반으로 기본 페이지 콘텐츠를 생성했지만 거의 변경되지 않은 페이지도 항상 몇 개 있습니다. 특히 개발팀에 대한 정보, 연락처 정보, 광고 등에 대한 정보를 표시할 수 있습니다. 저는 보통 이 "정적" 정보를 별도의 폴더에 저장하고 요청이 들어올 때 PHP 스크립트를 사용하여 로드합니다. 물론 질문이 있습니다. 이것이 정적 정보라면 PHP 스크립트는 무엇을 위한 것입니까? 일반 HTML 페이지를 로드하지 않는 이유는 무엇입니까? PHP의 장점은 템플릿을 사용하고 필요에 따라 정적 코드 조각을 삽입할 수 있다는 것입니다.

<а href = "/static.php?content=$content">정적 페이지 이름

정적 페이지를 만드는 것부터 시작해 보겠습니다. 단순화를 위해 사이트 정보(목록 9.12), 광고(목록 9.13) 및 연락처 정보(목록 9.14)가 포함된 세 페이지로 제한하겠습니다.

목록 9.12. 사이트에 대한 정보(about.html)

PHPRecipes 정보

프로그래머가 밤샘 프로그래밍과 맛있는 쿠키를 섞지 않는 이유는 여기 PHPRecipes에서입니다. 우리 코더 중 한 명이 맛있는 포토벨로 버섯이나 퐁듀 한 접시와 약간의 HTML을 섞지 않고는 거의 밤이 지날 수 없습니다. 그래서 우리는 여러분에게 이 음식을 제공하기로 결정했습니다. 우리가 가장 사랑하는 것 중 최고는 바로 PHP와 음식입니다!

맞습니다, 독자 여러분 튜토리얼, 스크립트, 수플레 등. 0만 PHPRecipes에서.

광고정보

최신 PHP 기술을 배우러 오든, PHP 기술을 배우러 오든 상관없이

닭고기를 굽는다면 우리 독자들이 의사 결정권자일 것입니다. 그들은 산업이다

회사에서 구매하는 제품에 대한 결정을 내리는 전문가입니다.

광고정보를 원하시면 연락주세요

">[이메일 보호됨].

목록 9.14. 연락처 세부정보(contact.html)

문의하기

코딩 팁이 있나요?

설탕에 절인 참마의 완벽한 토핑을 알고 계십니까?

우리에게 알려주세요! 팀에 문의하세요. [이메일 보호됨].

요청된 정적 정보를 표시하는 static.php 페이지 구축으로 넘어가겠습니다. 이 파일(목록 9.15 참조)에는 사이트의 페이지 구성 요소와 초기화 파일 site_init.tpl이 포함되어 있습니다.

목록 9.15. 정적 페이지의 일반 출력(static.php)

// 파일: static.php

// 목적: 요청된 정적 페이지를 표시합니다.

// 경고: 이는 파일이 "site_init.tpl"이고 그게 전부라고 가정합니다.

// 정적 파일은 같은 디렉터리에 있습니다.

// 함수 및 변수 로드 include("site_init.tpl"):

// 헤더 표시 show_header($site_name);

// 요청된 콘텐츠를 출력합니다. include("$content.html"):

// 바닥글 표시 show footer();

이제 메인 시나리오를 구축하기 위한 모든 준비가 완료되었습니다. 페이지에 포함시키면 됩니다

<а href = "static.php?content=about">정적 페이지 이름

광고정보

문의하기

이 링크 중 하나를 클릭하면 브라우저가 static.php에 포함된 해당 정적 페이지를 로드합니다!

결과

이 장에서 여러분은 PHP가 생성된 기본 작업인 웹 페이지를 동적으로 구축하는 작업에 대해 알게 되었습니다. 다음과 같은 문제가 고려되었습니다.

  • URL 처리;
  • 동적 콘텐츠 구축;
  • 기본 템플릿의 포함 및 구성.

이 장은 정적 페이지를 템플릿에 로드하고 많은 수의 정적 HTML 페이지를 쉽게 지원할 수 있게 해주는 프로그램인 페이지 생성기로 끝납니다.

다음 장에서는 사이트의 상호작용성을 크게 향상시키기 위해 HTML 양식과 함께 PHP를 사용하는 방법에 중점을 둡니다. 그리고 데이터베이스와의 상호작용! 당신은 배울 흥미로운 것들이 많이 있습니다.


무료 프로그램과 유용한 팁의 세계
2024 whatsappss.ru