Apakah perbezaan antara pengaturcaraan sisi klien dan sisi pelayan?
P粉757640504
P粉757640504 2023-08-22 20:26:21
0
2
575
<p>Saya mempunyai kod ini: </p> <pre class="brush:php;toolbar:false;"><script type="text/javascript"> var foo = 'bar'; <?php file_put_contents('foo.txt', ' + foo + '); ?> var baz = <?php echo 42; amaran(baz); </script></pre> <p>Mengapa kod ini tidak menulis "bar" pada fail teks saya, tetapi adakah ia muncul "42"? </p> <hr /> <p>Nota: Semakan awal soalan ini secara eksplisit menangani PHP pada pelayan dan JavaScript pada klien. Apabila satu bahasa berjalan pada klien dan satu lagi pada pelayan (walaupun ia adalah bahasa yang sama), sifat masalah dan penyelesaian adalah sama. Sila pertimbangkan perkara ini apabila melihat jawapan tentang bahasa tertentu. </p>
P粉757640504
P粉757640504

membalas semua(2)
P粉111927962

Untuk menentukan sebab kod PHP tidak berfungsi dalam kod JavaScript, kita perlu memahami apakah bahasa sebelah pelanggan dan sebelah pelayan, dan cara ia berfungsi.

Bahasa sisi pelayan (seperti PHP, dll.) : Mereka mendapatkan semula rekod daripada pangkalan data, mengekalkan keadaan pada sambungan tanpa negara HTTP dan melakukan banyak operasi yang memerlukan keselamatan. Mereka berada di pelayan dan kod sumber program ini tidak pernah didedahkan kepada pengguna.

Jadi, anda boleh melihat dengan mudah bahawa bahasa sebelah pelayan mengendalikan permintaan HTTP dan memprosesnya, seperti yang dikatakan @deceze,

PHP melaksanakan pada pelayan dan mengeluarkan beberapa HTML, dan mungkin kod JavaScript, dan ini dihantar sebagai respons kepada pihak Klien , di mana HTML ditafsirkan dan JavaScript dilaksanakan.

Sebaliknya,

bahasa sebelah pelanggan (seperti JavaScript) berada dalam dan berjalan dalam penyemak imbas. Skrip sebelah pelangganbiasanya merujuk kepada program komputer di web yang dilaksanakan oleh pelayar web pengguna dan bukannya sebelah pelayan.

JavaScript kelihatan kepada pengguna dan boleh diubah suai dengan mudah, jadi untuk isu keselamatan kami tidak boleh bergantung pada JavaScript.

Jadi apabila anda membuat permintaan

HTTP pada pelayan, pelayan terlebih dahulu membaca fail PHP dengan teliti untuk melihat sama ada terdapat tugas yang perlu dilakukan, dan menghantar respons kepada klien. Sekali lagi, seperti yang dikatakan @deceze, *sebaik sahaja PHP selesai mengeluarkan respons, skrip akan tamat dan tiada apa yang akan berlaku pada pelayan sehingga permintaan HTTP baharu diterima. *

Jadi, apakah yang perlu saya lakukan jika saya perlu menghubungi PHP? Ia bergantung pada cara anda perlu melakukannya: dengan memuat semula halaman atau menggunakan panggilan AJAX.

    Anda boleh melakukan ini dengan memuat semula halaman dan menghantar
  1. HTTPpermintaan
  2. Anda boleh menggunakan JavaScript untuk membuat panggilan AJAX - ini tidak memerlukan muat semula halaman

Bahan bacaan yang bagus:

  1. Wikipedia: Skrip Sisi Pelayan
  2. Wikipedia: Skrip Pelanggan
  3. Madara Uchiha: Perbezaan antara pengaturcaraan sisi klien dan sisi pelayan
P粉103739566

Kod anda dibahagikan kepada dua bahagian yang bebas sepenuhnya, sebelah pelayan dan sebelah pelanggan.

                    |
               ---------->
              HTTP请求
                    |
+--------------+    |    +--------------+
|              |    |    |              |
|    浏览器    |    |    |  网络服务器 |
| (JavaScript) |    |    |  (PHP等)    |
|              |    |    |              |
+--------------+    |    +--------------+
                    |
  客户端            |      服务器端
                    |
               <----------
          HTML, CSS, JavaScript
                    |

Dua bahagian ini berkomunikasi melalui permintaan dan respons HTTP. PHP melaksanakan pada pelayan dan mengeluarkan beberapa kod HTML dan mungkin JavaScript, yang dihantar sebagai respons kepada klien, di mana ia mentafsir HTML dan melaksanakan JavaScript. Setelah PHP selesai mengeluarkan respons, skrip tamat dan tiada apa yang berlaku pada pelayan sehingga permintaan HTTP baharu masuk.

Proses pelaksanaan kod sampel adalah seperti berikut:

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

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

Dalam langkah pertama, PHP melaksanakan semua kod antara <?php ?>teg. Keputusan adalah seperti berikut:

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

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

file_put_contents调用没有产生任何结果,它只是将" + foo + "写入文件中。而<?php echo 42; ?>Hasil panggilan adalah untuk mengeluarkan "42", yang kini berada di tempat kod asal.

Kod HTML/JavaScript yang terhasil kini dihantar kepada pelanggan, di mana ia dinilai. alert调用起作用,而fooPembolehubah tidak digunakan di mana-mana.

Semua kod PHP dilaksanakan pada pelayan sebelum pelanggan mula melaksanakan sebarang JavaScript. Tiada kod PHP yang tinggal dalam respons untuk berinteraksi dengan JavaScript.

Untuk memanggil beberapa kod PHP, pelanggan mesti menghantar permintaan HTTP baharu kepada pelayan. Ini boleh dicapai dengan salah satu daripada tiga cara yang mungkin:

  1. Pautan yang menyebabkan penyemak imbas memuatkan halaman baharu.
  2. Penyerahan borang, serahkan data ke pelayan dan muatkan halaman baharu.
  3. Permintaan
  4. AJAX, iaitu teknologi JavaScript yang digunakan untuk membuat permintaan HTTP biasa kepada pelayan (serupa dengan 1 dan 2), tetapi tanpa meninggalkan halaman semasa.

Berikut ialah soalan yang menggariskan kaedah ini dengan lebih terperinci

Anda juga boleh menggunakan JavaScript untuk menyebabkan penyemak imbas membuka halaman baharu menggunakan window.location atau menyerahkan borang, meniru kemungkinan 1 dan 2.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan