574 Stimmen

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 wird nicht "bar" in meine Textdatei geschrieben, sondern "42"?


NB: In früheren Versionen dieser Frage ging es ausdrücklich um PHP auf dem Server und JavaScript auf dem Client. Der wesentliche Charakter des Problems und der Lösungen ist derselbe für jede Sprachenpaar, wenn die eine auf dem Client und die andere auf dem Server läuft (auch wenn es sich um dieselbe Sprache handelt). Bitte berücksichtigen Sie dies, wenn Sie Antworten sehen, die sich auf bestimmte Sprachen beziehen.

532voto

deceze Punkte 489288

Ihr Code ist in zwei völlig getrennte Teile aufgeteilt, die Serverseite y el Kundenseite .

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

Die Kommunikation zwischen den beiden Seiten erfolgt über HTTP-Anfragen und -Antworten. PHP wird auf dem Server ausgeführt und gibt etwas HTML- und eventuell JavaScript-Code aus, der als Antwort an den Client gesendet wird, wo das HTML interpretiert und das JavaScript ausgeführt wird. Sobald PHP die Ausgabe der Antwort beendet hat, wird das Skript beendet und auf dem Server passiert nichts mehr, bis eine neue HTTP-Anfrage eingeht.

Der Beispielcode wird wie folgt 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. Das Ergebnis ist folgendes:

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

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

Les file_put_contents Aufruf hat zu nichts geführt, er hat lediglich " + foo + " in eine Datei geschrieben. Die <?php echo 42; ?> Aufruf ergab die Ausgabe "42", die sich nun an der Stelle befindet, an der dieser Code vorher stand.

Der daraus resultierende HTML/JavaScript-Code wird nun an den Client gesendet, wo er ausgewertet wird. Die alert Aufruf funktioniert, während der foo wird nirgends verwendet.

Der gesamte PHP-Code wird auf dem Server ausgeführt, bevor der Client überhaupt mit der Ausführung von JavaScript beginnt. Es gibt keinen PHP-Code mehr in der Antwort, 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, der den Browser veranlasst, eine neue Seite zu laden.
  2. Ein Formular, das Daten an den Server sendet und eine neue Seite lädt.
  3. Eine AJAX Anfrage, die eine Javascript-Technik ist, um eine normale HTTP-Anfrage an den Server zu stellen (wie 1. und 2.), aber ohne die aktuelle Seite zu verlassen.

Hier ist eine Frage, in der diese Methode näher erläutert wird

Sie können auch JavaScript verwenden, damit der Browser eine neue Seite öffnet, indem Sie window.location oder ein Formular einreichen, das die Möglichkeiten 1. und 2. nachahmt.

189voto

NullPoiиteя Punkte 54880

Um festzustellen, warum PHP Code funktioniert nicht in JavaScript Code müssen wir verstehen, was Kundenseite y Serverseite Sprachen sind, und wie sie funktionieren.

Serverseitige Sprachen (PHP usw.) : Sie rufen Datensätze aus Datenbanken ab, halten den Status über die zustandslos HTTP Verbindung und eine Menge Dinge tun, die Sicherheit erfordern. Sie befinden sich auf dem Server. Der Quellcode dieser Programme ist für den Benutzer nicht sichtbar.

Image from wikipedia_http://en.wikipedia.org/wiki/File:Scheme_dynamic_page_en.svg <a href="http://en.wikipedia.org/wiki/File:Scheme_dynamic_page_en.svg" rel="noreferrer"> Bildattribut</a>

Sie können also leicht erkennen, dass serverseitige Sprachen HTTP-Anfragen bearbeiten und verarbeiten, und, wie @deceze sagte, PHP wird auf dem Server ausgeführt und gibt einen HTML- und eventuell einen JavaScript-Code aus, der als Antwort an den Client gesendet wird, wo der HTML-Code interpretiert und JavaScript ausgeführt wird.

Andererseits, Client-seitige Sprachen (wie JavaScript) befinden sich im Browser und werden im Browser ausgeführt. Client-seitige Skripterstellung bezieht sich im Allgemeinen auf die Klasse von Computerprogrammen im Web, die clientseitig, d. h. vom Webbrowser des Benutzers, ausgeführt werden, anstatt Server-seitig .

JavaScript ist für den Benutzer sichtbar und kann leicht verändert werden, so dass wir uns aus Sicherheitsgründen nicht auf JavaScript verlassen dürfen.

Wenn Sie also eine HTTP Anfrage auf dem Server, liest der Server zunächst die PHP-Datei sorgfältig, um zu sehen, ob es irgendwelche Aufgaben gibt, die ausgeführt werden müssen, und sendet eine Antwort an die Client-Seite. Wie @deceze schon sagte, *wird das Skript beendet, sobald PHP die Ausgabe der Antwort beendet hat, und auf dem Server passiert nichts mehr, bis eine neue HTTP Anfrage eingeht.*

Graphical representation

<a href="http://www.html.net/tutorials/php/lesson1.php" rel="noreferrer">Bildquelle</a>

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

  1. Sie können dies tun, indem Sie die Seite neu laden und eine HTTP Anfrage
  2. Sie können einen AJAX-Aufruf mit JavaScript durchführen - dazu muss die Seite nicht neu geladen werden.

Gute Lektüre:

  1. Wikipedia : Server-seitiges Skripting
  2. Wikipedia : Client-seitiges Skripting
  3. Madara Uchiha : Unterschied zwischen clientseitiger und serverseitiger Programmierung

38voto

NitayArt Punkte 456

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

Am besten stellen Sie sich diesen Vorgang so vor, als würden Sie eine Textdatei dynamisch erzeugen. Der Text, den Sie erzeugen, wird erst dann zu ausführbarem Code, wenn der Browser ihn interpretiert. Nur was Sie zwischen <?php Tags auf dem Server ausgewertet wird.

Übrigens, wenn man es sich zur Gewohnheit macht, zufällige Teile der PHP-Logik in HTML oder Javascript einzubetten, kann das zu einem sehr verworrenen Code führen. Ich spreche aus leidvoller Erfahrung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X