558 votes

Quelle est la différence entre le côté client et côté serveur programmation?

J'ai ce code:

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

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

Pourquoi n'est-ce pas écrire "bar" dans mon fichier texte, mais les alertes "42"?

523voto

deceze Points 200115

Votre code est divisé en deux parties distinctes, le côté serveur et du côté client.

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

Les deux côtés de communiquer via des requêtes et des réponses HTTP. PHP est exécuté sur le serveur et les sorties HTML et peut-être un code JavaScript qui est envoyé comme réponse pour le client, le code HTML est interprété et le JavaScript est exécuté. Une fois que PHP a fini de la transmission de la réponse, le script se termine et il ne se passera rien sur le serveur jusqu'à ce qu'une nouvelle requête HTTP.

L'exemple de code s'exécute comme ceci:

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

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

L'étape 1, PHP s'exécute tout le code entre <?php ?> tags. Le résultat est le suivant:

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

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

L' file_put_contents d'appel n'a pas abouti à rien, c'est juste écrit "+ foo + " dans un fichier. L' <?php echo 42; ?> appel a abouti à la sortie de "42", qui en est maintenant à l'endroit où le code utilisé pour être.

Il en résulte HTML/JavaScript code est envoyé au client, où il sera évalué. L' alert appel, alors que l' foo variable n'est pas utilisé n'importe où.

Tous les code PHP est exécuté sur le serveur avant que le client même le début de l'exécution du JavaScript. Il n'y a pas de code PHP à gauche dans la réponse que JavaScript peut interagir avec.

Pour appeler un code PHP, le client devra envoyer une nouvelle requête HTTP au serveur. Cela peut se produire en utilisant une des trois méthodes possibles:

  1. Un lien, ce qui provoque le chargement d'une nouvelle page.
  2. La soumission d'un formulaire qui envoie des données au serveur et charge une nouvelle page.
  3. Un AJAX demande, qui est un code Javascript technique pour en faire régulièrement une requête HTTP au serveur (comme le 1. et 2. volonté), mais sans quitter la page en cours.

Voici une question qui expose ces méthode plus en détail

Vous pouvez également utiliser du JavaScript pour que le navigateur ouvre une nouvelle page à l'aide d' window.location ou soumettre un formulaire, l'émulation de possibilités 1. et 2.

185voto

NullPoiиteя Points 23754

Pour déterminer pourquoi PHP code ne fonctionne pas en JavaScript code que nous avons besoin de comprendre ce qui est côté client et côté serveur de la langue et de la façon dont ils travaillent

Langages côté serveur (PHP, etc.): Ils récupérer des documents à partir de bases de données, maintenir l'état sur les apatrides HTTP connexion, et de faire beaucoup de choses qui nécessitent de sécurité. hey résident sur le serveur, ces programmes n'ont jamais de leur code source exposés à l'utilisateur

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

donc, vous pouvez facilement voir que le côté serveur de la langue de la poignée de la requête HTTP et de processus, et comme @deceze dit que PHP est exécuté sur le serveur et les sorties HTML et peut-être un code JavaScript qui est envoyé comme réponse pour le client, le code HTML est interprété et le JavaScript est exécuté

tandis qu'à l'autre côté Client Côté de la Langue (comme JavaScript) Résider sur le navigateur et les exécuter dans le navigateur , le script côté Client se réfère généralement à la classe de programmes d'ordinateur sur le web qui sont exécutés côté client, par le navigateur web de l'utilisateur, plutôt que du côté serveur.

JavaScript est visible pour l'utilisateur et peut être facilement modifié donc pour la sécurité des choses qu'on ne doit pas relayer sur JavaScript

Donc, lorsque vous prenez un HTTP de la requête sur le serveur que Le serveur lit d'abord soigneusement le fichier PHP pour voir si il y a des tâches qui doivent être exécutées, et envoyer la réponse à côté client et, de nouveau, comme @deceze dit *une Fois que PHP a fini de la transmission de la réponse, le script se termine et il ne se passera rien sur le serveur jusqu'à ce qu'un nouveau HTTP demande.*

Graphical representation

Source de l'Image

Alors maintenant, que puis-je faire si j'ai besoin d'appeler le PHP? Cela dépend de comment vous devez le faire: soit par le rechargement de la page, ou en utilisant un appel AJAX.

  1. Vous pouvez le faire par le rechargement de la page et envoyer HTTP demande
  2. vous pouvez faire appel AJAX avec JavaScript et cela ne nécessite pas de rechargement de page

Bonne Lecture:

  1. Wikipédia : le script côté Serveur
  2. Wikipédia : les scripts côté Client
  3. Madara Uchiha : Différence entre le côté client et côté serveur programmation

38voto

NitayArt Points 136

Votre Javascript exécuter sur le client, pas sur le serveur. Cela signifie qu' foo n'est pas évalué sur le côté serveur et, par conséquent, sa valeur ne peut pas être écrit dans un fichier sur le serveur.

La meilleure façon de penser au sujet de ce processus est que si vous êtes de la génération d'un fichier texte de façon dynamique. Le texte que vous êtes la génération devient le code de l'exécutable une fois que le navigateur interprète. Seulement ce que vous placez entre <?php tags est évalué sur le serveur.

Par le chemin, de prendre l'habitude de l'incorporation aléatoire des morceaux de PHP logique en HTML ou en Javascript peut entraîner sérieusement compliquée code. Je parle par expérience douloureuse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X