클라이언트 측 프로그래밍과 서버 측 프로그래밍의 차이점은 무엇입니까?
코드는 다음과 같습니다.
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
텍스트 파일에 "막대"가 표시되지 않고 "42" 경보가 표시되는 이유는 무엇입니까?
NB: 이 질문의 이전 리비전은 서버의 PHP와 클라이언트의 JavaScript에 관한 것이었습니다.문제와 해결방법의 본질은 클라이언트 상에서 실행되고 있는 언어와 서버 상에서 실행되고 있는 언어(같은 언어라도) 쌍으로 동일합니다.특정 언어에 대한 답변이 있을 경우 참고하시기 바랍니다.
코드는 서버측과 클라이언트측의 2개의 완전히 다른 부분으로 분할됩니다.
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
양측은 HTTP 요구 및 응답을 통해 통신합니다.PHP는 서버에서 실행되며 HTML 및 자바스크립트가 실행되는 클라이언트에 대한 응답으로 전송되는 JavaScript 코드를 출력합니다.PHP가 응답 출력을 완료하면 스크립트는 종료되고 새로운 HTTP 요청이 수신될 때까지 서버에서 아무 일도 일어나지 않습니다.
예제 코드는 다음과 같이 실행됩니다.
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
는 1의 코드와 PHP의 코드 의 코드를 모두 합니다.<?php ?>
태그. 결과는 다음과 같습니다.
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
file_put_contents
콜은 아무 결과도 내지 않고 파일에 "+ foo + " 라고만 써넣었습니다.<?php echo 42; ?>
콜 결과, 출력 「42」가 되어, 현재는 그 코드가 있던 위치에 있습니다.
HTML/JavaScript를 사용합니다.alert
「」는 기능합니다.foo
변수는 어디에도 사용되지 않습니다.
클라이언트가 JavaScript 실행을 시작하기 전에 모든 PHP 코드가 서버에서 실행됩니다.JavaScript와 상호 작용할 수 있는 응답에 남아 있는 PHP 코드는 없습니다.
PHP 코드를 호출하려면 클라이언트는 서버에 새로운 HTTP 요청을 전송해야 합니다.이 문제는 다음 3가지 방법 중 하나를 사용하여 발생할 수 있습니다.
- 브라우저가 새 페이지를 로드하는 링크입니다.
- 폼 송신.서버에 데이터를 송신해, 새로운 페이지를 로드합니다.
- AJAX 요청은 현재 페이지를 벗어나지 않고 서버에 대한 정기적인 HTTP 요청을 만드는 Javascript 기술입니다(1. 및 2. will 등).
가 "JavaScript"를 사용하여 새 를 열 수.window.location
또는 폼을 제출하여 가능성 1.과 2를 모방합니다.
왜 PHP 코드가 JavaScript 코드에서 작동하지 않는지 확인하려면 클라이언트 측과 서버 측 언어가 무엇인지, 그리고 어떻게 작동하는지 알아야 합니다.
서버측 언어(PHP 등):데이터베이스에서 레코드를 가져오고 상태 비저장 HTTP 연결을 통해 상태를 유지하며 보안이 필요한 많은 작업을 수행합니다.이러한 프로그램은 서버에 상주하며 사용자에게 소스 코드가 노출되지 않습니다.
따라서 서버 측 언어가 HTTP 요청을 처리하고 처리하는 것을 쉽게 알 수 있습니다. @deceze가 말했듯이 PHP가 서버에서 실행되어 HTML을 출력합니다.또한 클라이언트에 대한 응답으로 전송되는 JavaScript 코드도 있습니다.여기서 HTML이 해석되고 JavaScript가 실행됩니다.
한편 클라이언트 사이드 언어(JavaScript 등)는 브라우저에 상주하며 브라우저에서 실행됩니다.클라이언트측 스크립팅은 일반적으로 서버측이 아닌 사용자의 웹브라우저에 의해 클라이언트측에서 실행되는 웹상의 컴퓨터 프로그램 클래스를 말합니다.
JavaScript는 사용자가 볼 수 있고 쉽게 수정할 수 있기 때문에 보안에 대해서는 JavaScript에 의존해서는 안 됩니다.
따라서 서버에서 HTTP 요청을 하면 서버는 먼저 PHP 파일을 주의 깊게 읽고 실행해야 할 태스크가 있는지 확인하고 클라이언트 측에 응답을 보냅니다.다시 @deceze가 말했듯이 *PHP가 응답을 출력하면 스크립트는 종료되고 새로운 HTTP 요청이 들어올 때까지 서버에서 아무 일도 일어나지 않습니다.*
그럼 PHP를 호출하려면 어떻게 해야 하나요?필요한 방법은 페이지를 새로고침하거나 AJAX 콜을 사용하는 방법에 따라 달라집니다.
- 페이지를 새로고침하여 HTTP 요청을 전송함으로써 이 작업을 수행할 수 있습니다.
- JavaScript를 사용하여 AJAX 콜을 발신할 수 있습니다.페이지를 새로고침할 필요가 없습니다.
올바른 읽기:
Javascript는 서버가 아닌 클라이언트에서 실행됩니다.즉,foo
는 서버측에서 평가되지 않기 때문에 그 값을 서버상의 파일에 쓸 수 없습니다.
이 프로세스에 대해 생각하는 가장 좋은 방법은 텍스트 파일을 동적으로 생성하는 것입니다.생성하는 텍스트는 브라우저가 해석한 후에만 실행 코드가 됩니다.그 사이에 배치하는 것만이<?php
태그는 서버에서 평가됩니다.
덧붙여서, HTML이나 Javascript에 임의의 PHP 로직을 짜넣는 습관을 들이면, 매우 복잡한 코드로 이어질 가능성이 있습니다.나는 고통스러운 경험에서 말한다.
웹 애플리케이션에서는 모든 작업이 요청 및 응답 방식으로 실행됩니다.
클라이언트 측 프로그래밍은 Java 스크립트와 그 프레임워크에 의한html 코드로 실행되며 라이브러리는 Internet Explorer, Mozilla, Chrome 브라우저에서 실행됩니다.서버 측 프로그래밍 서블릿이 Tomcat에서 실행되는 Java 시나리오에서는 web-logic , j boss, WebSphere 서버
언급URL : https://stackoverflow.com/questions/13840429/what-is-the-difference-between-client-side-and-server-side-programming
'source' 카테고리의 다른 글
휴지 상태 오류: 동일한 식별자 값을 가진 다른 개체가 세션에 이미 연결되어 있습니다. (0) | 2022.11.28 |
---|---|
비활성화된 입력에 대한 이벤트 (0) | 2022.11.19 |
PDF에 HTML 및 CSS를 추가하는 방법 (0) | 2022.11.19 |
C 구조의 메모리 얼라인 (0) | 2022.11.19 |
메모화는 무엇이며 Python에서는 어떻게 사용할 수 있습니까? (0) | 2022.11.19 |