Page 1 sur 3
galerie photos
Posté : 20 févr. 2007, 15:18
par webide
Bonjour,
J'ais récupéré un script d'upload permettant de télécharger et d'afficher une galerie photo.
Le problème vient du fait que l'upload echoue systématiquement. Les champs sont pourtant bien renseigné. Si quelqu'un saurait d'ou peut provenir le problème cela m'aiderait beaucoup.
Voici la portion de code
// Récupération du dossier dans lequel le fichier sera uploadé //
$DESTINATION_FOLDER = $_POST["up/"]; //
// Taille maximale de fichier, valeur en bytes //
$MAX_SIZE = 1000000; //
// Récupération de l'url de retour //
$RETURN_LINK = $_SERVER['HTTP_REFERER']; //
// Définition des extensions de fichier autorisées (avec le ".")//
$AUTH_EXT = array(".jpg", ".bmp", ".gif"); //
// ############################################################ //
// Fonction permettant de créer un lien de retour automatique
function createReturnLink(){
global $RETURN_LINK;
echo "<a href='".$RETURN_LINK."'>Retour</a><br>";
}
// Fonction permettant de vérifier si l'extension du fichier est
// autorisée.
function isExtAuthorized($ext){
global $AUTH_EXT;
if(in_array($ext, $AUTH_EXT)){
return true;
}else{
return false;
}
}
// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.
if(!empty($_FILES["file"]["name"])){
// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"] ;
// Nom temporaire sur le serveur:
$nomTemporaire = $_FILES["file"]["tmp_name"] ;
// Type du fichier choisi:
$typeFichier = $_FILES["file"]["type"] ;
// Poids en octets du fichier choisit:
$poidsFichier = $_FILES["file"]["size"] ;
// Poids en Kilo-octets du fichier choisit:
$poidsFichierK = $poidsFichier/1024;
// Pré formatage en affichage avec 0 chiffre après la virgule , donc pas de virgule.
$poidsFichierK = sprintf("%.0f", $poidsFichierK) ;
// Code de l'erreur si jamais il y en a une:
$codeErreur = $_FILES["file"]["error"] ;
// Extension du fichier
$extension = strrchr($nomFichier, ".");
// Si le poids du fichier est de 0 bytes, le fichier est
// invalide (ou le chemin incorrect) => message d'erreur
// sinon, le script continue.
if($poidsFichier <> 0){
// Si la taille du fichier est supérieure à la taille
// maximum spécifiée => message d'erreur
if($poidsFichier < $MAX_SIZE){
// On teste ensuite si le fichier a une extension autorisée
if(isExtAuthorized($extension)){
// Ensuite, on copie le fichier uploadé ou bon nous semble.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
if($uploadOk){
echo "L'upload a réussi !<br><br>";
echo "Nom du Fichier : $nomFichier<br>";
echo "Taille du Fichier : $poidsFichierK Ko<br>";
echo "URL du Fichier : http://www.crazytchat.com/upload/up/<br><br>";
echo "Aperçu:<br><br>";
switch ($extension) { //Tu fais écrire du html par le php
case ".jpeg": echo "<IMG SRC='$nomFichier'>";break;
case ".bmp": echo "<IMG SRC='$nomFichier'>";break;
case ".gif": echo "<IMG SRC='$nomFichier'>";break;
default: echo "<IMG SRC='error/inconnu.gif'>"; }
echo "<br><br>";
echo(createReturnLink());
}else{
echo("L'upload a échoué !<br><br>");
echo(createReturnLink());
}
}else{
echo ("Les fichiers avec l'extension $extension ne peuvent pas être uploadés !<br>");
echo (createReturnLink()."<br>");
}
}else{
$tailleKo = $MAX_SIZE / 100;
echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Le fichier choisi est invalide !<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Vous n'avez pas choisi de fichier !<br>");
echo (createReturnLink()."<br>");
}
?>
Merci d'avance
webide
Posté : 20 févr. 2007, 16:01
par NiCreteNiSoumise
- As tu testé le script en local ou sur ton hébergement?
- Dans le cas où ce serait sur ton hébergement, as tu pensé aux attributs du dossier (CHMOD). Vérifies avant que ton hébergeur le supporte.
Pour plus d'infos :
http://www.creation-de-site.net/dossiers/chmod.php
Posté : 20 févr. 2007, 16:28
par Ryle
As tu un message d'erreur ?
Quels sont les echo qui sont affichés ? dans quels if/else est ce qu'il rentre ?
Je ne sais pas si cela vient de là, mais je trouve pas terrible de mettre un "/" dans un nom d'input : $_POST["up/"];
Par ailleurs, c'est inutile de faire un switch quand tu gères de la même manière chaque valeurs :
switch ($extension) { //Tu fais écrire du html par le php
case ".jpeg": echo "<IMG SRC='$nomFichier'>";break;
case ".bmp": echo "<IMG SRC='$nomFichier'>";break;
case ".gif": echo "<IMG SRC='$nomFichier'>";break;
default: echo "<IMG SRC='error/inconnu.gif'>"; }
if (inArray($AUTH_EXT, $extension)) //Tu fais écrire du html par le php
echo '<IMG SRC="'.$nomFichier.'" />';
else
echo '<IMG SRC="error/inconnu.gif" />';
Posté : 20 févr. 2007, 20:03
par webide
Je le teste sur mon hébergeur. Je peut modifier les chmods dois le faire juste sur le dossier up (ce fichier utilisé pour l'upload se trouve dans le dossier up
Posté : 23 févr. 2007, 13:12
par webide
Maintenant cela fonctionne. Par contre, juste encore une question. Toutes les photos sont envoyées dans le dossier up, comment procéder le plus simplement pour créer des sous dossiers automatiquement (sachant que les personnes téléchargeant les photos doivent le faire avec leur pseudo comme titre des photos et limiter le nombre de photos téléchargeable (12 maxi)
Posté : 06 mars 2007, 21:01
par webide
Comme je débute en php et mysql je ne sais pas trop ou insérer
dans le fichier d'upload
Code : Tout sélectionner
<?php
include"config.php";
include"include/variable.php";
@mysql_connect($serveur, $login, $password)or die ("impossible de se connecter");
mysql_select_db($base)or die ("impossible de se connecter a la base");
$DESTINATION_FOLDER = $_POST["up/"]; //
// Taille maximale de fichier, valeur en bytes //
$MAX_SIZE = 10000000; //
// Récupération de l'url de retour //
$RETURN_LINK = $_SERVER['HTTP_REFERER']; //
// Définition des extensions de fichier autorisées (avec le ".")//
$AUTH_EXT = array(".jpg", ".png", //
".bmp", ".gif"); //
// ############################################################ //
// Fonction permettant de créer un lien de retour automatique
function createReturnLink(){
global $RETURN_LINK;
echo "<a href='".$RETURN_LINK."'>Retour</a><br>";
}
// Fonction permettant de vérifier si l'extension du fichier est
// autorisée.
function isExtAuthorized($ext){
global $AUTH_EXT;
if(in_array($ext, $AUTH_EXT)){
return true;
}else{
return false;
}
}
// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.
if(!empty($_FILES["file"]["name"])){
// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"] ;
// Nom temporaire sur le serveur:
$nomTemporaire = $_FILES["file"]["tmp_name"] ;
// Type du fichier choisi:
$typeFichier = $_FILES["file"]["type"] ;
// Poids en octets du fichier choisit:
$poidsFichier = $_FILES["file"]["size"] ;
// Poids en Kilo-octets du fichier choisit:
$poidsFichierK = $poidsFichier/1024;
// Pré formatage en affichage avec 0 chiffre après la virgule , donc pas de virgule.
$poidsFichierK = sprintf("%.0f", $poidsFichierK) ;
// Code de l'erreur si jamais il y en a une:
$codeErreur = $_FILES["file"]["error"] ;
// Extension du fichier
$extension = strrchr($nomFichier, ".");
// Si le poids du fichier est de 0 bytes, le fichier est
// invalide (ou le chemin incorrect) => message d'erreur
// sinon, le script continue.
if($poidsFichier <> 0){
// Si la taille du fichier est supérieure à la taille
// maximum spécifiée => message d'erreur
if($poidsFichier < $MAX_SIZE){
// On teste ensuite si le fichier a une extension autorisée
if(isExtAuthorized($extension)){
// Ensuite, on copie le fichier uploadé ou bon nous semble.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
if($uploadOk){
echo "L'upload a réussi !<br><br>";
echo "Nom du Fichier : $nomFichier<br>";
echo "Taille du Fichier : $poidsFichierK Ko<br>";
echo "URL du Fichier : http://URL du site/upload/up/$nomFichier<br><br>";
echo "Aperçu:<br><br>";
switch ($extension) { //Tu fais écrire du html par le php
case ".jpeg": echo "<IMG SRC='$nomFichier'>";break;
case ".bmp": echo "<IMG SRC='$nomFichier'>";break;
case ".gif": echo "<IMG SRC='$nomFichier'>";break;
case ".png": echo "<IMG SRC='$nomFichier'>";break;
case ".jpg": echo "<IMG SRC='$nomFichier'>";break;
default: echo "<IMG SRC='error/inconnu.gif'>"; }
echo "<br><br>";
echo(createReturnLink());
}else{
echo("L'upload a échoué !<br><br>");
echo(createReturnLink());
}
}else{
echo ("Les fichiers avec l'extension $extension ne peuvent pas être uploadés !<br>");
echo (createReturnLink()."<br>");
}
}else{
$tailleKo = $MAX_SIZE / 1000;
echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Le fichier choisi est invalide !<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Vous n'avez pas choisi de fichier !<br>");
echo (createReturnLink()."<br>");
}
?>
et aussi je ne sais pas comment ni ou intégrer
dans la galerie
Code : Tout sélectionner
<html><head>
<link rel="stylesheet" type="text/css" href="style-gal.css">
<TITLE><? echo(":: Galerie d'images du service d'upload de VOTRE NOM / PSEUDO ::"); ?></TITLE>
</head><body>
<!-- DEBUT DU SCRIPT -->
<script language="JavaScript1.2">
/*
SCRIPT EDITE SUR L'EDITEUR JAVASCRIPT
http://www.editeurjavascript.com
*/
function ejs_nodroit()
{
alert('Désolé, le clic droit a été désactivé sur cette page. ');
return(false);
}
document.oncontextmenu = ejs_nodroit;
</script>
<!-- FIN DU SCRIPT -->
<body bgcolor="#000000">
<SCRIPT LANGUAGE="JavaScript">
table_photo = new Array;
table_noms = new Array;
table_type = new Array;
<?
$a = 0;
$handle = opendir("up");
while (($file = readdir())!=false) {
clearstatcache();
$extension = strrchr($file, ".");
if($file!=".." && $file!="." && ($extension==".jpg" || $extension==".jpeg" || $extension==".gif" || $extension==".png" || $extension==".bmp"))
{
// RECHERCHE DU FICHIER
echo "table_photo[$a] = 'up/$file';";
// RECHERCHE DU TYPE DE FICHIER
$file_type = strrchr($file, ".");
$file_type = str_replace(".", "", $file_type);
$file_type = strtoupper($file_type);
echo "table_type[$a] = '$file_type';";
// RECHERCHE DU NOM :
$file_name = strtolower($file);
$file_name = str_replace(".jpg", "", $file_name);
$file_name = str_replace(".jpeg", "", $file_name);
$file_name = str_replace(".gif", "", $file_name);
$file_name = str_replace(".png", "", $file_name);
echo "table_noms[$a] = '$file_name';";
$a++;
}
}
closedir($handle);
?>
function showing_photos(num)
{
if(document.getElementById)
{
diaporama_fin = "";
if(num!=0)
diaporama_fin += "<td height=20><p align=center><A HREF=# onClick='showing_photos("+(num-1)+");return(false)'><img border=0 src=im/suiv.gif></A></td>";
if(num!=(table_photo.length-1))
diaporama_fin += "<td height=20><p align=center><A HREF=# onClick='showing_photos("+(num+1)+");return(false)'><img border=0 src=im/prec.gif></A></td>";
document.getElementById("affichage_photos").innerHTML = "<div align=center><center><table border=0 width=640 cellspacing=0 cellpadding=5 height=500><tr><td colspan=2 valign=middle width=100% bgcolor=#000000 height=20><table border=0 width=100% cellspacing=0 cellpadding=0><tr><td width=50%><img align=absmiddle border=0 src=im/nom-gal.gif width=16 height=16> Nom de l'image : "+table_noms[num]+"</td><td width=50%><img align=absmiddle border=0 src=im/typ-gal.gif width=16 height=16> Type d'image : "+table_type[num]+"</td></tr></table></td></tr><tr><td width=100% colspan=2 valign=middle height=380><table border=0 width=100% cellspacing=1 cellpadding=0 bgcolor=#FF0000 height=100%><tr><td width=100% bgcolor=#000000 height=380><center><img src='"+table_photo[num]+"' BORDER=0></center></td></tr></table></td></tr><br><br><tr>"+diaporama_fin+"</tr></table></center></div>";
}
}
window.onload = new Function("showing_photos(0)")
</SCRIPT>
<DIV align="center" ID="affichage_photos"></DIV>
<a href = "index.php">Retourner au service d'upload ?<a/>
</body>
</html>
(ne doit on pas préciser que l'on affiche juste les images)
Merci pour l'aide car je suis largué
Posté : 11 mars 2007, 11:42
par webide
J'ais eu beau tester rien y fait donc je vais faire selon la première idée c'est à dire en créant un dossier via mkdir. J'ais fait les modifications necessaires pour qu'ils inscrivent leur pseudo (pour créer le dossier de destination) mais j'ais du faire un impair car l'upload échoue (les droits sont bons)
Sur la page d'upload il doit inscrire son pseudo et envoyer plusieurs fichiers
Voici déjà la page d'index pour l'upload
Code : Tout sélectionner
<TITLE><? echo(":: Service d'upload de $pseudo ::"); ?></TITLE>
</head>
<body>
<body bgcolor="#A10300">
<link rel="stylesheet" type="text/css" href="style.css">
<h3></h3>
<p align="center"><b><font face="Comic Sans MS">Uploader des fichiers</font></b></p>
<p align="left"><b><font face="Comic Sans MS">Règles :</font></b></p>
<p align="center">Votre fichier ne doit pas dépasser les 100KO et doit commencer par votre pseudo</p>
<p align="center">Les formats autorisés sont : *gif , *jpg , *png , *bmp </p>
<br>
<center>Votre pseudo<input name="pseudo" type="text" id="pseudo"> </center>
<br>
<form name="upload" enctype="multipart/form-data" method="post" action="up/upload.php">
<p align="center">Photo 1
<input type="file" name="file">
<p align="center">Photo 2
<input type="file" name="file">
<p align="center">Photo 3
<input type="file" name="file">
<p align="center">Photo 4
<input type="file" name="file">
<p align="center">Photo 5
<input type="file" name="file">
<p align="center">Photo 6
<input type="file" name="file">
</p>
<p align="center"><br>
<input type="submit" name="bouton_submit" value="Envoyer le fichier">
</p>
<a href = "galerie.php">Voir la galerie d'images ?</a>
</form>
Le ficihier uploader.php gérant l'upload
Code : Tout sélectionner
mkdir ($pseudo, 0777);
// Récupération du dossier dans lequel le fichier sera uploadé
$DESTINATION_FOLDER = 'up/'.$pseudo.'/'; //
// Taille maximale de fichier, valeur en bytes //
$MAX_SIZE = 10000000; //
// Récupération de l'url de retour //
$RETURN_LINK = $_SERVER['HTTP_REFERER']; //
// Définition des extensions de fichier autorisées (avec le ".")//
$AUTH_EXT = array(".jpg",".png", //
".bmp", ".gif"); //
// ############################################################ //
// Fonction permettant de créer un lien de retour automatique
function createReturnLink(){
global $RETURN_LINK;
echo "<a href='".$RETURN_LINK."'>Retour</a><br>";
}
// Fonction permettant de vérifier si l'extension du fichier est
// autorisée.
function isExtAuthorized($ext){
global $AUTH_EXT;
if(in_array($ext, $AUTH_EXT)){
return true;
}else{
return false;
}
}
// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.
if(!empty($_FILES["file"]["name"])){
// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"] ;
// Nom temporaire sur le serveur:
$nomTemporaire = $_FILES["file"]["tmp_name"] ;
// Type du fichier choisi:
$typeFichier = $_FILES["file"]["type"] ;
// Poids en octets du fichier choisit:
$poidsFichier = $_FILES["file"]["size"] ;
// Poids en Kilo-octets du fichier choisit:
$poidsFichierK = $poidsFichier/1024;
// Pré formatage en affichage avec 0 chiffre après la virgule , donc pas de virgule.
$poidsFichierK = sprintf("%.0f", $poidsFichierK) ;
// Code de l'erreur si jamais il y en a une:
$codeErreur = $_FILES["file"]["error"] ;
// Extension du fichier
$extension = strrchr($nomFichier, ".");
// Si le poids du fichier est de 0 bytes, le fichier est
// invalide (ou le chemin incorrect) => message d'erreur
// sinon, le script continue.
if($poidsFichier <> 0){
// Si la taille du fichier est supérieure à la taille
// maximum spécifiée => message d'erreur
if($poidsFichier < $MAX_SIZE){
// On teste ensuite si le fichier a une extension autorisée
if(isExtAuthorized($extension)){
// Ensuite, on copie le fichier uploadé ou bon nous semble.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
if($uploadOk){
echo "L'upload a réussi !<br><br>";
echo "Nom du Fichier : $nomFichier<br>";
echo "Taille du Fichier : $poidsFichierK Ko<br>";
echo "URL du Fichier : http://www.crazytchat.com/upload/up/$pseudo/$nomFichier<br><br>";
echo "Aperçu:<br><br>";
switch ($extension) { //Tu fais écrire du html par le php
case ".jpeg": echo "<IMG SRC='$nomFichier'>";break;
case ".bmp": echo "<IMG SRC='$nomFichier'>";break;
case ".gif": echo "<IMG SRC='$nomFichier'>";break;
case ".png": echo "<IMG SRC='$nomFichier'>";break;
case ".jpg": echo "<IMG SRC='$nomFichier'>";break;
default: echo "<IMG SRC='error/inconnu.gif'>"; }
echo "<br><br>";
echo(createReturnLink());
}else{
echo("L'upload a échoué !<br><br>");
echo(createReturnLink());
}
}else{
echo ("Les fichiers avec l'extension $extension ne peuvent pas être uploadés !<br>");
echo (createReturnLink()."<br>");
}
}else{
$tailleKo = $MAX_SIZE / 1000;
echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Le fichier choisi est invalide !<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Vous n'avez pas choisi de fichier !<br>");
echo (createReturnLink()."<br>");
}
?>
Et la galerie pour visionner
Code : Tout sélectionner
<?
$a = 0;
$handle = opendir("up/$pseudo");
while (($file = readdir())!=false) {
clearstatcache();
$extension = strrchr($file, ".");
if($file!=".." && $file!="." && ($extension==".jpg" || $extension==".jpeg" || $extension==".gif" || $extension==".png" || $extension==".bmp"))
{
// RECHERCHE DU FICHIER
echo "table_photo[$a] = 'up/$pseudo/$file';";
// RECHERCHE DU TYPE DE FICHIER
$file_type = strrchr($file, ".");
$file_type = str_replace(".", "", $file_type);
$file_type = strtoupper($file_type);
echo "table_type[$a] = '$file_type';";
// RECHERCHE DU NOM :
$file_name = strtolower($file);
$file_name = str_replace(".jpg", "", $file_name);
$file_name = str_replace(".jpeg", "", $file_name);
$file_name = str_replace(".gif", "", $file_name);
$file_name = str_replace(".png", "", $file_name);
echo "table_noms[$a] = '$file_name';";
$a++;
}
}
closedir($handle);
?>
function showing_photos(num)
{
if(document.getElementById)
{
diaporama_fin = "";
if(num!=0)
diaporama_fin += "<td height=20><p align=center><A HREF=# onClick='showing_photos("+(num-1)+");return(false)'><img border=0 src=im/suiv.gif></A></td>";
if(num!=(table_photo.length-1))
diaporama_fin += "<td height=20><p align=center><A HREF=# onClick='showing_photos("+(num+1)+");return(false)'><img border=0 src=im/prec.gif></A></td>";
document.getElementById("affichage_photos").innerHTML = "<div align=center><center><table border=0 width=640 cellspacing=0 cellpadding=5 height=500><tr><td colspan=2 valign=middle width=100% bgcolor=#000000 height=20><table border=0 width=100% cellspacing=0 cellpadding=0><tr><td width=50%><img align=absmiddle border=0 src=im/nom-gal.gif width=16 height=16> Nom de l'image : "+table_noms[num]+"</td><td width=50%><img align=absmiddle border=0 src=im/typ-gal.gif width=16 height=16> Type d'image : "+table_type[num]+"</td></tr></table></td></tr><tr><td width=100% colspan=2 valign=middle height=380><table border=0 width=100% cellspacing=1 cellpadding=0 bgcolor=#FF0000 height=100%><tr><td width=100% bgcolor=#000000 height=380><center><img src='"+table_photo[num]+"' BORDER=0></center></td></tr></table></td></tr><br><br><tr>"+diaporama_fin+"</tr></table></center></div>";
}
}
window.onload = new Function("showing_photos(0)")
</SCRIPT>
Si quelqu'un pouvait m'aiguiller sur les erreurs commises.
Merci d'avance
Posté : 11 mars 2007, 12:22
par thehawk
il ya une truc que je pige pas ... tu crée mkdir ($pseudo, 0777); or vu que tu upload dans "up/".$pseudo tu ne dravait pas faire : mkdir ("up/".$pseudo, 0777); ?
Posté : 11 mars 2007, 12:42
par webide
Oui c'est vrai autant pour moi mais maintenant que j'ais fait les modifs, et que j'essaie d'uploader les photos il me marque que l'upload a réussi (en ne me marquant que la dernière photo sur les 6) et les photos ne sont pas visibles (d'ailleurs le dossier avec le pseudo n'est pas créé et les photos ne sont nullepart)
Posté : 11 mars 2007, 12:47
par thehawk
as tu verifier les droits du dossier up ?
Posté : 11 mars 2007, 12:49
par webide
Le dossier up est en chmod 777
Posté : 11 mars 2007, 13:14
par thehawk
est ce que tous les repertoires parents on chmod 777 ?
Posté : 11 mars 2007, 13:23
par webide
Pour l'instant seul le dossier up est en 777 dois je mettre les fichiers galerie et index (téléchargement d'images) aussi en 777?
Posté : 11 mars 2007, 13:37
par thehawk
essaye ... on ne sait jamais mais la j'avoue je ne voi pas tres bien d'ou provient l'erreur ... donc procede aux test suivant :
- - teste dans un nouveaux fichier la création du repertoire avec un nom fixe : mkdir ("/chemin/de/mon/dossier", 0700);
- - teste mainteant avec une varible dedans : mkdir ("/chemin/de/mon/".$pseudo, 0700);
en veillant a bien definir la varibale avant : $pseudo = "truc";
- - Si cela est bon test la transmition du pseudo dans la page de l'upload.
Posté : 11 mars 2007, 14:19
par webide
J'ais modifié comme ceci
Il me créé un dossier up dans up et il ne prends en compte qu'une photo au lieu des 6 et aucune n'apparait (une croix à la place)