problème avec photos

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème avec photos

par webide » 23 sept. 2008, 07:28

j'ais ce message d'erreur:

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/.) is not within the allowed path(s): (d:/www/restaurantmarbella.net/htdocs) in D:\www\restaurantmarbella.net\htdocs\images.class.php on line 19
Comment faire pour que ce D:\ s'enlève

par webide » 21 sept. 2008, 22:04

Merci ça fonctionne par contre j'ais tjrs les messages d'erreur qui apparaissent en plus des photoshttp://www.restaurantmarbella.net/restaurant.php
En ce qui concerne la ligne de code 19, il s'agit de la ligne modifiée
lignes 17 à 21:

Code : Tout sélectionner

if ($pointeur = opendir($this->repertoire)) { while (($fichier = readdir($pointeur)) !== false) { if (is_dir($this->repertoirte . "/" . $fichier) || $fichier=="." || $fichier=="..") continue; $liste[] = $fichier; }

par @rthur » 21 sept. 2008, 21:47

Bonjour,

"." représente le répertoire courant
".." représente le répertoire parent

Par conséquent dans ton script, quand tu listes tes fichiers via un while, il faut que tu ignores "." et "..".
      while (($fichier = readdir($pointeur)) !== false) {
        if (is_dir($this->repertoirte . "/" . $fichier) || $fichier=="." || $fichier=="..") continue;
        $liste[] = $fichier;
      } 
http://fr.php.net/continue


Sinon, regarde du côté de la fonction PHP blob(), elle devrait te permettre d'économiser quelques lignes de code ;)
http://fr.php.net/blob

problème avec photos

par webide » 21 sept. 2008, 20:41

Bonsoir,
J'ais mis en place un système permettant de modifier des images sur un site en passant par une admin seulement voila il y a un drole de problème voyez cela par vous même http://www.restaurantmarbella.net/restaurant.php et lorsque je vais sur l'admin permettant de modifier les photos je selectionne le dossier et dans chaque dossier je trouve un fichier invisible (je pense que c'est ça) appelé . et un autre appelé .., vous pouvez voir cela sur http://www.restaurantmarbella.net/admin_images.php
Voici les 2 fichiers
admin_images.php permettant la modif des images

Code : Tout sélectionner

<?php include("images.class.php"); function getextension($fichier) { $bouts = explode(".", $fichier); $extension = array_pop($bouts); return $extension; } if ($_POST['action'] == "ajouter") { if ($image && !empty($_POST['repertoire']) && !empty($_POST['mot_de_passe'])){ if ($_POST['mot_de_passe'] == "XXX") { if ($_POST['repertoire'] == "resto1" || $_POST['repertoire'] == "resto2" || $_POST['repertoire'] == "resto3" ||$_POST['repertoire'] == "resto4" || $_POST['repertoire'] == "resto5" || $_POST['repertoire'] == "resto6" ||$_POST['repertoire'] == "soiree1" || $_POST['repertoire'] == "soiree2" ||$_POST['repertoire'] == "soiree3" ||$_POST['repertoire'] == "soiree4" ) { $repertoire = $_POST['repertoire']; $extension = strtolower(getextension($image_name)); if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif") { $imag = new images(); $imag->repertoire = $repertoire; if ($imag->ajouter_image($image, $image_name)) echo "<font face=\"Verdana\">Le fichier " . $image_name . " a bien été envoyé.</font>"; else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>"; } else echo "<font face=\"Verdana\">Extension interdite !</font>"; } else echo "<font face=\"Verdana\">Repertoire interdit !</font>"; } else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>"; } else echo "<font face=\"Verdana\">Formulaire incomplet !</font>"; } else if ($_POST['action'] == "supprimer") { if (!empty($_POST['image']) && !empty($_POST['mot_de_passe'])) { if ($_POST['mot_de_passe'] == "XXX") { $extension = strtolower(getextension($image)); if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif" || $extension == "jpeg") { if (@unlink($image)) echo "<font face=\"Verdana\">L'image <b>$image</b> a bien été suprimé !</font>"; else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>"; } else echo "<font face=\"Verdana\">Extension interdite !</font>"; } else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>"; } else echo "<font face=\"Verdana\">Formulaire incomplet !</font>"; } ?> <html> <body> <form action="admin_images.php" method="post"> <input type="hidden" name="action" value="supprimer"> <table> <tr> <td><font face="Verdana">Image à supprimer :</font></td> <td><select name="image"> <option></option> <option value="">+++ resto1 +++</option> <?php $images1 = new images(); $images1->repertoire = "resto1"; $images1->liste_select(); ?> <option value="">+++resto2+++</option> <?php $images2 = new images(); $images2->repertoire = "resto2"; $images2->liste_select(); ?> <option value="">+++ resto3 +++</option> <?php $images3 = new images(); $images3->repertoire = "resto3"; $images3->liste_select(); ?> <option value="">+++ resto4 +++</option> <?php $images4 = new images(); $images4->repertoire = "resto4"; $images4->liste_select(); ?> <option value="">+++resto5+++</option> <?php $images5 = new images(); $images5->repertoire = "resto5"; $images5->liste_select(); ?> <option value="">+++ resto6 +++</option> <?php $images6 = new images(); $images6->repertoire = "resto6"; $images6->liste_select(); ?> <option value="">+++ soiree1 +++</option> <?php $images7 = new images(); $images7->repertoire = "soiree1"; $images7->liste_select(); ?> <option value="">+++ soiree2 +++</option> <?php $images8 = new images(); $images8->repertoire = "soiree2"; $images8->liste_select(); ?> <option value="">+++ soiree3 +++</option> <?php $images9 = new images(); $images9->repertoire = "soiree3"; $images9->liste_select(); ?> <?php $images10 = new images(); $images10->repertoire = "soiree4"; $images10->liste_select(); ?> </select></td> </tr> <tr> <td><font face="Verdana">Mot de passe :</font></td> <td><input type="password" name="mot_de_passe"></td> </tr> <tr> <td><input type="submit" value="Supprimer l'image !" style="color: #FF0000;"></td> </tr> </table> </form> <hr> <form action="admin_images.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="action" value="ajouter"> <table> <tr> <td><font face="Verdana">Repertoire de destination :</font></td> <td><select name="repertoire"> <option></option> <option value="resto1">resto1</option> <option value="resto2">resto2</option> <option value="resto3">resto3</option> <option value="resto4">resto4</option> <option value="resto5">resto5</option> <option value="resto6">resto6</option> <option value="soiree1">soiree1</option> <option value="soiree2">soiree2</option> <option value="soiree3">soiree3</option> <option value="soiree4">soiree4</option> </select></td> </tr> <tr> <td><font face="Verdana">Fichier à envoyer :</font></td> <td><input type="file" name="image"></td> </tr> <tr> <td><font face="Verdana">Mot de passe :</font></td> <td><input type="password" name="mot_de_passe"></td> </tr> <tr> <td><input type="submit" value="Envoyer image"></td> </tr> </table> </form> <hr> <a href="index.php">Retour à l'accueil</a> </body> </html>
et le fichier gérant les photos image.class.php

Code : Tout sélectionner

<?php class images { var $repertoire; var $nb_par_ligne; function ajouter_image($image,$nom) { if (is_dir($this->repertoire)) { if (copy($image, $this->repertoire . "/" . $nom)) return true; else return false; } else return false; } function lister_repertoire() { $liste = array(); if (is_dir($this->repertoire)) { if ($pointeur = opendir($this->repertoire)) { while (($fichier = readdir($pointeur)) !== false) { if (!is_dir($this->repertoirte . "/" . $fichier)) { $liste[] = $fichier; } } closedir($pointeur); return $liste; } else return false; } else return false; } function liste_select() { $liste = $this->lister_repertoire(); for ($i = 0; $i < count($liste); $i++) { echo " <option value=\"$this->repertoire/$liste[$i]\">$liste[$i]</option>\n"; } } function afficher_liste($lien) { $liste = $this->lister_repertoire(); echo "<table summary=\"table d'images\">\n"; for ($i = 0; $i < count($liste); $i++) { $nom = explode(".", $liste[$i]); $nom = str_replace("_", " ", $nom[0]); $nom = str_replace("-", " ", $nom); $nom = strtoupper(substr($nom, 0, 1)) . substr($nom, 1); if (round($i/$this->nb_par_ligne) == ($i/$this->nb_par_ligne)) echo " <tr>\n"; if( isset($lien) && !empty($lien) ) { $lien_avant = '<a href="'.$lien.'">'; $lien_apres = '</a>'; } else { $lien_avant = ''; $lien_apres = ''; } echo " <td align=\"center\">" . $lien_avant . $this->afficher_image($liste[$i]) . $lien_apres ."<br></td>\n"; if (round(($i+1)/$this->nb_par_ligne) == (($i+1)/$this->nb_par_ligne) || ($i+2) > count($liste)) echo " </tr>\n"; } echo "</table>\n"; } function afficher_image($fichier) { return "<img width=\"200px\" src=\"" . $this->repertoire . "/" . $fichier . "\" alt=\"" . $fichier . " - " . round((filesize($this->repertoire. "/" . $fichier)/1024), 2) . " ko\">"; } } ?>
Merci d'avance pour l'aide