En plus des langages client que nous venons d’évoquer (HTML, CSS et JavaScript), il y a une quantité importante de langages serveur.
Quelle est la différence ? Pourquoi faut-il encore plus de langages ?
Les langages serveur sont, comme leur nom l’indique, gérés par les serveurs. Les clients n’y touchent pas. Leur rôle est un peu différent :
Les langages client décrivent comment le site web doit s’afficher.
Les langages serveur décrivent comment le site web doit se comporter.
Subtil, mais important !
Avec un langage client, je peux dire « Un menu doit s’afficher à gauche de mon site web ».
Avec un langage serveur, je peux dire « Le menu ne doit s’afficher que si cette personne a créé un compte sur mon site ».
De ce fait, tous les langages communiquent entre eux pour fournir un résultat lisible côté client !
Quelques langages serveur
Les langages serveur sont nombreux. En voici quelques exemples :
PHP
Java (rien à voir avec JavaScript, attention !)
Python
C#
...
Il n’y a pas de meilleur langage. On me pose souvent la question et je réponds toujours la même chose : prenez le langage que vous voulez, celui sur lequel un ami peut vous aider peut-être.
On trouve tous ces langages parmi les sites web les plus connus. On trouve par exemple du PHP chez Facebook et OpenClassrooms, du Java sur le site de votre banque, du Python et du Java chez Google, etc.
Les frameworks backend
Comme pour le frontend, les frameworks pour le backend sont des boîtes à outils qui se révèlent de plus en plus indispensables aujourd’hui. De la même façon que l’on n’envisage plus de creuser un trou « à la main » (on préfère utiliser une pelleteuse !), on n’envisage plus trop de construire un site web à la main. Alors, on se fait aider un peu par un framework !
Les frameworks se rapportent à des langages. On peut citer :
Pour PHP : Symfony, Zend...
Pour Java : Java EE (ou J2EE)
Pour Python : Django
Pour C# : ASP .NET
Inutile de les retenir ! Je souhaite juste que vous connaissiez le concept de framework à ce stade.
Comment un langage serveur génère-t-il une page ?
Le rôle d’un langage serveur est de générer une page web. On peut résumer l’interaction entre le client et le serveur comme ceci :
Le client demande une page au serveur.
Le serveur génère la page (à l’aide du langage serveur).
Le serveur envoie la page (sous forme de code HTML et CSS).
Par exemple, si vous utilisez PHP comme langage serveur, et HTML et CSS comme langages client, voici à quoi ressemblera le schéma :
Utilisation des langages
Comme vous le voyez, PHP (le langage serveur) est du côté du serveur. Son rôle est de générer une page HTML et CSS, qui sera ensuite envoyée au client.
Un client ne sait lire que du HTML et du CSS (ainsi que du JavaScript). Il ne sait pas lire un langage serveur comme PHP.
À quoi ressemble un langage serveur ?
Prenons un langage serveur comme PHP. Voici un exemple de code en PHP qui vérifie que le fichier envoyé via un formulaire est bien une image et que celle-ci n’est pas trop grosse :
<?php
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
{
if ($_FILES['monfichier']['size'] <= 1000000)
{
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees))
{
// Afficher le message ici
}
}
}
?>
Là encore, ne paniquez pas si vous ne comprenez pas, c’est normal ! Un code en langage serveur est souvent plus compliqué à comprendre pour un débutant qu’un code en langage client. Et son résultat ne se voit pas directement sur le site, comme le code frontend !
À vous de jouer !
Avec cette activité, prouvez que vous êtes capables de reconnaître le rôle des langages serveur en analysant une situation très concrète : la connexion au site OpenClassrooms.
Je vous ai listé ci-dessous des développements qu’on a dû effectuer pour créer cette fonctionnalité. Votre mission est de déterminer, pour chacun de ces développements, lesquels ont été programmés avec les langages serveur et lesquels avec des langages client. C’est parti !
Créer un champ texte « Adresse mail ou nom d’utilisateur »
Autoriser la connexion des utilisateurs ayant un mot de passe respectant les critères de sécurité
Faire apparaître le bouton « SE CONNECTER » en violet
Créer le bouton à cocher « Se souvenir de moi »
Souligner en violet le lien « Mot de passe oublié ? »
Autoriser les utilisateurs ayant une adresse mail correcte à se connecter
Générer un tableau de bord personnalisé pour les utilisateurs se connectant
Créer un lien vers la page « Inscrivez-vous gratuitement »
Vérifiez votre travail
Langage client :
Créer un champ texte « Adresse mail ou nom d’utilisateur »
Faire apparaître le bouton « SE CONNECTER » en violet
Créer le bouton à cocher « Se souvenir de moi »
Souligner en violet le lien « Mot de passe oublié ? »
Créer un lien vers la page « Inscrivez-vous gratuitement »
Langage serveur :
Autoriser la connexion des utilisateurs ayant un mot de passe respectant les critères de sécurité
Autoriser les utilisateurs ayant une adresse mail correcte à se connecter
Générer la page “Tableau de bord » pour les utilisateurs se connectant
Vous l’aurez compris : toute la partie apparente du site est codée avec les langages client, comme html, alors que tout ce qui décrit le comportement du site relève du langage serveur.
En résumé
PHP, Java, Ruby et Python sont des langages serveur. Ils sont utilisés par l’ordinateur qui distribue le site web, autrement dit le serveur. Leur rôle est de décrire le comportement du site web.
Si les langages client sont tous obligatoires et incontournables, il n’y a en revanche pas de meilleur langage côté serveur. Choisissez celui qui vous parle le plus !
Les langages de serveur ont souvent des interactions avec les bases de données. Dans le chapitre suivant, nous allons prendre le temps de les explorer. Allons-y !