Réponse acceptée !
Bon... Je suis dans un bon jour, une bonne semaine, alors... explications.
PHP est un langage de script. Le moteur de PHP permet de générer du texte (essentiellement). Du texte comme du HTML (le plus courant : une page web). Mais un fichier JS, CSS, XML, c'est aussi du texte.
Il faut juste faire abstraction de l'extension du fichier. Ce qui importe, c'est le contenu, pas le contenant. Le navigateur n'en a absolument rien à faire de l'extension du fichier. Si tu lui dis "Tiens, prends ça, c'est un fichier .bidule, mais je t'assure que c'est une feuille de style", le navigateur, bête et méchant, va te croire sur parole. Idem si le fichier est un .php et que tu lui dis "Ecrase, c'est pas un php, c'est du javascript". Le navigateur va le passer en l'état au moteur de javascript, lui, il s'en fiche que ça marche ou pas, c'est le moteur de JS qui s'en charge.
Donc... Tu fais un fichier .php comme les autres, dans lequel tu fais tout ce qu'il faut pour obtenir les valeurs qui te conviennent. Tu prépares un script JavaScript dans une chaîne de caractères, par exemple :
Code PHP :
<?php
session_start();
$js = 'alert("Bonjour '.$_SESSION['user_id'].'");';
?>
Au lieu d'afficher $js simplement avec un echo (c'est un script autonome, il ne sera pas "affiché" à l'écran, mais envoyé au navigateur), juste avant, tu dis au navigateur de quoi il s'agit :
Code PHP :
<?php
session_start();
$js = 'alert("Bonjour '.$_SESSION['user_id'].'");';
// C'est là qu'on dit au navigateur ce qu'on lui envoit :
header('Content-type: text/javascript');
// Eventuellement, si ton fichier est encodé en UTF8 :
// header('Content-type: text/javascript; charset=utf-8');
// Tu peux aussi (c'est une bonne idée) lui dire combien de caractères ça fait, ce que tu lui envoies :
header('Content-length: '.strlen($js));
// Ensuite, tu peux envoyer le contenu du script :
echo $js;
// Et c'est tout
?>
Dans ton code HTML, en supposant que tu aies appelé ce fichier javascript.php (ahahah) il suffira d'appeler le script comme ça :
Code HTML :
<script type="text/javascript" src="javascript.php"></script>
Et pis c'est tout.
--
Neige
Souvent la réponse à votre question se trouve dans la
doc. Commencez par là ;)