Site Web en PHP pour présenter des photos https://superflux.antopie.org
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

214 linhas
5.8KB

  1. <?php require "debut.inc.php"; ?>
  2. <?php
  3. function creerMiniature($cheminComplet, $adresseImage, $nomImage) {
  4. if (!file_exists($cheminComplet . "/400/" . $nomImage)) {
  5. $image = imagecreatefromjpeg($adresseImage);
  6. $dimensions = getimagesize($adresseImage);
  7. $nouvHauteur = ((400 * $dimensions[1]) / $dimensions[0]);
  8. $imageSrt = imagecreatetruecolor(400, $nouvHauteur);
  9. imagecopyresampled($imageSrt, $image, 0, 0, 0, 0, 400, $nouvHauteur, $dimensions[0], $dimensions[1]);
  10. imagejpeg($imageSrt, $cheminComplet . "/400/" . $nomImage);
  11. imagedestroy($imageSrt);
  12. imagedestroy($image);
  13. }
  14. if (!file_exists($cheminComplet . "/800/" . $nomImage)) {
  15. $image = imagecreatefromjpeg($adresseImage);
  16. $dimensions = getimagesize($adresseImage);
  17. $nouvHauteur = ((800 * $dimensions[1]) / $dimensions[0]);
  18. $imageSrt = imagecreatetruecolor(800, $nouvHauteur);
  19. imagecopyresampled($imageSrt, $image, 0, 0, 0, 0, 800, $nouvHauteur, $dimensions[0], $dimensions[1]);
  20. imagejpeg($imageSrt, $cheminComplet . "/800/" . $nomImage);
  21. imagedestroy($imageSrt);
  22. imagedestroy($image);
  23. }
  24. }
  25. ?>
  26. <main>
  27. <section class="gallerie">
  28. <?php if (preg_match("#\.\.#", $_GET['chemin'])) {
  29. exit("Par sécurité, .. ne peut être utilisé dans un chemin");
  30. } else {
  31. $cheminComplet = "catalogue/" . $_GET['chemin'] . "";
  32. if (!file_exists($cheminComplet . "/400")) {
  33. mkdir($cheminComplet . "/400");
  34. }
  35. if (!file_exists($cheminComplet . "/800")) {
  36. mkdir($cheminComplet . "/800");
  37. }
  38. if (!file_exists($cheminComplet . "/comms")) {
  39. mkdir($cheminComplet . "/comms");
  40. }
  41. $listeElements = new DirectoryIterator($cheminComplet);
  42. $nbElementsAffiches = 0;
  43. foreach($listeElements as $listeElements) {
  44. if ((!$listeElements->isDot()) AND ($listeElements->getFilename() !== "400") AND ($listeElements->getFilename() !== "800") AND ($listeElements->getFilename() !== "comms")) { // Ignore les éléments "." et ".." ainsi que les dossiers d'images redimensionnées
  45. $adresseImage = $cheminComplet . "/" . $listeElements->getFilename();
  46. if (is_dir($adresseImage)) { ?>
  47. <div class="element dossier">
  48. <a href="index.php?chemin=<?php if (!empty($_GET['chemin'])) {
  49. echo $_GET['chemin'] . "/" . $listeElements->getFilename();
  50. } else {
  51. echo $listeElements->getFilename();
  52. }
  53. ?>">
  54. <img src="<?php echo $cheminComplet . "/" . $listeElements->getFilename() . "/400/index.jpg"; ?>">
  55. <div class="nomElementDossier"><?php echo $listeElements->getFilename(); ?></div>
  56. </a>
  57. </div>
  58. <?php
  59. } else if (is_file($adresseImage)) {
  60. creerMiniature($cheminComplet, $adresseImage, $listeElements->getFilename())
  61. ?>
  62. <div class="element image<?php
  63. $dimensions = getimagesize($adresseImage);
  64. if ($dimensions[0] > $dimensions[1]) {
  65. echo " paysage";
  66. } else {
  67. echo " portrait";
  68. }
  69. ?>">
  70. <a href="<?php echo $cheminComplet . "/" . $listeElements->getFilename(); ?>" data-title="Image créée par Cécile Chevallier et diffusée sous CC BY-SA 4.0." data-lightbox="<?php echo $listeElements->getFilename(); ?>">
  71. <img src="<?php
  72. if ($dimensions[0] > $dimensions[1]) {
  73. echo $cheminComplet . "/800/" . $listeElements->getFilename();
  74. } else {
  75. echo $cheminComplet . "/400/" . $listeElements->getFilename();
  76. }
  77. ?>" alt=""/>
  78. </a>
  79. </div>
  80. <?php
  81. } else {
  82. echo $cheminComplet . $listeElements->getFilename();
  83. echo "ERREUR PHP : L'élément n'est ni un fichier ni un dossier !";
  84. }
  85. ?>
  86. <?php
  87. $nbElementsAffiches++;
  88. } } } ?>
  89. </section>
  90. <section id="zoneCommentaires">
  91. <?php
  92. if (isset($_POST['commentaire']) AND isset($_POST['pseudo'])) {
  93. if ((strlen($_POST['commentaire']) <= 1000) AND (strlen($_POST['pseudo']) <= 100)) {
  94. if (strtolower($_POST['captcha']) == "huit" OR $_POST['captcha'] == 8) {
  95. $i = 0;
  96. while (file_exists($cheminComplet . "/comms/commentaire" . $i)) {
  97. $i++;
  98. }
  99. $fichier = htmlspecialchars($_POST['pseudo']) . "\n" . htmlspecialchars($_POST['commentaire']);
  100. file_put_contents($cheminComplet . "/comms/commentaire" . $i, $fichier);
  101. } else {
  102. echo "Erreur : Captcha invalide !";
  103. }
  104. } else {
  105. echo "ERREUR : Le message fait plus de 1 000 caractères ou le pseudo fait plus de 100 caractères !";
  106. }
  107. }
  108. ?>
  109. <?php
  110. $j = 0;
  111. while (file_exists($cheminComplet . "/comms/commentaire" . $j)) { ?>
  112. <div class="commentaire">
  113. <?php
  114. $lignesCommentaire = file($cheminComplet . "/comms/commentaire" . $j);
  115. foreach($lignesCommentaire as $ln => $ligneCommentaire) {
  116. echo "<span class='ln" . $ln . "'>" . $ligneCommentaire . "</span>";
  117. ?>
  118. <br>
  119. <?php
  120. }
  121. ?>
  122. </div>
  123. <?php
  124. $j++;
  125. }
  126. ?>
  127. <form method="POST" action="index.php?chemin=<?= $_GET['chemin'] ?>">
  128. <br>
  129. <label for="pseudo">Votre pseudo :</label>
  130. <br>
  131. <input id="pseudo" required="" type="text" title="100 caractères maximum" maxlength="100" name="pseudo" placeholder="Pseudo" />
  132. <br>
  133. <label for="commentaire">Votre commentaire :</label>
  134. <br>
  135. <textarea id="commentaire" required="" title="1 000 caractères maximum" maxlength="1000" name="commentaire" style="width:85%;" placeholder="Votre message" rows="6"></textarea>
  136. <br>
  137. <label for="captcha">Combien font cinq et trois ?</label>
  138. <br>
  139. <input id="captcha" required="" type="text" name="captcha" />
  140. <br>
  141. <input type="submit" value="Publier" />
  142. </form>
  143. </section>
  144. </main>
  145. <?php require "fin.inc.php"; ?>