Ce cours a pour but de proposer une introduction au développement d'applications web et pour smartphones. Notamment, il présente des techniques et langages de développement actuels, que ce soit en backend ou en frontend. L'accent sera mis en particulier sur les points suivants :
L'objectif des TPs est de développer un forum permettant aux étudiants et aux enseignants d'échanger sur des sujets relatifs aux cours proposés dans le département informatique. Ce forum reproduira l'aspect de la capture d'écran ci-dessous pour la partie « application web » :
À titre d'entraînement, vous pouvez y accéder avec les logins/passwords disponible sur AMeTICE via l'URL : https://christophe-gonzales.pedaweb.univ-amu.fr/extranet/forum/fr-FR. Vous développerez votre forum de la manière suivante :
La capture d'écran ci-dessous montre le forum pour la partie « application mobile » :
Ce forum est accessible en démonstration sur l'URL : https://christophe-gonzales.pedaweb.univ-amu.fr/extranet/forum-ionic/fr-FR.
Le forum sera réalisé en 3 étapes :
Pour pouvoir remplir ces objectifs, il sera nécessaire d'avoir à disposition une base de données MySQL. Pour la demander à la DOSI, suivez les instructions suivantes :
Afin de travailler les TPs sur votre ordinateur, vous avez besoin d'installer quelques logiciels et packages :
@angular/cli
et @ionic/cli
Concrètement, cela amène aux procédures d'installation suivantes :
c:\wamp64
), la racine des
fichiers de votre serveur web se trouve dans c:\wamp64\www
, comme le montre
la figure ci-dessous. Sur cette image, le répertoire contient un fichier
mobile.php
(que j'ai rajouté : il n'existe pas quand vous installez wamp).
Celui-ci sera accessible dans votre browser à l'URL
http://localhost/mobile.php
.
public_html
ailleurs que dans le répertoire c:\wamp64\www
,
le plus simple est de créer un nouveau « virtual host »
sur un port différent du port 80. Pour cela, dans
les icônes sur la droite de votre barre des tâche, cliquez droit sur l'icône verte
du WAMP manager, puis cliquez sur « outils » et, enfin, sur
« ajouter un Listen port à Apache »
et choisissez le port 8000.
public_html
à la racine et j'ai placé dedans le
fichier mobile.php
. Cela nous donne :
Le fichier mobile.php
est alors accessible de votre
browser (et donc d'Angular) à partir de l'URL
http://localhost:8000/public_html/mobile.php
comme le
montre l'image ci-dessous :
npm
: dans un powershell, tapez la commande
npm list
ou npm.cmd list
. Cela devrait
fonctionner.
npm.cmd install -g @angular/cli
npm.cmd install -g @ionic/cli
ng
.
ng
.
apache2
,
mysql-server
, mysql-client
,
php
et phpY.x-cli
, où Y.x est la version de php sur
votre distribution (par exemple, sur Kubuntu 21.10, il s'agit de la version 8.0,
donc du package php8.0-cli).sudo apt install nom_package
/var/www/html
. Si vous souhaitez modifier
cela, éditez en tant que root
le fichier
/etc/apache2/apache2.conf
et modifiez la ligne :<Directory /var/www/html/>
/home/apache
. Pourquoi faire cela ? Parce que /var se
trouve en principe sur la même partition que /, votre système
d'exploitation. Si vous avez besoin, à un moment donné, de
réinstaller ce système d'exploitation et que vous avez laissé vos
fichier web sur la même partition, vous les perdrez. En revanche,
/home est, en principe, une partition différente de la partition
système. Donc vos fichiers web de /home/apache
ne sont
pas impactés par une réinstallation du système d'exploitation (notez
que ce que je dis pour Linux est valable également pour Windows et
MacOS : il n'est pas judicieux de sauvegarder ses fichiers web (ou
n'importe quel fichier de données) sur la partition système)./etc/apache2/sites-available/000-default.conf
:
ici, c'est le DocumentRoot qu'il faut modifier en lui indiquant votre
nouveau répertoire racine.sudo systemctl restart apache2
mobile.html
, vous devez pouvoir le
visualiser dans votre browser dans l'URL
http://localhost/mobile.html
sudo a2enmod phpY.x
sudo npm install -g @angular/cli
sudo npm install -g @ionic/cli
ng
.
ng
.
session_start()
n'a pas été exécutée. La
deuxième est plus subtile : vous avez appelé votre backend avec
l'adresse 127.0.0.1
pour l'authentification et avec
localhost
pour la page des cours (ou inversement). Il
peut alors arriver, dans certains systèmes d'exploitation, que
localhost
ne soit pas associé à l'adresse 127.0.0.1
.
Dans ce cas, votre serveur web écoute les 2 adresses mais considère
que, pour les sessions, il s'agit de 2 serveurs différents et, donc,
la session initiée lors de l'authentification n'est pas la même que
celle utilisée pour la page des cours. Afin de pallier ce problème,
dans tous vos scripts, utilisez le même serveur :
127.0.0.1
. La dernière raison qui peut empêcher vos cookies
d'être utilisés correctement est l'utilisation du protocole http plutôt
que https. Le protocole http n'est pas sécurisé (toutes les informations
circulent sans chiffrement sur le réseau) et ne devrait pas être
utilisé d'une manière générale dans les applications web. Mais il est plus
simple à mettre en place que le https et, si l'on ne travaille qu'en local
sur sa machine, c'est parfaitement suffisant. Une règle de sécurité à laquelle
se conforment certains browsers comme chrome interdit la transmission de
cookies sur des connexions non sécurisée (donc, ici, en http) sauf si l'url
du serveur est précisément 127.0.0.1
. Or, même si
localhost
est un alias de 127.0.0.1
, ce n'est pas
la même chaîne de caractère et, donc, ces browsers ne permettent pas la
transmission de cookies sur des urls telles que http://localhost/...
et il faut donc vraiment utiliser des urls http://127.0.0.1/...
config.js
que vous
avez bien spécifié les caractéristiques (host, etc.) de votre serveur
MySQL. Le cas échéant, il se peut que votre installation de MySQL ait
placé ce serveur sur un port différent du port 3306 (port standard de
MySQL). Cela peut arriver avec les installations de *AMP.
Regardez donc sur quel port se trouve votre serveur. Rajoutez dans le
fichier config.js
, après la ligne mysqlPassword:
,
une ligne :
mysqlPort: numéro_port,
et dans le fichier mysqlConnect.js
, rajoutez une
virgule à la fin de la ligne database:
et rajoutez
ensuite :
port: config.mysqlPort