Domaine public 🅭

CMS minimal
ecrit avec VI

[ /  ^ < ]

PHP Hypertext Preprocessor

programmes exécutés par le serveur web

trucs       29/09/2022
autotéléchargement       07/02/2019
arborescence       29/05/2018
graphe       12/03/2019
version PHP       23/10/2018

# des trus super connus mais utiles
<?php die("on s'arrête là, var = " . $variable); ?> // debug
<?php phpinfo(); ?>

# dans des fichiers php integrés pour être sur de recuperer le resultat
# il ne faut pas fermer le php
<?php var_dump($_SESSION['download']);

<?php
## astuce pour rendre téléchargeable le code d'une page PHP
## ce paragraphe doit absolument se trouver dans le bloc PGP en tete de page avant tout code HTML

	$file=getcwd().'/'.basename($_SERVER['PHP_SELF']);
	if ($_SERVER['QUERY_STRING'] == "telecharger") {
	    header('Content-Description: File Transfer');
	    header('Content-Type: application/octet-stream');
	    header('Content-Disposition: attachment; filename="'.basename($file).'"');
	    header('Expires: 0');
	    header('Cache-Control: must-revalidate');
	    header('Pragma: public');
	    header('Content-Length: ' . filesize($file));
	    readfile($file);
	    exit;
	}
?>
## fin de paragraphe


#
#
# et mettre quelque part dans la page un objet clicable ( comme ici en haut à droite )

<?php echo '<a href="'.$_SERVER['PHP_SELF'].'?telecharger">'; ?>
telecharger la page
</a>

<?php
# affiche des liens vers les éléments de l'arborescence sous un repertoire jusqu'à un nombre N de nivaux
# pour eviter de boucler si l'arborescence est vérolée
MAX=10;
function explore($rep,$N) {
   global MAX;
   if ($N > 0) {
	 $liste=scandir (".");
	 natcasesort($liste);
	 foreach ($liste as $fichier) {
	    if ($fichier != "." && $fichier != "..") {
		if ($N % 2 == 0) $fond="yellow"; else $fond="lime";
		echo "<table cellspacing=10 cellpadding=10><tr><td valign=top bgcolor=$fond><a href=\"$rep/$fichier\">$fichier</a>";
		if (is_dir($fichier)) {
			$PROFONDEUR = 1 + $MAX - $N;
			echo "<BR>§". $PROFONDEUR;
			echo "<td bgcolor=$fond>";
			if (chdir($fichier)) {
				explore($rep."/".$fichier,$N - 1);
				chdir("..");
			}
		}
		echo "</table>\n";
	    }
	}
   }
}


# en second le nombre max de niveaux pour éviter de boucler si l'arborescence est vérolée
explore(".",$MAX);
?>

<?php
# affiche un graphe evec la commande système dot de GraphViz
### ATTENTION la commande 'base64' et la bibliothèque GraphViz doivent être installées sur le système

$type = "png";
$chaine = "digraph G {";
# DANGER si on met de la saisie ici, risque de piratage
$chaine = $chaine . "a->b->d a->c";
$chaine =  $chaine . "}";
echo "<img src=\"data:image/$type;base64,\n";
echo exec("echo \"$chaine\" | dot -T$type | base64 -w 0");
# l'option -w 0 sert à tout mettre sur une ligne, sinon exec ne récupère que la dernière
echo "\" alt=\"graphe\" />";
?>



# problèmes de convertion

il arrive que certains systèmes ne gèrent pas tous les formats de fichier
il faut utiliser la fonction "convert" d'"ImageMagick"
pour forcer la sortie
dot -Teps | convert - png:- | base64 -w 0

# la version de PHP courante : $_SERVER['PHP_SELF']

ƒraηcois✉memoρersο.ƒr