Apakah perbezaan antara pengaturcaraan sisi klien dan sisi pelayan?
P粉757640504
2023-08-22 20:26:21
<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>
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.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- HTTPpermintaan
Anda boleh menggunakan JavaScript untuk membuat panggilan AJAX - ini tidak memerlukan muat semula halaman-
Bahan bacaan yang bagus:
Kod anda dibahagikan kepada dua bahagian yang bebas sepenuhnya, sebelah pelayan dan sebelah pelanggan.
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:
Dalam langkah pertama, PHP melaksanakan semua kod antara
<?php ?>
teg. Keputusan adalah seperti berikut: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
调用起作用,而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 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:
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.