이전 버전의 IE에서 입력 작업에 필요한 속성을 만드는 방법은 무엇입니까? 클래스에서 파일을 요구할 때 Require_once가 제대로 작동하지 않습니다. 한 번 필요가 작동하지 않습니다.




모든 웹 개발자에게 현재 제품의 완전한 브라우저 간 호환성보다 더 심각한 문제는 없습니다. 이것은 아마도 훌륭한 전문가의 주요 임무 중 하나일 것입니다. 즉, 자신의 웹사이트가 모든 브라우저에서 항상 올바르게 표시되도록 하는 것입니다.

때때로 입력에 사용되는 필수 매개변수는 고대 IE에서는 작동하지 않으며, 단순히 그렇게 놔둘 수는 없습니다. 아직 IE6를 사용하고 있는 은퇴 사용자는 최신 버전의 Google Chrome 사용자와 마찬가지로 사이트를 쉽게 사용할 수 있습니다. 웹 개발자 외에 누가 이를 관리할 수 있습니까?

아픈 점, Internet Explorer에 대해

Firefox, Opera 및 Google Chrome을 포함한 일반 브라우저의 경우 이 작업은 비교적 쉽습니다. 물론 일부 새로운 기술이 사용되지 않는 한 이러한 브라우저의 이전 버전에서도 HTML 코드가 똑같이 잘 표시됩니다. 그러나 Internet Explorer 제품군의 브라우저에서 이를 달성하려면 엄청난 노력이 필요합니다.

Internet Explorer 브라우저의 각 버전에는 고유한 어리석음이 있습니다. IE6에서는 작동하는 것이 IE7에서는 제대로 작동하지 않을 수 있으며 그 반대의 경우도 마찬가지입니다. 마이크로소프트는 최신 버전의 브라우저에서도 이 동물원을 극복할 수 없었다.

브라우저 개발자가 웹 사이트 구축에 대한 W3C 표준을 열어서 읽을 수 없는 이유를 이해할 수 없습니다.

따라서 웹 개발자로서 나는 변덕스러운 브라우저와 지식과 볼거리를 요구하는 사이트 방문자 사이에서 일종의 '레이어' 역할을 해야 합니다. 그리고 지금까지 웹 개발자들이 이 일을 해냈다는 것은 대단한 일입니다.

그렇다면 이전 버전의 IE에서 작업하도록 요구받으려면 어떻게 해야 합니까?

JS가 우리를 도와줍니다. 이전에는 참을 수 없었지만 이제는 "올바른"웹의 범위에서 그것 없이는 더 이상의 길을 볼 수 없습니다.

나는 아래에 제시된 해결책을 직접 고안한 것이 아니라 부르주아 블로그에서 가져왔습니다. 욕심이 많고 블로그가 부르주아 블로그이므로 링크를 제공하지 않겠습니다.

fnCheckFields() 함수는 모든 것을 담당합니다. 사이트에 JS 코드를 배치하세요.

function fnCheckFields(form_obj)( var error_msg = "모든 필수 필드를 작성하십시오."; var is_error = false; for (var i = 0; form_obj_elem = form_obj.elements[i]; i++) if (form_obj_elem.type "input" || form_obj_elem.type "text") if (form_obj_elem.getAttribute("required") && !form_obj_elem.value) is_error = true if (is_error) 경고(error_msg);

일반적으로 페이지 시작 부분의 HEAD html 태그 사이에 배치하는 것이 좋지만, 여전히 페이지 맨 아래에서 닫는 BODY 태그 앞에 배치하는 것이 좋습니다. 이렇게 하면 JS가 페이지 로딩 속도에 미치는 영향이 줄어듭니다.

필수 매개변수를 입력해야 하는 입력 창은 html에서 다음과 같아야 합니다.

이 스크립트는 매우 간단하게 작동합니다. 제출 버튼을 클릭한 후 스크립트는 모든 입력에 필수 매개변수가 있는지 확인하고, 찾은 경우 그에 따라 이 필드에 입력된 값을 확인합니다. 해당 입력 사항에 아무것도 입력하지 않은 경우 입력이 필요하다는 경고 창이 표시됩니다. 따라서 데이터는 어디로도 전송되지 않습니다.

또한 이 매개변수를 예상대로 이해하는 방법을 이미 학습한 일반 브라우저가 있는 경우 이러한 경고 창이 나타나지 않고 브라우저에 필요한 매개변수를 처리하기 위한 표준 도구가 작동한다는 점도 좋습니다.

소셜 미디어에 공유 네트워크

PHP의 가장 재미있고 유용한 기능 중 하나는 다른 파일을 포함하는 것입니다. 예를 들어, 웹사이트에는 상단 메뉴, 하단 메뉴, 그리고 그 사이에 페이지 콘텐츠 자체가 있습니다. 예를 들어 사이트의 10페이지에서는 하단 메뉴가 사용됩니다. 어느 시점에서는 변경이 필요했습니다. html에서는 각 개별 파일을 수동으로 변경해야 하지만 php를 사용하면 사이트 작업을 크게 단순화할 수 있습니다! 하단 메뉴의 코드는 별도의 파일에 포함될 수 있으며, 10페이지 각각에 이 별도의 파일을 간단히 포함할 수 있습니다! 즉, 이제 모든 변경 사항은 메뉴가 있는 파일에만 적용되어야 하며, 다른 10개에서는 변경 사항이 표시됩니다.

간단한 러시아어로 된 PHP 연결의 의미:

파일 1.php
상위 메뉴

파일 2.php
하단 메뉴

example.php 파일
파일 1.php 연결
페이지 콘텐츠
파일 2.php 연결

example.php 파일을 처리한 결과 아래와 같이 표시됩니다.
상위 메뉴
페이지 콘텐츠
하단 메뉴
따라서 하단 메뉴에서 무엇이든 변경하려면 2.php 파일에서만 변경하면 됩니다.

파일 경로 파일에 지정된 경로에 따라 파일이 연결됩니다. 상대 경로와 절대 경로의 두 가지 경로 옵션이 있습니다. 상대 - 연결 지침이 포함된 파일을 기준으로 연결된 파일의 경로를 나타냅니다. 절대 - 포함된 파일의 전체 경로를 지정합니다.

PHP 코드

// 상대 경로의 예
"include/your_file.php"를 포함하십시오; // 파일은 연결 파일과 동일한 디렉터리에 있는 include 폴더에 있습니다.

// 절대 경로의 예
$_SERVER["DOCUMENT_ROOT"]."/include/your_file.php"; // $_SERVER["DOCUMENT_ROOT"] - 사이트의 루트 디렉터리를 나타냅니다.

include 및 include_onceinclude()는 PHP 스크립트 실행 중에 PHP 스크립트 코드에 파일을 포함하도록 설계된 구성입니다. 코드를 처리할 때 해당 명령은 첨부된 파일의 내용으로 대체됩니다. 지금 바로 예를 살펴보는 것이 좋습니다.

두 개의 파일을 예로 들어 index.php 및 text.php 를 사용하여 include가 어떻게 작동하는지 살펴보겠습니다. 작업의 단순화를 위해 동일한 디렉토리에 있다고 가정하겠습니다.

PHP 코드(index.php 파일)

Echo "메인 파일에 포함된 일반 텍스트";
"text.php"를 포함하십시오; // text.php 파일의 내용을 포함합니다.

?>
PHP 코드(text.php 파일)

Echo "포함된 파일에 포함된 텍스트";

?>
index.php 파일을 실행한 결과는 다음과 같습니다.

기본 파일에 포함된 일반 텍스트
포함된 파일에 포함된 텍스트
정말 편리합니까? 이제 text.php 파일의 내용을 변경하면 index.php의 결과가 완전히 달라집니다!

이제 또 다른 구성인 include_once에 대해 이야기해 보겠습니다. 이는 포함과 정확히 동일하게 작동하며 나중에 파일을 다시 포함할 수 없는 경우에만 생성됩니다. 예를 들어, 오류로 인해 파일을 두 번 이상 연결할 수 있으며, 이로 인해 페이지가 제대로 작동하지 않고 해당 오류 메시지가 표시될 수 있습니다.

PHP 코드

include_once "text.php"; // text.php 파일은 한 번만 포함됩니다.

// 아래의 재연결은 고려되지 않고 표시됩니다.
// 오류 메시지가 표시되지 않습니다.
include_once "text.php"; // 아무것도 안 일어날거야

require 및 require_once require 및 require_once 명령은 하나의 기능만 제외하고 include 및 include_once와 동일하게 작동합니다. 포함된 파일을 찾을 수 없으면 스크립트 실행이 중지되고(스크립트는 더 이상 읽혀지지 않습니다), include 및 include_once는 단순히 경고를 인쇄하고 추가 스크립트 실행을 계속합니다. include 또는 require가 작동하지 않는 경우 include가 작동하지 않는 이유를 이해하려면 모든 것을 단계별로 확인하는 것이 좋습니다. 아래 사항이 아무리 명확하고 피상적이라 할지라도 처음부터 모든 것을 확인하십시오.

1. 서버와 PHP가 작동하는지 확인하고 사이트의 PHP 코드가 전혀 작동하는지 확인하세요.
2. 포함 파일이 있는지 확인하십시오.
3. 연결 시 파일명과 확장자가 올바르게 입력되었는지 확인하세요.
4. 포함된 PHP 파일이 실제로 지정한 주소에 있는지 확인하세요.
5. 상대 경로가 아닌 절대 경로(파일의 전체 경로)를 지정해 보십시오.

PHP 코드 예

"http://www.example.com/include/your_file.php"를 포함합니다.

// DOCUMENT_ROOT - 리소스의 루트 디렉터리를 나타냅니다.
$_SERVER["DOCUMENT_ROOT"]."/include/your_file.php";

6. 파일이 연결되지 않고 오류가 표시되지 않으면 연결 중인 파일이 있는 디렉터리에 다음 내용으로 .htaccess 파일을 만듭니다.

Php_flag display_errors 켜짐
또는 PHP 파일에서 연결하기 전에 다음 줄을 삽입하십시오.

Error_reporting(E_ALL);
두 설정 모두 강제로 오류가 표시됩니다.

관심을 가져주셔서 감사합니다!

0

저는 작은 PHP MVC 프레임워크를 구축 중이며 여기에 제 구조가 있습니다.

/app /controllers /models /views /templates /config /config.php /core /Controller.php /Router.php /init.php /index.php

폴더 전면 컨트롤러인 index.php 내부에 init.php /app/core/init.php에서 요구하는 이 코드가 있습니다.

앱/코어/init.php

init.php에는 Controller.php 및 router.php를 포함하여 /core 디렉토리의 모든 기본 컨트롤러와 클래스가 필요하며 여기에서 index.php도 클래스를 인스턴스화합니다.

현재 모든 것이 잘 작동하고 있습니다. Controller.php와 router.php 모두에 생성자를 생성하여 테스트했기 때문에 이 두 파일의 코드는 다음과 같습니다.

앱/코어/controller.php

애플리케이션/커널/라우터. PHP

index.php 내부에서는 OK가 울립니다! 클래스는 올바르게 생성되었지만 문제는 /app/core/Controller.php에 있는 Controller.php에서 /app/config/config.php에 있는 config.php를 이 코드와 함께 포함하려고 할 때입니다.

이 작업을 수행할 때마다 이 오류가 반환됩니다.

Controller::include(../config/config.php): 스트림을 열지 못했습니다. 6행의 C:\AppServ\www\myapp\app\core\Controller.php에 해당 파일이나 디렉터리가 없습니다.

Controller::include(): C:\AppServ\www\myapp\app\core\Controller에 포함하기 위해 "../config/config.php"(include_path=".;C:\php5\pear")를 열지 못했습니다. 6번째 줄의 .php

올바른 위치를 사용한 것 같습니다. /app/core/Controller.php로 작업 중이고 개미에는 /app/config/config.php가 필요합니다. ../를 사용하여 한 디렉토리로 돌아갑니다.

그렇다면 왜 파일에 대한 소유권을 주장할 수 없나요?

  • 답변 3개
  • 정렬:

    활동

2

내 개인적인 경험에 따르면 상대 파일 경로를 사용하면 어느 시점에서 두통이 발생할 수 있습니다. 그래서 저는 보통 파일의 전체 경로를 사용합니다. 이것의 장점은 약간 더 빠르다는 것입니다. 그러면 어느 시점에 포함 오류가 발생하는 경우 전체 경로를 사용할 수 있으므로 오류를 찾는 것이 더 쉽습니다.

절대 경로를 수행하려면 index.php(frontcontroller) 파일에 상수를 추가하는 것이 좋습니다. 다음과 같은 것 :

Define("ROOT_PATH", realpath(dirname(__FILE__)) .DIRECTORY_SEPARATOR);

index.php 파일이 있는 디렉토리, 즉 루트 디렉토리를 참조하는 ROOT_PATH라는 상수를 정의합니다. 동시에 경로를 작성하기 쉽도록 끝에 디렉터리 구분 기호를 추가했습니다.

Require_once ROOT_PATH . "config/config.php";

보너스 정보

그러나 Controller.php 클래스에서 이 접근 방식을 사용하면 이 상수에 의존하게 됩니다. 이 문제를 해결하려면 생성자에서 루트 경로를 변수로 전달할 수 있습니다.

공용 함수 __construct($root) (...

그런 다음 다음과 같이 사용하십시오.

공용 함수 __construct($root) ( require_once($root . "config/config.php"); )

도움이 되었기를 바랍니다.

0

무슨 일이 일어나고 있는지 모르겠지만 require_once()는 서로 다른 기능이기 때문에 자신을 include()로 참조할 때 오류를 발생시키지 않았습니다. 또한 이것이 전체 코드인 경우 오류 줄 번호는 귀하의 것과 동일하지 않습니다. require_once() 라인은 4여야 합니다. 웹 서버를 다시 시작하고 문제가 해결되는지 확인하십시오. 그렇지 않으면 아마도 뭔가 농담을 하고 있을 것입니다.