Un des côtés les moins connus de JavaScrip externe est la possibilité de référencer un fichier PHP au lieu du fichier .js habituel. Au premier abord une telle notion semble étrange, voire impossible; après tout, qui d'entre nous n'est pas familier avec cette barrière qui sépare les scripts côté serveur, des scripts côté client, et qui interdit toute interaction entre les deux? Eh bien, il s'avère que des échanges superficiels sont autorisés. En utilisant JavaScript externe, vous verrez comment PHP et JavaScript peuvent collaborer d'une façon que vous n'auriez pas cru possible, et pour le plus grand bénéfice de JavaScript.
.01
.02
|
|
<script type="text/javascript" src="myscript.php"></script>
|
où "myscript.php" est un chemin soit absolu soit relatif à un script PHP, lieu de l'habituel fichier .js. Vous pouvez même transmettre des paramètres vers un script PHP en utilisant la chaîne URL:
.01
.02
|
|
<script type="text/javascript" src="myscript.php?id=3&name=george"></script>
|
Votre script PHP peut ensuite accéder à ces paramètres en utilisant la variable globale $HTTP_GET_VARS[].
Arrivé à ce point, vous vous demandez probablement:
"Alors, quel est le piège?" Eh bien, il n'y a pas vraiment de piège, juste quelques limitations. Puisque nous apelons le script PHP indirectement et via JavaScript, la sortie finale du script PHP doit être valide JavaScript. Pensez-y comme à un fichier .js dynamique, délimité par les mêmes limites qu’un fichier .js ordinaire.
Un script PHP normal dans une page PHP peut sortir du HTML brut et modifier le code source de la page. Le JavaScript ne peut évidemment pas faire cela, mais ne vous inquiétez pas, il y a beaucoup d’autre choses que javascript peut faire de génial.
Voici un exemple de base d'un script PHP ip.php appelé par JavaScript en externe pour faire quelque chose que JavaScript ne peut pas faire seul:
.01
.02
.03
.04
.05
.06
.07
.08
.09
|
|
<?
//"ip.php" example- display user IP address on any page
Header("content-type: application/x-javascript");
$serverIP=$_SERVER['REMOTE_ADDR'];
echo "document.write(\"Your IP address is: <b>" . $serverIP . "</b>\")";
?>
Et une fois appelé par JavaScript externe:
<script type="text/javascript" src="ip.php"></script>
|
Dans ce qui précède, nous avons un script PHP normal qui écrit l'adresse IP du visiteur, quand référencée, en utilisant JavaScript externes, ceci avec deux détails importants:
1. Un en-tête JavaScript est envoyé dès le début pour informer la page que de notre script PHP va sortir un fichier JavaScript.
2. Puisque la sortie finale de notre script PHP doit être un fichier .js valide, quelles que soit les sorties PHP, elles doivent être conformes à la syntaxe JavaScript valide. Ainsi, pour afficher l'adresse IP du point de vue du langage JavaScript, la fonction écho ci-dessus comprend "document.write ()" dans le cadre du contenu à retourner vers la page.
Notez la façon dont je n'ai pas géré la balise de script JavaScript elle-même (<script > </ script >), comme à l'intérieur d'un fichier .js ordinaire. Ceci n'est ni nécessaire, ni valable.
La capacité de référencer un script PHP dans votre JavaScript externe peut être très utile! Cela signifie que votre JavaScript a désormais accès à des informations qui étaient réservées exclusivement au côté serveur, que ce soit le temps serveur, l'adresse IP du visiteur, une liste de tous les fichiers dans un répertoire, ou des informations provenant d’une base de données mySQL . De plus, même des pages HTML ordinaires peuvent utiliser ces informations, car tout ce qui est nécessaire sur ces pages est du JavaScript qui, à son tour référence le script PHP désiré sur votre serveur ou au-delà.
Vous voulez afficher l'adresse IP du visiteur sur une page html statique, ou toutes pages html? L'exemple ci-dessus fait déjà cela.