webentwicklung-frage-antwort-db.com.de

Was ist der Unterschied zwischen clientseitiger und serverseitiger Programmierung?

Ich habe diesen Code:

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

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

Warum schreibt das nicht "bar" in meine Textdatei, sondern warnt "42"?


NB: Frühere Überarbeitungen dieser Frage betrafen ausdrücklich PHP auf dem Server und JavaScript auf dem Client. Die grundlegende Natur des Problems und der Lösungen ist die gleiche für any pair Anzahl der Sprachen, wenn eine auf dem Client und die andere auf dem Server ausgeführt wird (auch wenn es sich um dieselbe Sprache handelt) Berücksichtigen Sie dies, wenn Sie Antworten zu bestimmten Sprachen erhalten.

463
deceze

Ihr Code ist in zwei völlig getrennte Teile aufgeteilt, die Serverseite und die Clientseite.

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

Die beiden Seiten kommunizieren über HTTP-Anfragen und -Antworten. PHP wird auf dem Server ausgeführt und gibt HTML- und möglicherweise JavaScript-Code aus, der als Antwort an den Client gesendet wird, auf dem HTML interpretiert und JavaScript ausgeführt wird. Nachdem PHP die Antwort ausgegeben hat, wird das Skript beendet und auf dem Server passiert nichts, bis eine neue HTTP-Anfrage eingeht.

Der Beispielcode wird folgendermaßen ausgeführt:

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

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

Schritt 1, PHP führt den gesamten Code zwischen <?php ?> - Tags aus. Das Ergebnis ist folgendes:

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

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

Der file_put_contents - Aufruf führte zu nichts, er schrieb nur "+ foo +" in eine Datei. Der Aufruf von <?php echo 42; ?> Führte zu der Ausgabe "42", die sich jetzt an der Stelle befindet, an der sich dieser Code befand.

Dieser resultierende HTML/JavaScript-Code wird jetzt an den Client gesendet und dort ausgewertet. Der Aufruf alert funktioniert, während die Variable foo nirgendwo verwendet wird.

Der gesamte PHP Code wird auf dem Server ausgeführt, bevor der Client überhaupt mit der Ausführung von JavaScript beginnt. In der Antwort ist kein PHP Code mehr enthalten, mit dem JavaScript interagieren könnte.

Um einen PHP Code aufzurufen, muss der Client eine neue HTTP-Anfrage an den Server senden. Dies kann mit einer von drei möglichen Methoden geschehen:

  1. Ein Link, über den der Browser eine neue Seite lädt.
  2. Eine Formularübermittlung, die Daten an den Server übermittelt und eine neue Seite lädt.
  3. Eine AJAX -Anforderung, bei der es sich um eine JavaScript-Technik handelt, um eine reguläre HTTP-Anforderung an den Server zu senden (wie bei 1. und 2.), jedoch ohne die aktuelle Anforderung zu verlassen Seite.

Hier ist eine Frage, die diese Methode ausführlicher beschreibt

Sie können auch JavaScript verwenden, um im Browser mit window.location Eine neue Seite zu öffnen, oder ein Formular senden, das die Möglichkeiten 1 und 2 emuliert.

440
deceze

Um festzustellen, warum [~ # ~] php [~ # ~] Code in JavaScript Code nicht funktioniert, müssen wir verstehen, was clientseitige und serverseitige Sprachen sind und wie sie funktionieren.

Serverseitige Sprachen (PHP usw.): Sie rufen Datensätze aus Datenbanken ab und behalten den Status über das zustandslose [~ # ~] http [~ # ~] connection und viele Dinge tun, die Sicherheit erfordern. Sie befinden sich auf dem Server. Bei diesen Programmen ist der Quellcode niemals dem Benutzer zugänglich.

Image from wikipedia_http://en.wikipedia.org/wiki/File:Scheme_dynamic_page_en.svgBildattr

Sie können also leicht erkennen, dass serverseitige Sprachen HTTP-Anforderungen verarbeiten und verarbeiten. Wie @deceze bereits sagte, wird PHP auf dem Server ausgeführt und gibt HTML- und möglicherweise JavaScript-Code aus, der als Antwort gesendet wird der Client, auf dem der HTML-Code interpretiert und JavaScript ausgeführt wird.

Auf der anderen Seite Clientseitige Sprachen (wie JavaScript) befinden sich im Browser und werden im Browser ausgeführt. Clientseitiges Scripting bezieht sich im Allgemeinen auf die Klasse von Computerprogrammen im Web, die clientseitig vom Webbrowser des Benutzers ausgeführt werden, anstatt serverseitig =.

JavaScript ist für den Benutzer sichtbar und kann leicht geändert werden. Aus Sicherheitsgründen dürfen wir uns also nicht auf JavaScript verlassen.

Wenn Sie also eine [~ # ~] http [~ # ~] -Anforderung auf dem Server stellen, liest der Server zuerst die PHP -Datei sorgfältig, um festzustellen, ob sie vorhanden ist sind alle Aufgaben, die ausgeführt werden müssen und senden eine Antwort an die Client-Seite. Wieder, wie @deceze sagte, * Sobald PHP) die Ausgabe der Antwort beendet hat, endet das Skript und nichts wird passieren auf dem Server, bis eine neue [~ # ~] http [~ # ~] Anfrage eingeht. *

Graphical representation

Bildquelle

Was kann ich nun tun, wenn ich PHP aufrufen muss? Es hängt davon ab, wie Sie es tun müssen: entweder durch Neuladen der Seite oder durch einen Aufruf von AJAX.

  1. Sie können dies tun, indem Sie die Seite neu laden und eine [~ # ~] http [~ # ~] -Anforderung senden
  2. Sie können AJAX mit JavaScript aufrufen - das Neuladen der Seite ist nicht erforderlich

Gut gelesen:

  1. Wikipedia: Serverseitiges Scripting
  2. Wikipedia: Client-seitiges Scripting
  3. Madara Uchiha: Unterschied zwischen clientseitiger und serverseitiger Programmierung
155
NullPoiиteя

Ihr Javascript wird auf dem Client ausgeführt, nicht auf dem Server. Dies bedeutet, dass foo nicht serverseitig ausgewertet wird und daher sein Wert nicht in eine Datei auf dem Server geschrieben werden kann.

Der beste Weg, um über diesen Prozess nachzudenken, ist, als würden Sie eine Textdatei dynamisch generieren. Der Text, den Sie generieren, wird erst dann zu ausführbarem Code, wenn er vom Browser interpretiert wird. Nur das, was Sie zwischen <?php - Tags einfügen, wird auf dem Server ausgewertet.

Übrigens kann die Gewohnheit, zufällige Teile von PHP in HTML oder Javascript einzubetten, zu ernsthaft verschlungenem Code führen. Ich spreche aus schmerzhafter Erfahrung.

27
NitayArt

In der Webanwendung wird jede Aufgabe in einer Art und Weise ausgeführt, in der sie angefordert und beantwortet wird.

Die clientseitige Programmierung erfolgt mit HTML-Code mit Java Skript und dessen Frameworks, Bibliotheken werden im Internet Explorer, Mozilla, chrome Browser ausgeführt. Im Java Szenario werden serverseitige Programmierservlets in den Servern Tomcat, Weblogic, J Boss und WebSphere ausgeführt

3
chandrashekar.n

Ich werde versuchen, es auf einfache Weise zu erklären.

Auf der Client-Seite wird dem Benutzer der Code angezeigt, der im Browser angezeigt wird.

Die clientseitige Programmierung umfasst HTML (HTML, HTML5, DHTML), CSS (CSS, CSS3) und JavaScript (JavaScript, ES5, ES6, ES7, TypeScript, JQuery, ReactJs, AngularJs, BackboneJs oder ein beliebiges anderes JavaScript-Front-End-Framework).

Die clientseitige Programmierung konzentriert sich auf das Aussehen der Seite und das Verhalten gegenüber Browsern.

  1. HTML ist das, was wir sehen.
  2. CSS entscheidet über die Gestaltung (Farben, Floating Images, Padding usw.).
  3. Informationen zur Seite des JavaScript-Monitors. Alle API-Aufrufe und das Verwalten von Daten über DOM werden von JavaScript ausgeführt.

Die serverseitige Programmierung enthält Code, der clientseitige Daten bereitstellt. Der Benutzer kann die Serverseite niemals sehen.

Die serverseitige Programmierung umfasst Programmiersprache (Java, PHP, .NET, C #, C, C++, NodeJS usw.), Datenbank (SQL, Oracle, MySQL, PostgreySQL, No-SQL, MongoDB usw.), Drittanbieter-API (Rest, Soap ), Geschäftslogik.

Bei der serverseitigen Programmierung geht es darum, "wie Daten für die Clientseite verfügbar gemacht werden".

  1. Die serverseitige Sprache ist für die Kommunikation zwischen verschiedenen Datenquellen wie Datenbanken, APIs von Drittanbietern, Dateisystemen, Blockchain usw. verantwortlich. Diese Sprachen verwalten bestimmte APIs, mit denen der Client interagieren kann.
  2. Die Datenbank ist für die Speicherung der Informationen verantwortlich.
  3. Business Logic definiert, wie Daten verwendet und wie mit Daten umgegangen wird.

Clientseitige Anforderungsdaten oder Anforderung zum Speichern von Daten von der Serverseite über die von der Serverseite bereitgestellte API. Diese Anforderung und Antwort von Daten erfolgt über das folgende HTTP/FTP-Protokoll: REST API, SOAP API.

0
NAVIN