Sự khác biệt giữa lập trình phía máy khách và phía máy chủ là gì?

515
deceze 2012-12-13 03:03.

Tôi có mã này:

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

Tại sao điều này không ghi "bar" vào tệp văn bản của tôi, nhưng lại cảnh báo "42"?


NB: Các bản sửa đổi trước của câu hỏi này đã nói rõ về PHP trên máy chủ và JavaScript trên máy khách. Bản chất cơ bản của vấn đề và các giải pháp là giống nhau đối với bất kỳ cặp ngôn ngữ nào khi một ngôn ngữ đang chạy trên máy khách và ngôn ngữ kia trên máy chủ (ngay cả khi chúng là cùng một ngôn ngữ). Hãy tính đến điều này khi bạn thấy câu trả lời nói về các ngôn ngữ cụ thể.

4 answers

480
deceze 2012-12-13 03:03.

Mã của bạn được chia thành hai phần hoàn toàn riêng biệt, phía máy chủ và phía máy khách .

                    |
               ---------->
              HTTP request
                    |
+--------------+    |    +--------------+
|              |    |    |              |
|    browser   |    |    |  web  server |
| (JavaScript) |    |    |  (PHP etc.)  |
|              |    |    |              |
+--------------+    |    +--------------+
                    |
  client side       |      server side
                    |
               <----------
          HTML, CSS, JavaScript
                    |

Hai bên giao tiếp thông qua các yêu cầu và phản hồi HTTP. PHP được thực thi trên máy chủ và xuất ra một số mã HTML và có thể là mã JavaScript được gửi dưới dạng phản hồi đến máy khách nơi HTML được thông dịch và JavaScript được thực thi. Sau khi PHP hoàn tất việc xuất phản hồi, tập lệnh sẽ kết thúc và không có gì xảy ra trên máy chủ cho đến khi có một yêu cầu HTTP mới.

Mã ví dụ thực thi như sau:

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

Bước 1, PHP thực thi tất cả mã giữa <?php ?>các thẻ. Kết quả là:

<script type="text/javascript">
    var foo = 'bar';

    var baz = 42;
    alert(baz);
</script>

Cuộc file_put_contentsgọi không mang lại kết quả gì, nó chỉ ghi "+ foo +" vào một tệp. Cuộc <?php echo 42; ?>gọi dẫn đến kết quả đầu ra "42", hiện tại ở vị trí mà mã đó đã từng ở đó.

Mã HTML / JavaScript kết quả này hiện được gửi đến máy khách, nơi nó được đánh giá. Cuộc alertgọi hoạt động, trong khi foobiến không được sử dụng ở bất kỳ đâu.

Tất cả mã PHP được thực thi trên máy chủ trước khi máy khách bắt đầu thực thi bất kỳ JavaScript nào. Không còn mã PHP nào trong phản hồi mà JavaScript có thể tương tác.

Để gọi một số mã PHP, máy khách sẽ phải gửi một yêu cầu HTTP mới đến máy chủ. Điều này có thể xảy ra bằng cách sử dụng một trong ba phương pháp khả thi:

  1. Liên kết khiến trình duyệt tải một trang mới.
  2. Gửi biểu mẫu, gửi dữ liệu đến máy chủ và tải một trang mới.
  3. Một AJAX yêu cầu, mà là một kỹ thuật Javascript để thực hiện một yêu cầu HTTP thông thường đến máy chủ (như 1. và 2. sẽ), nhưng mà không rời khỏi trang hiện tại.

Làm cách nào để chuyển các biến và dữ liệu từ PHP sang JavaScript?

Bạn cũng có thể sử dụng JavaScript để làm cho trình duyệt mở một trang mới bằng cách sử dụng window.locationhoặc gửi biểu mẫu, mô phỏng các khả năng 1 và 2.

171
NullPoiиteя 2013-07-02 01:52.

Để xác định lý do tại sao mã PHP không hoạt động trong mã JavaScript, chúng ta cần hiểu ngôn ngữ phía máy kháchphía máy chủ là gì và cách chúng hoạt động.

Ngôn ngữ phía máy chủ (PHP, v.v.) : Chúng truy xuất bản ghi từ cơ sở dữ liệu, duy trì trạng thái qua kết nối HTTP không trạng thái và thực hiện nhiều việc yêu cầu bảo mật. Chúng nằm trên máy chủ, các chương trình này không bao giờ có mã nguồn của chúng tiếp xúc với người dùng.

đính kèm hình ảnh

Vì vậy, bạn có thể dễ dàng thấy rằng các ngôn ngữ phía máy chủ xử lý các yêu cầu HTTP và xử lý chúng, và như @deceze đã nói, PHP được thực thi trên máy chủ và xuất ra một số mã HTML, và có thể là mã JavaScript, được gửi dưới dạng phản hồi đến máy khách, nơi HTML được thông dịch và JavaScript được thực thi.

Mặt khác, Ngôn ngữ phía máy khách (như JavaScript) nằm trong trình duyệt và chạy trong trình duyệt. Tập lệnh phía máy khách thường đề cập đến lớp chương trình máy tính trên web được thực thi phía máy khách, bởi trình duyệt web của người dùng, thay vì phía máy chủ .

JavaScript hiển thị cho người dùng và có thể dễ dàng sửa đổi, vì vậy đối với các nội dung bảo mật, chúng ta không được dựa vào JavaScript.

Vì vậy, khi bạn thực hiện một yêu cầu HTTP trên máy chủ, trước tiên máy chủ sẽ đọc kỹ tệp PHP để xem có bất kỳ tác vụ nào cần được thực thi hay không và gửi phản hồi tới phía máy khách. Một lần nữa, như @deceze đã nói, * Sau khi PHP hoàn tất việc xuất phản hồi, tập lệnh sẽ kết thúc và không có gì xảy ra trên máy chủ cho đến khi có yêu cầu HTTP mới . *

Nguồn hình ảnh

Vậy bây giờ tôi có thể làm gì nếu tôi cần gọi PHP? Nó phụ thuộc vào cách bạn cần làm điều đó: bằng cách tải lại trang hoặc bằng cách sử dụng lệnh gọi AJAX.

  1. Bạn có thể làm như vậy bằng cách tải lại trang và gửi một yêu cầu HTTP
  2. Bạn có thể thực hiện cuộc gọi AJAX bằng JavaScript - điều này không yêu cầu tải lại trang

Đọc tốt:

  1. Wikipedia: Tập lệnh phía máy chủ
  2. Wikipedia: Tập lệnh phía máy khách
  3. Madara Uchiha: Sự khác biệt giữa lập trình phía máy khách và phía máy chủ
31
NitayArt 2012-12-13 03:46.

Javascript của bạn sẽ thực thi trên máy khách, không phải trên máy chủ. Điều này có nghĩa là nó fookhông được đánh giá ở phía máy chủ và do đó giá trị của nó không thể được ghi vào tệp trên máy chủ.

Cách tốt nhất để nghĩ về quá trình này là như thể bạn đang tạo một tệp văn bản động. Văn bản bạn đang tạo chỉ trở thành mã thực thi khi trình duyệt diễn giải nó. Chỉ những gì bạn đặt giữa <?phpcác thẻ được đánh giá trên máy chủ.

Nhân tiện, việc tạo thói quen nhúng các mẩu logic PHP ngẫu nhiên vào HTML hoặc Javascript có thể dẫn đến mã phức tạp nghiêm trọng. Tôi nói từ kinh nghiệm đau đớn.

2
chandrashekar.n 2016-07-13 23:26.

Trong ứng dụng web, mọi tác vụ thực thi theo cách thức yêu cầu và phản hồi.

Lập trình phía máy khách là với mã html với tập lệnh Java và các khuôn khổ, thư viện của nó thực thi trong trình duyệt internet explorer, Mozilla, chrome. Trong kịch bản java các servlet lập trình phía máy chủ thực thi trong máy chủ Tomcat, web-logic, j boss, WebSphere

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Tận dụng lợi thế của việc bán hàng nhân Ngày của Cha này

Tận dụng lợi thế của việc bán hàng nhân Ngày của Cha này

Màn hình Samsung Galaxy S9 Plus. Chủ nhật này là Ngày của Cha⁠ — trong trường hợp nó khiến bạn suy nghĩ — và thay vì mua cho anh ấy một chiếc cà vạt trong năm nay, có lẽ đã đến lúc bạn mua cho anh ấy thứ mà anh ấy sẽ thực sự sử dụng.

Assassin's Creed Snuck Into Monster Hunter: World Last Night

Assassin's Creed Snuck Into Monster Hunter: World Last Night

Monster Hunter: World yêu thích các sự kiện chéo. Dù có nghĩa là hóa trang thành Dante của Devil May Cry, giả dạng Horizon: Zero Dawn's Aloy, hay chiến đấu với quái vật Final Fantasy, các nhiệm vụ sự kiện khác nhau của Thế giới được nâng cấp tự do so với các trò chơi khác.

Ava DuVernay Có Quà Tặng Ngày Của Mẹ cho Tất Cả Chúng Ta: Nếp Nhăn Thời Gian Sẽ Được Viết Lại Vào Cuối Tuần Ngày Của Mẹ!

Ava DuVernay Có Quà Tặng Ngày Của Mẹ cho Tất Cả Chúng Ta: Nếp Nhăn Thời Gian Sẽ Được Viết Lại Vào Cuối Tuần Ngày Của Mẹ!

Storm Reid, Oprah Winfrey, Mindy Kaling, Reese Witherspoon và Ava DuVernay tại buổi chiếu đặc biệt của A Wrinkle in Time tại Nhà hát Walter Reade ở Thành phố New York vào ngày 7 tháng 3 năm 2018 “Ava rất mong được nói chuyện với bạn,” một trong những người của Array dư luận viên nói qua điện thoại. (Array là tập thể phân phối, nghệ thuật và vận động chính sách của Ava DuVernay tập trung vào các bộ phim của người da màu và phụ nữ.

Nhiệm vụ bất khả thi 5 sẽ khôi phục niềm tin của bạn trong phim hành động Tentpole

Nhiệm vụ bất khả thi 5 sẽ khôi phục niềm tin của bạn trong phim hành động Tentpole

Mission Impossible: Rogue Nation bắt đầu ở một cấp độ khác. Theo nghĩa đen.

Edwin McCain ra mắt Grand Ole Opry: Quay cảnh hậu trường với nhạc sĩ 'I'll Be'

Edwin McCain ra mắt Grand Ole Opry: Quay cảnh hậu trường với nhạc sĩ 'I'll Be'

McCain, người đang làm việc cho một album mới, lần đầu tiên bước vào vòng kết nối vào tối thứ Sáu ở Nashville

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Tôi viết như thế nào

Tôi viết như thế nào

Đối với tôi, mọi thứ là về dòng đầu tiên đó và nó sẽ đưa bạn đến đâu. Một số nhà văn bị điều khiển bởi cốt truyện, sự sắp xếp tinh tế của các quân cờ, trong khi những người khác bị lôi cuốn bởi một nhân vật và khả năng thực hiện một cuộc hành trình với một người bạn hư cấu mới.

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Language