Mes php : 
On devait utiliser son propre ordinateur comme serveur en installant par exemple easyphp pour mettre au point les programmes php avant de les installer sur le serveur de son hébergeur. Un script php très simple , qu'on peut installer par exemple sous le nom evaluphp.php permet de tester les instructions php directement chez l'hebergeur : 

<html>
<body>
<?php
eval(stripslashes($_POST['phpme']));
?>
<form method=post action="#">
    <textarea rows="25" cols="90" name="phpme"><?php echo stripslashes($_POST['phpme']); ?></textarea>
    <input type="submit"/>
</form>
</body>
</html>

Sur le serveur d'ifrance le script original trouvé sur le net fonctionne, sur le serveur alice nous avons du le modifier comme suit :
(probablement car les paramètres ne s'appellent plus par $POST chez alice.)
<html>
<head></head>
<body>
<! ce fichier s'appelle evalk.php >
<?php
#$s=eval(stripslashes($_POST['phpme']));
$s=$_POST['phpme'];
$s=stripslashes($phpme);
$s=eval($s);
echo $s;
?>
<form method=post action="evalk.php">
  <textarea rows="15" cols="60" name="phpme">
  </textarea>
 <input type="submit"/>
</form>
</body>
</html> 

Pour classer les fichiers par ordre de dates avec leurs permissions (owner, group, all) :
(0 aucune, 1execution, 2 écriture,3 =1+2, 4=lecture, 5=4+1, 6=4+2, 7=4+2+1)
exemple : 0644, le propriétaire peut lire et écrire, les autres lire seulement.
0700, le propriétaire peut lire, écrire, executer, les autres rien.
Pour changer ces permissions : chmod("nom.ext",0777); par exemple
supprimer le fichier : unlink("nom.ext");
le copier : copy("nom.ext", "copie.ext");

     #  $repertoire = opendir("./images");
$repertoire = opendir("./");
  while ($entree = readdir($repertoire)) {
    if ($entree != "." && $entree != "..")
#$tFichiers[] = filemtime("./images/".$entree)."+".$entree;
$tFichiers[] = filemtime("./".$entree)."+".$entree;
  }
  closedir($repertoire);
  rsort($tFichiers);
  for ($cpt = 0; $cpt < sizeof($tFichiers); $cpt++) {
    $tVals = explode("+", $tFichiers[$cpt]);
    echo "[".date("Y-m-d H:i",$tVals[0])."] <B>".$tVals[1]."</B>";
#echo Fileperms($tVals[1]);echo "<br>n";
$a=Fileperms($tVals[1]);$a=decoct($a);echo $a;echo"<br>";
  }     

Le programme evalk.php est donc très utile pour la mise au point de ses scripts php.Par précaution lui choisir 
un nom secret pour éviter l'intervention de personnes inconnues sur le site et en reserver l'usage au propriétaire..

Pour envoyer un fichier depuis son ordinateur vers son serveur on devait utiliser un "client ftp" ou l'adresse 
ftp://utilisateur:motdepasse@login et faire des copier coller , peu pratique.
Il est plus simple de mettre sur son serveur un fichier send.html qui permet de parcourir le disque dur :

<html>
<! ce fichier s'appelle sendk.html  et il appelle le fichier sendk.php>
<! Il permet au visiteur de choisir un fichier sur son disque >
<! afin d'en déposer une copie  sur le site en gardant le même nom >
<! à condition que sa taille soit inférieure à 500 ko >
<! en conservant son type d'estension mime >
<body>
<o1><li>entrer nom ou parcourir</li>
<li> si affiché charger </li>
</o1>
<div align="center"><br>
<form enctype="multipart/form-data"
action="sendk.php" method="Post">
<input type="hidden" name="MAX_FILE_Size" value="500000">
<input type="file" name="pix" size="60">
<^><input type="submit" name="Upload" value="charger">
</form>
</div>
</body></html>

et un fichier sendk.php qui effectue le transfert en conservant le nom et l'extension :

<?php
# ce fichier se nomme sendk.php
# il est appelé par le formulaire de sendk.html
# pour envoyer un fichier depuis le disque du visiteur vers le site
$tp= $HTTP_POST_FILES['pix']['tmp_name'];
$tt= $HTTP_POST_FILES['pix']['type'];
$tn= $HTTP_POST_FILES['pix']['name']; #22
$ts= $HTTP_POST_FILES['pix']['size'];
$su=strrchr($tn,".");
chmod(0644,$tn); # modifier les permissions selon usage du fichier
if ($tp == "none") {echo "echec fichier dépasse 500 ko ";exit();}
# if (!ereg("image",$tt)){echo "echec fichier non image";exit();}
move_uploaded_file($tp,$tn);
echo " chargement correct  du fichier nommé  : ";echo $tn;
echo " de taille : ";echo $ts;
echo " octets <br> sur le serveur sous le nom <b>";echo $tn; echo"</b>";
?>

Le fichier evalk, les fichiers sendk.php et sendk.html doivent rester inconnus du public (sinon il aurait accès au site).
Leur choisir un nom secret connu du seul propriétaire du site.
Leur donner les permissions  0600 (ou au besoin 0700) pour bloquer les permissions au public..
Une variante adaptée au téléchargement de fichiers divers par le public est donné en radiofilocose.php : 

<html><body>
<?php
# saisie de phrase sur mini.txt
 $br="<br>"; #$msg=$_POST["msg"]; 
#recupère le message du formulaire         
 if(!empty($msg)) {  $msgs=$msg; $msg=stripslashes($msgs); }
# permet d'écire les +
 $d1=date("d\àH\hi");  #formate la date
 $f=file("mini.txt"); $file=fopen("mini.txt","w+"); 
# ouvre ou crée le fichier mini.txt 
 $e=0; $c=count($f);if ($c>15) { $e=1; } 
# limite à 15 messages stockés   
 for ($a=$e; $a<$c; $a++) {if (strlen($f[$a])>2) {fwrite($file,$f[$a]); }}
# recopie 14 derniers messages
 if(!empty($msg)) {fwrite($file,"$d1 $msg\n");} #ajoute le nouveau
 for ($a=$e; $a<$c; $a++) {echo($br); echo ($f[$a]); }
# affiche les 14 derniers msg à l'écran
 if (!empty($msg)) {echo ($br); echo ("$d1 $msg\n");}
# affiche le dernier envoyé
 fclose($file); # ferme le fichier mini.txt
# chargement de fichiers et liste sur minim.txt
if(!empty($HTTP_POST_FILES['pix'])) {
$tp= $HTTP_POST_FILES['pix']['tmp_name'];
$tt= $HTTP_POST_FILES['pix']['type'];
$tn= $HTTP_POST_FILES['pix']['name']; 
$ts= $HTTP_POST_FILES['pix']['size'];
$su=strrchr($tn,".");
if ($tp == "none") {echo "echec fichier dépasse 500 ko ";exit();} #10
# contrôle de type des fichiers  
$tyfi="non autorisé car extension ".$su;
 if( ereg("image",$tt) or ereg("audio",$tt) or ereg("video",tt) 
or ereg("text",tt) ) {$tyfi="autorisé";} 
 if($su==".ps"){$tyfi="autorisé";}
 if($su==".pdf"){$tyfi="autorisé";}
 if($su==".txt"){$tyfi="autorisé";}
 if($su==".rtf"){$tyfi="autorisé";} 
 if($su==".htm"){$tyfi="autorisé";}
 if($su==".html"){$tyfi="autorisé";} 
 if($su==".doc"){$tyfi="autorisé";}   
# contrôle de dimensions d'images #20
if (ereg("image",$tt)){#o1 
$imsiz=getimagesize($tp);$la=$imsiz[0];$ha=$imsiz[1];$mim=$imsiz['mime'];
echo (" <br> dimensions :".$la."*".$ha." type : ".$mim); 
if ($la>641 or $ha>481) {#o2
echo ("non valide car dimensions ".$la."*".$ha);
echo ("dimensions supérieures à 640*480");
echo(" retailler votre image avec windows paint menu image etirer"); #45
echo ("attributs ou irfanview ou photoshop etc...");
echo ('<a href="radioz1.php"> retour </a> à radioz1'); #31
;exit();
} }#o2 01
echo("fichier de type : ".$tyfi." car ".$su);
 if (!($tyfi=="autorisé")) {exit();}  
$f=file("minim.txt"); $file=fopen("minim.txt","w+");
$n1=$f[0]+1; 
fwrite($file,($n1));#rajoute 1 au premier élément d'indice 0 et l'écrit #40
$c=count($f); # compte le nombre d'éléments #15
# Si au moins deux éléments écrit à la suite à partir du second d'indice 1
# Si déjà 15 éléments écrit à la suite à partir du troisième d'indice 2
# et détruit le fichier qui a pour nom le deuxième élément du tableau
# sans ajouter de rc
if($c>1){
$d=1;if($c>15){$d=2;$nmd=$f[1];unlink(chop($nmd));}
fwrite($file,"\n");
for ($a=$d;$a<$c;$a++){fwrite($file,($f[$a]));} #50
} 
#ecrit à la suite un retour chariot et $n1.$su #20
$nm=$n1.$su;fwrite($file,("\n".$nm));
echo ("<br> on a ecrit nm=".$nm." - ");
move_uploaded_file($tp,$nm);
fclose($file); #ferme le fichier minim.txt 
} 
$ta=file("minim.txt");$c=count($ta);echo "<br>".($ta[0]." fichiers à consulter <br>");
if($c>1) {
for ($i=1;$i<$c;$i++) {echo("<a href=".$ta[$i].' target="blank">'.$ta[$i]."</a> , ");} 
}
?>
<br> Vous êtes bien sur filocause, la radio-chatt-forum de <a href="index.html"> filomatin </a>
<! formulaire de saisie de phrase >
<form action="filocose.php" method="post" >
<input type="text" size="40" name="msg"> 
<input type="submit" value="envoyer-écouter?" >
</form>
<! formulaire de saisie de fichiers >
<form enctype="multipart/form-data"
action="filocose.php" method="Post">
<input type="hidden" name="MAX_FILE_Size" value="500000">
<input type="file" name="pix" size="60">
<input type="submit" name="Upload" value="charger">
</form>
Pour ajouter une <b>phrase </b>utiliser le <b>formulaire du haut</b>, le message est envoyé à la première frappe sur la touche enter(rc) ou en cliquant sur le bouton "envoyer-écouter" (ce bouton permet de mettre à jour l'affichage en cas de présence simultanée de plusieurs "chatteurs"). Pour ajouter un fichier de <b>moins de 500 ko</b> de type <b>image</b> (dans ce cas les dimensions doivent en outre être inférieures à <b>640 * 480 pixels</b>  - les corriger si nécessaire avec le menu image -attributs ou étirer- de paint de windows par exemple), ou également de type <b>audio, video, texte, postscript</b> (.ps), <b>pdf</b> (acrobat reader),<b> htm ou html</b>, cliquer sur le bouton parcourir, sélectionner le fichier sur votre  disque dur en cliquant sur son nom puis sur ouvrir, et lorsque son chemin est affiché dans la fenêtre du bas cliquer sur charger.Pour plus d'explications voir <a href="aidfilco.html"> l'aide </a>.
</body></html> 

Ce programme permet de discuter au moyen de phrases ou de fichiers qui se chargent à la suite les uns des autres, le dernier effacant le premier afin de limiter l'encombrement à un nombre choisi à l'avance.  

Pour sauvegarder un fichier (en faire une copie) on peut faire un script qu'on nomme par exemple savefile.php:
<?
#copie un fichier pour le sauvegarder
 copy("visidate.txt","visidates.txt");
?>

Pour partager une bibliothèque d'images ou autres fichiers avec le public , imsiz.htlm et imsiz.php
ainsi que le programme de censure censure.html appelant censure.php
<html>
<! ce fichier s'appelle imsiz.html  et il appelle le fichier sendfile.php>
<! Il permet au visiteur de choisir un fichier sur son disque >
<! afin d'en déposer une copie  sur le site en gardant le même nom >
<! à condition que sa taille soit inférieure à 500 ko >
<! que son type mime soit image>
<! que sa taille soit inférieure à 640*480 pixels>
<! en conservant son type d'extension mime >
<body>
Cette bibliothèque d'images est à votre disposition pour envoyer
des <b>images</b> depuis votre disque dur vers les forums<br>
Votre image doit faire moins de <b>500 ko</b> et moins de <b>640x480 pixels</b>.<br>
Si elle est trop grande vous pouvez réduire sa taille en la compressant,
c'est à dire en la convertissant par exemple de bmp à jpg 
avec le menu enregister sous de paint de windows <b>xp</b>, ou avec le freeware
irfanview téléchargeable gratuitement (chercher avec google) 
et en la coupant, ou la réduisant. Windows avec les outils
étirer et attributs du menu image de paint ainsi que
les outils fournis avec les appareils photo numériques, 
photoshop d'adobee etc le permettent également.<p>
Vous obtiendrez une <b> ligne à copier </b> de la forme [img]http....[/img]
à insérer dans votre message sur le forum<br>
à l'endroit ou vous voulez afficher votre image ; 
Pour ce faire il est pratique d'utiliser le copier coller en utilisant les boutons gauche et droit de la souris.<br> 
L'espace ifrance étant limité à 100 Mo, lorsque le nombre d'images atteindra 200 les 100 premières seront effacées des forums où elles auront été affichées.<br>
Cliquez sur parcourir pour explorer votre disque dur, puis sur charger après avoir sélectionné votre image. Bonne chance !<br>
<div align="center"><br>
<form enctype="multipart/form-data"
action="imsiz.php" method="Post">
<input type="hidden" name="MAX_FILE_Size" value="500000">
<input type="file" name="pix" size="60">
<^><input type="submit" name="Upload" value="charger">
</form>
</div>
Vous pouvez ouvrir un site d'hébergement d'images analogue sur <a href="http://wwww.ifrance.com"> ifrance </a> (ou tout autre hébergeur interprétant le code php ) et recopier le code de ce fichier html (afficher la source par votre navigateur) et du fichier php à nommer <a href="cimsiz.txt" > <b>imsiz.php</b> </a>. Un fichier imsiz.txt sera créé pour mémoriser le numéro du dernier fichier image téléchargé (si nécessaire créer ce fichier avec 0 (chiffre zéro) en première ligne).Vous aurez juste à remplacer dans  la 12 ième ligne avant la fin qui définit $im= , la partie http://leparcmeudon.ifrance.com par l'url de votre site d'hébergement.<br> Toute image représentant une personne, un bien privé, une reproduction soumise à copyright,un text portant atteinte à la morale ou aux bonnes moeurs,aux religions ou aux personnes, ainsi en général que toute image illégale ou risquant de porter préjudice à autrui sera éliminée et au besoin l'hébergement fermé.Chaque responsable de forum peut très facilement trouver un hébergeur php tel qu'ifrance et recopier le code php ou s'en inspirer pour adapter sa censure à la nature de son forum.
Les programmes de censure ont une copie accessible en <a href="cverif.txt"> cverif</a>, <a href="csee.txt"> csee </a> et <a href="csup.txt"> csup </a>.
</body></html>

<?php
# ce fichier se nomme imsiz.php, sa copie cimsiz.txt
# il est appelé par le formulaire de imsiz.html
# il incrémente le fichier imsiz.txt
# pour envoyer une image depuis le disque du visiteur vers le site
$tp= $HTTP_POST_FILES['pix']['tmp_name'];
$tt= $HTTP_POST_FILES['pix']['type'];
$tn= $HTTP_POST_FILES['pix']['name']; 
$ts= $HTTP_POST_FILES['pix']['size'];
$su=strrchr($tn,"."); #10
if ($tp == "none") {echo "echec fichier dépasse 500 ko ";exit();}
if (!ereg("image",$tt)){echo "echec fichier non image";exit();}
$imsiz=getimagesize($tp);
$la=$imsiz[0];
$ha=$imsiz[1];
$mim=$imsiz['mime'];
echo ($la.$ha.$mim); #20
if ($la>641 or $ha>481) {echo ("dimensions supérieures à 640*480
 retailler votre image avec windows paint menu image etirer 
attributs ou irfanview ou photoshop etc...");exit();}
$file=fopen("imsiz.txt","r+");
$c=fgets($file,11);$c++;fseek($file,0);fputs($file,$c);fclose($file);
$ims=$c.$su;
$ims=$c;
$im="[img]http://leparcmeudon.ifrance.com/".$ims."[/img]";
move_uploaded_file($tp,$ims);
echo " chargement correct  du fichier nommé  : ";echo $tn;
echo " de taille : ";echo $ts;
echo " octets <br> sur le serveur sous le nom <b>";echo $ims; echo"</b>";
echo "<br>";
echo " ligne ci-dessous à recopier dans votre message sur le forum <br>";
echo $im;
?>

<html><body>
<! ce programme s'appelle censure.html il fait appel à affiche.php et à supprime.php
Entrer le numéro de l'image dans la fenêtre pour la voir ou la supprimer <br>actualiser en recliquant sur l'adresse du navigateur<br>
<form action="affiche.php" method="post" >
<input type="text" size="3" name="msg"> 
<input type="submit" value="voir" >
</form>
<form action="supprime.php" method="post" >
<input type="text" size="3" name="kk"> 
<input type="submit" value="censurer" >
</form></body></html>

  <?
# ce programme s'appelle affiche.php, affiche l'image de numéro msg 
echo "<img src=".$msg.">";
$msg++;
?>

<?
# ce programme s'appelle supprime.php, efface le fichier de numéro kk
unlink($kk);
<?

J'ai utilisé le compteur à l'ip suivant qui est appelé en javascript :
<script language="javascript" src="compteur.php?affich=1" > </script>

<?
/**********************************************
******** Compteur de visiteur à l'IP **********
********** Programmé par ThE_DoG **************
************ http://loadation.tk ***************
Pour afficher et faire fonctionner le compteur, mettez cette ligne de code :
<script language="javascript" src="compteur.php?affich=1"></script>
(enlevez ?affich=1 pour ne pas afficher le compteur et le faire simplement fonctionner)
-----Cette page doit s'appeler compteur.php----
***********************************************/

if(!file_exists("compteur.txt")){
$fp=fopen("compteur.txt","w");
fputs($fp,"1");
fclose($fp);
}
if(!is_dir("compteur")){
mkdir("compteur",0777);
$fp=fopen("compteur/.htaccess","w");
fputs($fp,"deny from all");
fclose($fp);
}

if(!$HTTP_X_FORWARDED_FOR) $ip = $REMOTE_ADDR;
else $ip = $HTTP_X_FORWARDED_FOR;

$dir=opendir("compteur");
while($file=readdir($dir)){
if($file!="index.html" && $file!="." && $file!=".." && $file!=".htaccess"){
$temps=file("compteur/$file");
$temps=trim($temps[0]);
if(time()>($temps+(60*60*24))){
@unlink("compteur/$file");
}
}
}

$n=file("compteur.txt");
$n=trim($n[0]);

if(!file_exists("compteur/$ip")){
$n++;
$fp=fopen("compteur.txt","w");
fputs($fp,$n);
fclose($fp);
$fp=fopen("compteur/$ip","w");
fputs($fp,time());
fclose($fp);
}

if($affich) echo "document.write(\"$n\");";

?>

mais je préfère souvent me contenter du plus simple (compteur d'ouvertures de la page) :
(de ma composition) 

<?
$file=fopen("visidate.txt","r+");$d=date(" d\ m\ Y\  à H\hi");
$c=fgets($file,11);$c++;fseek($file,0);fputs($file,$c);fclose($file);
echo ($c."<i> visites du 14 01 2006 au </i>".$d);
?>

Pour rendre accessible un code php aux visiteurs en faire une copie au format rtf :
l'ouvrir avec notepad, selectionner tout, copier ,ouvir wordpad et coller avant d'enregistrer.

Mon regret actuel : 
----- ne pas pouvoir saisir des entrées au clavier par l'entrée standard stdin
en testant php -v j'ai pour réponse cgi, chercher php-sapi-name etc ...Le passage des paramètres
par les formulaires html me semble lourd.(demande plus de connaissances du php et cgi) ,
------  ne pas savoir faire des temporisations en php.

Mes Javascripts préférés :
Mon regret :
---- ne pas avoir réussi à maitriser l'instruction de temporisation settimeout.
---- que javascript me réponde internet 4 alors que j'ai internet 6.

Pour réaliser un diaporama animé :
<html>
<head>
<title>Diaporama minuté</title>
<script language = "JavaScript">
<!-- masquer
var diapositives = new Array();
diapositives[0] = new Image();
diapositives[0].src = "bpivot1.jpg";
diapositives[1] = new Image();
diapositives[1].src = "bpivot3.jpg";
diapositives[2] = new Image();
diapositives[2].src = "bpivot2.jpg";
diapositives[3] = new Image();
diapositives[3].src = "bpivot4.jpg";
diapositives[4] = new Image();
diapositives[4].src = "bpivot5.jpg";
diapositives[5] = new Image();
diapositives[5].src = "bpivot.jpg";
var attente;
var index = 0;
function rotationImage()
{
   window.document.mon_image.src = diapositives[index].src;
   index++;
   if (index >= diapositives.length) 
    {
        index = 0;
    }
   attente = setTimeout("rotationImage();", 10000);
}
// afficher -->
</script>
</head>

<body onLoad="rotationImage();">
Interview de Maria de Medeiros par Bernard Pivot. Fr3, 2005 <br>
<img name = "mon_image" src="bpivot.jpg">
<form>
<input type = "button" value = "Lancer" onClick = "clearTimeout(attente); rotationImage();">
<input type = "button" value = "Stopper" onClick = "clearTimeout(attente);">
le diaporama animé (1 image = 10 secondes).
</form>
<br>Le fichier son (mp3 - 240 ko - 1 min) se charge automatiquement à l'ouverture de la page et boucle deux fois, cliquer sur actualiser dans la barre du navigateur pour le réécouter.
<bgsound src="mariadm.mp3" loop="2" target="blank">
<! a href="premiere/mardlibros.mp3"  lancer le son /a>
</body>
</html>
<!-- Cyberestat -->
<script language="javascript">
<!--
	CM_CLIENT = "tiscali";
	CM_SECTION1 = "PagesPersoTiscali";
	CM_RUBRIQUE = "general";
// -->
</script>
<script language="javascript" src="http://js.cybermonitor.com/tiscali.js"></script>
<noscript><img src="http://stat3.cybermonitor.com/tiscali_v?R=general&S=total;PagesPersoTiscali"></noscript>
<!-- /Cyberestat -->

On remarque à la fin le script alice de statistiques: si on retirait les balises noscript de l'avant-dernière ligne on afficherait vraisemblablement le total des visites sous forme d'une image.
On peut également mixer son et image en html simple (voir le source de mulmedia.htm)
ou passer par windows movie maker pour élaborer des fichiers video au format wmv, à partir de fichiers images et sons
et en utilisant la table de montage.

: