<!doctype html> <html> <head> <title>balisage</title> <meta charset="utf-8"/> <style> div.cube { width:50%; float:left; } textarea { width:100%; height:400px; overflow:auto; } input,select { box-shadow: 0px 0px 5px #7A8960; } input:hover,select:hover { box-shadow: 0px 0px 5px #FFEDAE; } </style> <?php error_reporting(E_ALL ^ E_NOTICE); ini_set('error_reporting', E_ALL); $exempleHTML = (isset($_POST['a'])) ? htmlentities($_POST['a']) : '<!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <form action="index.php" method="post"> <input type="text" name="test" value="ok" required/> </form> </body> </html>'; ?> </head> <body> <div style="width:100%;"> <div class="cube"> <form name="frm" action="balisag.php" method="post"> <textarea name="a"><?php echo $exempleHTML; ?></textarea><br/> <select name="langage"> <option value="web">Web (HTML/CSS/JS/PHP)</option> <option value="ADA">ADA</option> <option value="ApacheConf">Apache Configuration file</option> <option value="ASM">Assembleur</option> <option value="Basic">Basic</option> <option value="Batch">Batch file</option> <option value="C">C</option> <option value="C#">C#</option> <option value="Fortran">Fortran</option> <option value="Java">Java</option> <option value="Lua">Lua</option> <option value="Pascal">Pascal</option> <option value="Perl">Perl</option> <option value="Python">Python</option> <option value="Shell">Shell</option> <option value="SQL">SQL</option> </select> <select name="encoding"> <option value="utf-8">UTF-8</option> <option value="iso-8859-1">ISO-8859-1</option> <option value="latin5">Latin5</option> </select> <input type="submit" value="Baliser"/> </form> </div> <div class="cube"> <textarea id="copie"></textarea> </div> <a href="index.html" style="float:right">voir la source</a> <div style="clear:both;"></div> <div id="balisage"><?php /* Lance le CGI (qui envoie sur la sortie standard), puis supprime fichier à baliser En local les .exe sont dans le dossier bin. En prod ils sont compilés ELF, dans un dossier bin qui comporte un fichier .htaccess autorisant l'exécution des programmes .cgi <Location "cgi"> Options +ExecCGI SetHandler cgi-script AddHandler cgi-script .cgi .exe </Location> Comme droits ils ont 504, 705 pour le dossier, et 404 pour le htaccess */ // Validation du formulaire $langage = $enc = ''; if(isset($_POST['a']) && $_POST['a'] != '' && isset($_POST['langage']) && $_POST['langage'] != '') { $langage = $_POST['langage']; $f1 = "1.$langage"; file_put_contents($f1, $_POST['a']); // (l'exe prend utf-8 par défaut) $enc = ($_POST['encoding'] != "utf-8") ? '-enc '.$_POST['encoding'] : ''; $chem = $_SERVER['DOCUMENT_ROOT'].'/programming/C/balisageHTML'; $ext = (getenv('SERVER_NAME')=='localhost') ? 'exe':'cgi'; $cmd = $chem.'/bin/'.$langage."versHTML.$ext $enc $f1"; system($cmd); //echo "cmd:[$cmd]"; @unlink($f1); } ?></div> <script> var copie = document.getElementById('copie'); <?php if($langage) echo "document.frm.langage.value='$langage'; // L'exe de balisage remplit le div#balisage. Javascript transfère // son contenu dans le textera de copie. // Or pour faire apparaitre < correctement il FAUT encoder le &! var a = document.getElementById('balisage').innerHTML; var text = document.createTextNode(a); var div = document.createElement('div'); // méthode du div div.appendChild(text); copie.innerHTML = div.innerHTML; //copie.focus(); //copie.select();"; else echo "document.frm.a.focus(); document.frm.a.select();"; if($enc) echo "document.frm.encoding.value='{$_POST['encoding']}';"; ?> </script> </div> </body> </html>
145 lignes, 4136 octets. Balisé en 0.92 ms Vitesse : 4515 octets/ms