# Langage serveur

Un langage serveur, ou plus précisément un langage de script côté serveur (de l'anglais : server-side scripting) est un langage de programmation mis en œuvre sur un serveur HTTP pour produire une page Web dynamique. L'utilisation d'un langage serveur, nécessaire pour utiliser une base de données, est indispensable pour la majorité des scripts complexes. Un langage serveur est interprété par un logiciel situé sur un serveur, contrairement à la partie client, interprétée sur l'ordinateur du visiteur.
L'avantage d'un langage serveur est qu'il permet d'adapter le site à l'utilisateur d'après ses besoins, ses autorisations ou d'autres informations provenant d'une base de données, tout cela sans nécessiter le support d'une technologie supplémentaire par le client

## Fonctionnement

Lorsqu'une page Web statique est consultée par un visiteur, le serveur HTTP se contente de fournir le contenu du fichier demandé. C'est ensuite au navigateur du client d'interpréter le code reçu, constitué généralement d'XHTML ou d'HTML, de CSS, voire de JavaScript et d'images (png, jpeg ou gif).
Dans le cas d'une page utilisant un langage serveur, le serveur HTTP fait interpréter la page avant de retourner le résultat de cette interprétation au client. Par exemple, si une page en PHP comprend la ligne <?php echo date("d/m/Y"); ?>, le serveur HTTP fournit à l'interpréteur PHP la page, lequel remplace alors cette ligne par la date du jour, puis la redonne au serveur HTTP qui la transmet au client. Ainsi, le code source de la page telle qu'il est visible par le visiteur n'a aucune trace de langage serveur.
Un langage serveur peut par ailleurs interagir avec une base de données, cela permettant de stocker des données en vue d'un affichage ou d'une modification ultérieure. Par exemple, la page que vous êtes en train de lire est contenue dans la base de données des serveurs de Wikipédia.

### Exemple

On veut afficher la date sur une page web.
| * | Langage serveur (PHP) | Langage client (JavaScript) |
| Code source de la page | Nous sommes le <?php echo date('j/m/Y'); ?> | <script type="text/javascript"> today = new Date; document.write("Nous sommes le ", today.getDate ,"/", today.getMonth+1 ,"/", today.getFullYear); </script> |
| Page créée | Nous sommes le 1/10/2024 | <script type="text/javascript"> today = new Date; document.write("Nous sommes le ", today.getDate ,"/", today.getMonth+1 ,"/", today.getFullYear); </script> |
| Résultat dans le navigateur | Nous sommes le 1/10/2024 | Nous sommes le 1/10/2024 |
Le code en langage serveur a été interprété avant le code en langage client. Par contre, pour l'utilisateur, les deux langages donnent exactement le même résultat, si toutefois le client supporte et a activé le JavaScript.

## Liste de langages serveurs

| Appellation courante | Signification | Délimiteurs | Particularités |
| PHP | PHP Hypertext PreProcessor | <?php et ?> | est sous licence PHP |
| ASP | Active Server Pages | <% et %> | créé par Microsoft |
| CGI | Common Gateway Interface | aucun | à venir |
| JSP | Java Server Pages | | |
| Ruby | | aucun | est sous licence ruby |
| Python (langage) | | aucun | Licence libre: Python Software Foundation License |
| Node.js | | | |