Saya memiliki kode ini:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Mengapa hal ini tidak menulis "bar" ke file teks, tetapi peringatan "42"?
NB: Sebelumnya revisi dari pertanyaan ini secara eksplisit tentang PHP di server dan JavaScript pada klien. Sifat penting masalah dan solusi adalah sama untuk ada sepasang bahasa ketika seseorang berjalan di klien dan server (bahkan jika mereka adalah bahasa yang sama). Silakan mengambil ke account ketika anda melihat jawaban berbicara tentang bahasa-bahasa tertentu.
Kode ini dibagi menjadi dua sama sekali bagian-bagian yang terpisah, yang sisi server dan sisi klien.
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Kedua belah pihak berkomunikasi melalui HTTP request dan respon. PHP dieksekusi pada server dan output beberapa HTML dan mungkin kode JavaScript yang dikirim sebagai respon terhadap klien mana HTML ditafsirkan dan JavaScript dijalankan. Setelah PHP telah selesai keluaran respon, script berakhir dan tidak ada yang akan terjadi pada server sampai baru HTTP request yang masuk.
Contoh mengeksekusi kode seperti ini:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Langkah 1, PHP mengeksekusi semua kode antara <?php ?>
kategori. Hasilnya adalah ini:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
The file_put_contents
panggilan tidak menghasilkan apa-apa, itu hanya menulis " + foo + " ke dalam sebuah file. The <?php echo 42; ?>
call menghasilkan output "42", yang sekarang di tempat di mana kode yang digunakan untuk menjadi.
Ini menghasilkan HTML/JavaScript kode sekarang dikirim ke klien, di mana itu akan dievaluasi. Yang waspada
panggilan bekerja, sementara foo
variabel yang tidak digunakan di mana saja.
Semua kode PHP dieksekusi pada server sebelum klien bahkan mulai mengeksekusi salah satu dari JavaScript. Ada's tidak ada kode PHP yang tersisa di respon bahwa JavaScript dapat berinteraksi dengan.
Untuk menyebut beberapa kode PHP, klien harus mengirim permintaan HTTP baru untuk server. Hal ini dapat terjadi menggunakan salah satu dari tiga metode yang mungkin:
Di sini's pertanyaan ini menguraikan metode yang lebih besar detail
Anda juga dapat menggunakan JavaScript untuk membuat browser membuka halaman baru dengan menggunakan jendela.lokasi
atau mengirimkan formulir, meniru kemungkinan 1. dan 2.
Untuk menentukan mengapa PHP kode doesn't bekerja di JavaScript kode kita perlu memahami apa client side dan server side bahasa, dan bagaimana mereka bekerja.
Server-side bahasa (PHP, dll.): Mereka mengambil data dari database, mempertahankan negara atas bernegara HTTP koneksi, dan melakukan banyak hal-hal yang memerlukan keamanan. Mereka berada di server, program ini tidak memiliki kode sumber mereka terkena pengguna.
Jadi anda dapat dengan mudah melihat bahwa server side bahasa menangani permintaan HTTP dan proses mereka, dan, seperti @deceze berkata, PHP dieksekusi pada server dan output beberapa HTML, dan mungkin kode JavaScript, yang dikirim sebagai respon terhadap klien, mana HTML ditafsirkan dan JavaScript dijalankan.
Di sisi lain, Client Side Bahasa (seperti JavaScript) tinggal di browser dan jalankan di browser. Client-side scripting umumnya mengacu pada kelas program komputer pada web yang dieksekusi di sisi klien, oleh pengguna's web browser, bukan server-side.
JavaScript adalah terlihat oleh pengguna dan dapat dengan mudah dimodifikasi, sehingga untuk keamanan hal-hal yang kita tidak harus bergantung pada JavaScript.
Jadi, ketika anda membuat a HTTP permintaan pada server, server pertama membaca file PHP dengan hati-hati untuk melihat apakah ada tugas-tugas yang harus dilaksanakan, dan mengirimkan respon untuk sisi klien. Sekali lagi, seperti @deceze berkata, Setelah PHP telah selesai keluaran respon, script berakhir dan tidak ada yang akan terjadi pada server sampai baru HTTP permintaan yang masuk.
Jadi sekarang apa yang dapat saya lakukan jika saya harus menelepon PHP? Itu tergantung bagaimana yang perlu anda lakukan: baik dengan reload halaman atau dengan menggunakan AJAX call.
Selamat Membaca:
Javascript anda akan mengeksekusi pada klien, bukan pada server. Ini berarti bahwa foo
tidak dievaluasi pada sisi server dan oleh karena itu nilainya bisa't dapat ditulis ke file pada server.
Cara terbaik untuk berpikir tentang proses ini karena jika anda're menghasilkan file teks dinamis. Teks anda're menghasilkan hanya menjadi kode yang dapat dijalankan setelah browser menafsirkan itu. Hanya apa yang anda menempatkan antara <?php
kategori dievaluasi pada server.
By the way, membuat kebiasaan embedding potongan acak logika PHP dalam HTML atau Javascript dapat menyebabkan serius berbelit-belit kode. Saya berbicara dari pengalaman yang menyakitkan.
Dalam aplikasi web setiap melaksanakan tugas dalam cara permintaan dan respon.
Client side programming adalah dengan kode html Java script dan kerangka kerja, perpustakaan dijalankan di internet explorer, Mozilla, chrome browser. Di jawa skenario server side programming servlets mengeksekusi di Tomcat, web-logika , j bos, WebSphere severs
Saya akan mencoba untuk menjelaskan dengan cara yang sederhana.
Sisi klien adalah apa yang pengguna lihat/ kode yang terlihat pada browser.
Pemrograman Sisi klien meliputi HTML(HTML, HTML5, DHTML), CSS(CSS, CSS3) dan JavaScript(JavaScript, ES5, ES6, ES7, Ketangkasan, JQuery, ReactJs, AngularJs, BackboneJs atau JavaScript framework Front-end).
Pemrograman Sisi klien fokus pada "bagaimana halaman akan terlihat seperti" dan perilakunya di atas browser.
Server Side Programming mencakup kode yang memberikan data ke Client-Side. Pengguna tidak dapat melihat server-side.
Server Side Programming melibatkan Bahasa Pemrograman(Java, PHP, .Net, C#, C, C++, NodeJS dll), Database(SQL, Oracle, MySql, PostgreySql, No-Sql, MongoDB, dll), Pihak Ketiga API(Rest, Soap), Logika Bisnis.
Server Side Programming fokus pada "bagaimana membuat data yang tersedia untuk Klien-Sisi".
Client-Side data permintaan atau permintaan untuk menyimpan data, dari Server-side melalui API yang disediakan oleh Server-Side. Ini permintaan dan respon data dilakukan dengan mengikuti HTTP/FTP protokol seperti REST API, SABUN API.