Pengaturcaraan Sisi Pelanggan lwn. Sisi Pelayan: Memahami Perbezaan
P粉141035089
P粉141035089 2023-10-19 16:00:04
0
2
718

Saya ada kod ini:

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

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

Mengapa ini tidak menulis "bar" pada fail teks saya sebaliknya memberi amaran kepada "42"?


Nota: Semakan awal soalan ini secara eksplisit menangani PHP pada pelayan dan JavaScript pada klien. Apabila satu bahasa berjalan pada klien dan bahasa lain pada pelayan (walaupun bahasa yang sama), sifat masalah dan penyelesaian adalah sama untuk sebarang bahasa. Pertimbangkan ini apabila anda melihat jawapan yang bercakap tentang bahasa tertentu.

P粉141035089
P粉141035089

membalas semua(2)
P粉717595985

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

Bahasa sisi pelayan (PHP, dll.) : Mereka mendapatkan semula rekod daripada pangkalan data, menyambung melalui tanpa negara HTTP, dan melakukan banyak operasi yang memerlukan keselamatan. Mereka berada di pelayan dan program ini tidak pernah mendedahkan kod sumber mereka kepada pengguna.

Jadi, anda boleh melihat dengan mudah bahawa bahasa sebelah pelayan mengendalikan permintaan HTTP dan memprosesnya, dan, seperti yang dikatakan @deceze, PHP melaksanakan pada pelayan dan mengeluarkan beberapa kod HTML dan mungkin JavaScript, yang dihantar kepada klien sebagai Respons , yang mentafsir HTML dan melaksanakan JavaScript.

Sebaliknya, bahasa sebelah pelanggan ​​(seperti JavaScript) ada dan dijalankan dalam penyemak imbas. Skrip sebelah pelanggan biasanya merujuk kepada kelas program komputer pada rangkaian yang dilaksanakan sebelah klien oleh pelayar web pengguna, bukannya sebelah pelayan. p>

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

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

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

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

Bacaan yang bagus:

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

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

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

Kedua-dua pihak 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 HTML ditafsirkan dan JavaScript dilaksanakan. Setelah PHP selesai mengeluarkan respons, skrip tamat dan tiada apa yang berlaku pada pelayan sehingga permintaan HTTP baharu datang.

Kod contoh dilaksanakan seperti berikut:

sssccc

Langkah 1, PHP melaksanakan semua kod antara teg. Hasilnya begini:

sssccc

file_put_contents 调用没有产生任何结果,它只是将“ + foo + ”写入文件。 Panggilan menghasilkan output "42", yang kini terletak di tempat asal kod ini.

Kod HTML/JavaScript yang dijana kini dihantar kepada pelanggan dan dinilai di sana. alert 调用有效,而 foo Pembolehubah tidak digunakan di mana-mana.

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

Untuk memanggil kod PHP tertentu, pelanggan mesti menghantar permintaan HTTP baharu kepada pelayan. Ini boleh dicapai menggunakan salah satu daripada tiga kaedah 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 menjana permintaan HTTP biasa kepada pelayan (ditunjukkan dalam 1. dan 2.) tanpa meninggalkan halaman semasa.

Berikut ialah soalan yang menggariskan kaedah ini dengan lebih terperinci

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

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