|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
GESTIONNAIRE D'IMAGES POUR INTERFACE D'ADMIN
Information sur la source
Description
Je l'utilise sur mon site pour que les admins puissent envoyer leur propres images pour les news... Le bout de code correspondant à la page d'ajout de news est en commentaire à la fin du code ! Il gérè: -La liste des images -L'envoi (upload) d'images -La copie depuis un autre site (via une requête HTTP) -La supression (avec confirmation) -La sélection avec aperçu depuis une autre page Mais bon, rien ne vous empêche de l'utiliser pour autre chose que des images... Mais dans ce cas, il faudrait revoir le code de réception http.
Source
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <HTML LANG="fr">
- <HEAD>
- <TITLE>Console d'administration: Images</TITLE>
- <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">
- <META HTTP-EQUIV="content-style-type" CONTENT="text/css">
- <META HTTP-EQUIV="content-script-type" CONTENT="text/javascript">
- <META NAME="author" CONTENT="Elektordi">
- </HEAD>
- <body>
- <h1 align="center">Console d'administration: Images</h1>
-
- <?
-
- $script_name = "gestion_images.php";
- $repertoire = "images/";
-
- if($mode=="copy") // Copier une image depuis une URL
- {
-
- echo "<h2>Copie d'image</h2>\n";
-
- $er=0;
- if(!preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/', $url, $url_ary)) $er=1;
- if(empty($url_ary[4])) $er=1;
-
- if($er==1) {
- ?><form name="form1" method="post" action="<? echo $script_name; ?>">
- <p><b><font color="red">URL incomplète:</font></b>
- <input name="url" type="text" id="url" size="100" value="<? echo $url; ?>">
- <input type="submit" name="Submit" value="Copier">
- <input name="mode" type="hidden" id="mode" value="copy">
- <a href="<? echo $script_name; ?>">Annuler</a></p>
- </form>
- <?
- }
- else
- {
- $maxsize = 100000;
-
- $base_filename = substr($url_ary[4],strrpos($url_ary[4],"/")+1);
-
- $base_get = '/' . $url_ary[4];
- $port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;
-
- if($base_filename=="") die("<h2>Impossible de télécharger l'image...</h2><p>Erreur de récupération du nom.</p></body></html>");
-
- if ( !($fsock = fsockopen($url_ary[2], $port, $errno, $errstr)) )
- {
- die("<h2>Impossible de télécharger l'image...</h2><p>Pas de connexion.</p></body></html>");
- }
-
- fputs($fsock, "GET $base_get HTTP/1.1\r\n");
- fputs($fsock, "Host: " . $url_ary[2] . "\r\n");
- fputs($fsock, "Accept-Language: fr\r\n");
- fputs($fsock, "Accept-Encoding: none\r\n");
- fputs($fsock, "User-Agent: PHP\r\n");
- fputs($fsock, "Connection: close\r\n\r\n");
-
- unset($data);
- while( !feof($fsock) )
- {
- $data .= fread($fsock, $maxsize);
- }
- fclose($fsock);
-
- if (!preg_match('#Content-Length\: ([0-9]+)[^ /][\s]+#i', $data, $file_data1) || !preg_match('#Content-Type\: image/[x\-]*([a-z]+)[\s]+#i', $data, $file_data2))
- {
- die("<h2>Impossible de télécharger l'image...</h2><p>Aucune donnée.</p></body></html>");
- }
-
- $filesize = $file_data1[1];
- $filetype = $file_data2[1];
-
- if ( !$error && $filesize > 0 && $filesize < $maxsize )
- {
- $data = substr($data, strlen($data) - $filesize, $filesize);
-
- $filename = $repertoire.$base_filename;
-
- if(file_exists($filename)) echo "<p>Le fichier de destination ".$base_filename." existe déjà !</p>";
- else
- {
- $fptr = fopen($filename, 'wb');
- $bytes_written = fwrite($fptr, $data, $filesize);
- fclose($fptr);
-
- if ( $bytes_written != $filesize )
- {
- unlink($tmp_filename);
- die("<h2>Impossible de télécharger l'image...</h2><p>Echec d'écriture.</p></body></html>");
- }
- echo "<p>".$base_filename." enregistré avec succès ! <img src='".$repertoire.$base_filename."'></p>";
- }
- }
- else
- {
- die("<h2>Impossible de télécharger l'image...</h2><p>Fichier trop gros.</p></body></html>");
- }
- }
- }
-
- if($mode=="upload") // Envoyer une image
- {
-
- echo "<h2>Upload d'image</h2>\n";
-
- $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
- $taille_max = 100000;
- // vérifications
- if( !in_array( strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)), $extensions_ok) )
- {
- $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
- }
- elseif( file_exists($_FILES['file']['tmp_name'])
- and filesize($_FILES['file']['tmp_name']) > $taille_max)
- {
- $erreur = 'Votre fichier doit faire moins de 500Ko !';
- }
- // copie du fichier
- if(!isset($erreur))
- {
- $dest_fichier = basename($_FILES['file']['name']);
- // formatage nom fichier
- // enlever les accents
- $dest_fichier = strtr($dest_fichier,
- 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
- 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
- // remplacer les caracteres autres que lettres, chiffres et point par _
- $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
- //vérif
- if(file_exists($repertoire.$dest_fichier)) echo "<p>Le fichier de destination existe déjà !</p>";
- else {
- // copie du fichier
- move_uploaded_file($_FILES['file']['tmp_name'], $repertoire.$dest_fichier);
- echo "<p>".$dest_fichier." envoyé avec succès ! <img src='".$repertoire.$dest_fichier."'></p>";
- }
- }
- else{
- echo "<p>".$erreur."</p>";
- }
-
- }
-
- if($mode=="del") // Supprimer une image
- {
- if(!isset($file)) die("<h2>Aucun nom de fichier !</h2></body></html>");
-
- if(!file_exists($repertoire.$file)) die("<h2>Fichier inexistant !</h2></body></html>");
-
- if(isset($confirm))
- {
- if($confirm+10<time()) die("<h2>L'action a expirée...</h2></body></html>");
-
- unlink($repertoire.$file);
-
- echo "<h2>Entrée supprimée !</h2>";
- }
- else
- {
- echo "<h2>Supression d'une image ?</h2>\n";
- echo "<p>Vous êtes sur le point de supprimer l'image '".$file."' qui ressemble à ça: <img src='".$repertoire.$file."'><br>";
- echo "<b>Etes-vous sûr de vouloir continuer ?<br><font size=\"5\">";
- echo "<a href='".$script_name."?mode=del&file=".$file."&confirm=".time()."'><font color='red'>Oui</font></a> - ";
- echo "<a href='".$script_name."'><font color='green'>Non</font></a></font></b></p>\n";
- }
- }
- ?>
-
- <h2>Ajout d'images</h2>
- <form name="form1" method="post" action="<? echo $script_name; ?>">
- <p>Copier une image depuis une URL:
- <input name="url" type="text" id="url" value="http://www.clonk.de/news/news_???.gif" size="100">
- <input type="submit" name="Submit" value="Copier">
- <input name="mode" type="hidden" id="mode" value="copy">
- </p>
- </form>
- <form action="<? echo $script_name; ?>" method="post" enctype="multipart/form-data" name="form2">
- <p>Envoyer une image:
- <input name="file" type="file" size="100">
- <input type="submit" name="Submit" value="Envoyer">
- <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
- <input name="mode" type="hidden" id="mode" value="upload">
- </p>
- </form>
- <h2>Liste des images</h2>
- <?
- $dossier=opendir($repertoire);
- while ($fichier = readdir($dossier)) {
- if(is_dir($fichier)) continue;
- $s="";
- if($fichier==$val) $s=" selected";
- echo "<p>".$fichier." = <img src='".$repertoire.$fichier."'> [ <a href='".$script_name."?mode=del&file=".$fichier."'>Supprimer</a> ]</p>";
- }
-
- ?>
- <h2>Fini ?</h2>
- <p>Alors on retourne à l'<a href="admin.php">index de l'administration</a>... </p>
- </body>
- </html>
-
- <?
- /*
- Voici le code à mettre dans une autre page pour sélectionner l'image:
-
- <?
- $repertoire="images/";
-
- function put_imgselector($name, $val)
- {
- echo "<select name='".$name."' onchange=\"preview('".$name."');\">\n";
- echo "<option value=''>---AUCUNE---</option>\n";
- $dossier=opendir($repertoire);
- while ($fichier = readdir($dossier)) {
- if(is_dir($fichier)) continue;
- $s="";
- if($fichier==$val) $s=" selected";
- echo "<option value='".$fichier."'".$s.">".$fichier."</option>\n";
- }
- echo "</select> <img id='".$name."_prv' src='".$repertoire.$val."' border='1'>\n";
- }
-
- ?>
-
- <script language="JavaScript" type="text/JavaScript">
- function preview(name)
- {
- var img;
- img = document.getElementById(name).value;
- document.getElementById(name+"_prv").src="<? echo $repertoire; ?>"+img;
- }
- </script>
-
- ---Code formulaire---
- Image : <? put_imgselector("img_g", $img_g); ?>
- ---Fin formulaire---
- */
-
- // Voila ! C'est tout...
-
- //Elektordi
- ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML LANG="fr">
<HEAD>
<TITLE>Console d'administration: Images</TITLE>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="content-style-type" CONTENT="text/css">
<META HTTP-EQUIV="content-script-type" CONTENT="text/javascript">
<META NAME="author" CONTENT="Elektordi">
</HEAD>
<body>
<h1 align="center">Console d'administration: Images</h1>
<?
$script_name = "gestion_images.php";
$repertoire = "images/";
if($mode=="copy") // Copier une image depuis une URL
{
echo "<h2>Copie d'image</h2>\n";
$er=0;
if(!preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/', $url, $url_ary)) $er=1;
if(empty($url_ary[4])) $er=1;
if($er==1) {
?><form name="form1" method="post" action="<? echo $script_name; ?>">
<p><b><font color="red">URL incomplète:</font></b>
<input name="url" type="text" id="url" size="100" value="<? echo $url; ?>">
<input type="submit" name="Submit" value="Copier">
<input name="mode" type="hidden" id="mode" value="copy">
<a href="<? echo $script_name; ?>">Annuler</a></p>
</form>
<?
}
else
{
$maxsize = 100000;
$base_filename = substr($url_ary[4],strrpos($url_ary[4],"/")+1);
$base_get = '/' . $url_ary[4];
$port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;
if($base_filename=="") die("<h2>Impossible de télécharger l'image...</h2><p>Erreur de récupération du nom.</p></body></html>");
if ( !($fsock = fsockopen($url_ary[2], $port, $errno, $errstr)) )
{
die("<h2>Impossible de télécharger l'image...</h2><p>Pas de connexion.</p></body></html>");
}
fputs($fsock, "GET $base_get HTTP/1.1\r\n");
fputs($fsock, "Host: " . $url_ary[2] . "\r\n");
fputs($fsock, "Accept-Language: fr\r\n");
fputs($fsock, "Accept-Encoding: none\r\n");
fputs($fsock, "User-Agent: PHP\r\n");
fputs($fsock, "Connection: close\r\n\r\n");
unset($data);
while( !feof($fsock) )
{
$data .= fread($fsock, $maxsize);
}
fclose($fsock);
if (!preg_match('#Content-Length\: ([0-9]+)[^ /][\s]+#i', $data, $file_data1) || !preg_match('#Content-Type\: image/[x\-]*([a-z]+)[\s]+#i', $data, $file_data2))
{
die("<h2>Impossible de télécharger l'image...</h2><p>Aucune donnée.</p></body></html>");
}
$filesize = $file_data1[1];
$filetype = $file_data2[1];
if ( !$error && $filesize > 0 && $filesize < $maxsize )
{
$data = substr($data, strlen($data) - $filesize, $filesize);
$filename = $repertoire.$base_filename;
if(file_exists($filename)) echo "<p>Le fichier de destination ".$base_filename." existe déjà !</p>";
else
{
$fptr = fopen($filename, 'wb');
$bytes_written = fwrite($fptr, $data, $filesize);
fclose($fptr);
if ( $bytes_written != $filesize )
{
unlink($tmp_filename);
die("<h2>Impossible de télécharger l'image...</h2><p>Echec d'écriture.</p></body></html>");
}
echo "<p>".$base_filename." enregistré avec succès ! <img src='".$repertoire.$base_filename."'></p>";
}
}
else
{
die("<h2>Impossible de télécharger l'image...</h2><p>Fichier trop gros.</p></body></html>");
}
}
}
if($mode=="upload") // Envoyer une image
{
echo "<h2>Upload d'image</h2>\n";
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
// vérifications
if( !in_array( strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)), $extensions_ok) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['file']['tmp_name'])
and filesize($_FILES['file']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['file']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
//vérif
if(file_exists($repertoire.$dest_fichier)) echo "<p>Le fichier de destination existe déjà !</p>";
else {
// copie du fichier
move_uploaded_file($_FILES['file']['tmp_name'], $repertoire.$dest_fichier);
echo "<p>".$dest_fichier." envoyé avec succès ! <img src='".$repertoire.$dest_fichier."'></p>";
}
}
else{
echo "<p>".$erreur."</p>";
}
}
if($mode=="del") // Supprimer une image
{
if(!isset($file)) die("<h2>Aucun nom de fichier !</h2></body></html>");
if(!file_exists($repertoire.$file)) die("<h2>Fichier inexistant !</h2></body></html>");
if(isset($confirm))
{
if($confirm+10<time()) die("<h2>L'action a expirée...</h2></body></html>");
unlink($repertoire.$file);
echo "<h2>Entrée supprimée !</h2>";
}
else
{
echo "<h2>Supression d'une image ?</h2>\n";
echo "<p>Vous êtes sur le point de supprimer l'image '".$file."' qui ressemble à ça: <img src='".$repertoire.$file."'><br>";
echo "<b>Etes-vous sûr de vouloir continuer ?<br><font size=\"5\">";
echo "<a href='".$script_name."?mode=del&file=".$file."&confirm=".time()."'><font color='red'>Oui</font></a> - ";
echo "<a href='".$script_name."'><font color='green'>Non</font></a></font></b></p>\n";
}
}
?>
<h2>Ajout d'images</h2>
<form name="form1" method="post" action="<? echo $script_name; ?>">
<p>Copier une image depuis une URL:
<input name="url" type="text" id="url" value="http://www.clonk.de/news/news_???.gif" size="100">
<input type="submit" name="Submit" value="Copier">
<input name="mode" type="hidden" id="mode" value="copy">
</p>
</form>
<form action="<? echo $script_name; ?>" method="post" enctype="multipart/form-data" name="form2">
<p>Envoyer une image:
<input name="file" type="file" size="100">
<input type="submit" name="Submit" value="Envoyer">
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<input name="mode" type="hidden" id="mode" value="upload">
</p>
</form>
<h2>Liste des images</h2>
<?
$dossier=opendir($repertoire);
while ($fichier = readdir($dossier)) {
if(is_dir($fichier)) continue;
$s="";
if($fichier==$val) $s=" selected";
echo "<p>".$fichier." = <img src='".$repertoire.$fichier."'> [ <a href='".$script_name."?mode=del&file=".$fichier."'>Supprimer</a> ]</p>";
}
?>
<h2>Fini ?</h2>
<p>Alors on retourne à l'<a href="admin.php">index de l'administration</a>... </p>
</body>
</html>
<?
/*
Voici le code à mettre dans une autre page pour sélectionner l'image:
<?
$repertoire="images/";
function put_imgselector($name, $val)
{
echo "<select name='".$name."' onchange=\"preview('".$name."');\">\n";
echo "<option value=''>---AUCUNE---</option>\n";
$dossier=opendir($repertoire);
while ($fichier = readdir($dossier)) {
if(is_dir($fichier)) continue;
$s="";
if($fichier==$val) $s=" selected";
echo "<option value='".$fichier."'".$s.">".$fichier."</option>\n";
}
echo "</select> <img id='".$name."_prv' src='".$repertoire.$val."' border='1'>\n";
}
?>
<script language="JavaScript" type="text/JavaScript">
function preview(name)
{
var img;
img = document.getElementById(name).value;
document.getElementById(name+"_prv").src="<? echo $repertoire; ?>"+img;
}
</script>
---Code formulaire---
Image : <? put_imgselector("img_g", $img_g); ?>
---Fin formulaire---
*/
// Voila ! C'est tout...
//Elektordi
?>
Conclusion
Comme c'est prévu pour une interface d'admin, il n'y a pas de sécuritées ni de vérifications... Pour ce code, je me suis inspiré de -Anciens codes à moi -http://www.phpcs.com/codes/UPLOAD-FICHIERS_31345.aspx -sources de phpbb Pour ce dernier, je remercie celui qui a écrit le script de gestion des avatars car un code de copie d'images/de fichiers avec une URL, c'est rare... (en tout cas y'avait rien sur PHP-CS !) N'hésitez pas à commenter ma source.
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 17 août 2006 00:52:03 :
- Ajout du zip
- 15 novembre 2006 20:08:43 :
- Ajout de strtolower(...) pour éviter le rejet des extensions en majuscules.
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
PB d'envoi d'images dynamiques !!! [ par MangaII ]
Coucou a tous !Bon, voilà mon soucis !Qd on créé un image dynamique en php, avec imagecreate ..., on fini tjs par l'envoyer au navigateur avec imagejp
Gestion des images [ par julemi ]
J'aimerais savoir si il est possible de faire une gestion des images en php et si oui comment ... ???? Merci de votre réponse ...a ++
Gestion de gallerie [ par bricethenetman ]
Slut à tous j'ai besoin d'un script de gestion de gallerie ou au moins une portion de code pour afficher toutes les images se trouvant dans
Navigation [ par FhX ]
Voila, je me suis fait un bout de script pour avoir sur chaque page une navigation du style : Acceuil > Administration > Gestion membres > e
Php : Gestion d'images [ par framic ]
Je fait un script de gestion des image Voila un peut comment est fait le script Je recupère les infos dans l'url Code: if(!isset($_GET['page'])){
téléchargement multiple simultané [ par manouille ]
Bonjour à tous, Après avoir épuré le google et différents sites (dont PHPCS) je me tourne en dernier recours su
téléchargement multiple et simultané [ par manouille ]
Bonjour a tous,Après avoir épuré le google et différents sites (dont PHPCS) je me tourne en dernier recours sur ce forum. J'explique, je dispose d'une
Gestion des images SQL PHP [ par Anus_hurlant ]
Bonjour, Je désire réaliser un site ou l'on peut visiter une galerie d'images stockées sur le serveur. Les clients pourront uploader de
Envoi d'images par un formulaire [ par Al3x_Oo ]
Salut a tous,Je voudrais tout simplement savoir si il est possible d'envoyer plusieurs image en mm temps avec un seul formulaire, mettre plusieur <
Envoi Formulaire ( PHP/Ajax) avec plusieurs champs terminés par l'envoi de 5 images.. [ par amewole ]
Bonjour à vous tous, Après plus d'une semaine de recherche sans solution définitive, je viens vous solliciter pour m'aider et trouver celui qui a dé
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|