Super Script de galerie photo ...mais fonctionne pas partout

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


phloam
WRInaute accro
WRInaute accro
 
Messages: 1369
Inscription: Ven Avr 08, 2005 22:06

Message le Ven Fév 22, 2008 2:44

Sinon une autre solution encore plus simple est de simplement ajouter ces 2 lignes: au début de ton code et de ne rien modifier d'autre:

foreach ($_POST as $key => $value) $$key = addslashes($value);
foreach ($_GET as $key => $value) $$key = addslashes($value);

trouvé ici:
http://www.asp-php.net/ressources/bouts ... aspx?id=37


Phix
WRInaute impliqué
WRInaute impliqué
 
Messages: 420
Inscription: Mar Juin 15, 2004 22:05

Message le Ven Fév 22, 2008 12:09

C'est vrai que ces deux dernières lignes de code simplifient le travail mais il faut plutot remplacer les variables directement dans le code au risque de créer des trous de sécurité. Vu que ce script fait de l'upload de photos (si j'ai bien compris), il suffirait à un visiteur doué d'intentions scrupuleuses de modifier certaines variables pour pouvoir exécuter son code sur le site...

Je n'ai pas lu le code en entier mais je pense que le risque est bien présent...

felinderace
Nouveau WRInaute
 
Messages: 38
Inscription: Mar Avr 24, 2007 17:34

Message le Ven Fév 22, 2008 12:26

Et bien, je suis super content pour vos réponses à tous. Vous etes vraiment super !

ps: controle H ? (je connais Controle C + V pour copier coller ...mais controle H ? ... bon je vais chercher sur le web ce que c'est si vous etes pas revenus d'ici que je commence).

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Ven Fév 22, 2008 13:26

J'ai une question toute bête sur l'utilité du script. Est-ce que les miniatures sont de qualité?

Chaque fois que j'ai vu des sites qui retaillent automatiquement les images, le résultat est franchement degueu.

Retailler soit même en photoshop ou autre donne de bien meilleurs résultats. Bref, je chargerai l'image ET sa miniature plutot que de créer cette derniere automatiquement.

felinderace
Nouveau WRInaute
 
Messages: 38
Inscription: Mar Avr 24, 2007 17:34

Message le Ven Fév 22, 2008 13:32

Vap a écrit:J'ai une question toute bête sur l'utilité du script. Est-ce que les miniatures sont de qualité?

Chaque fois que j'ai vu des sites qui retaillent automatiquement les images, le résultat est franchement degueu.

Retailler soit même en photoshop ou autre donne de bien meilleurs résultats. Bref, je chargerai l'image ET sa miniature plutot que de créer cette derniere automatiquement.


Le mieux, c'est de voir le résultat http://felinderace.free.fr/sp/photo-maine-coon/ (puisque ça fonctionne encore sous free) ...le formulaire de téléchargement des photos n'est pas celui par defaut. ça met de l'interactivité dans un site statique en tout cas. Enfin, moi j'aime bien (sinon, oui : quand, c'est mes photos ...je fait ça manuellement).

...Bon je m'y met cette fois !

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Ven Fév 22, 2008 13:36

felinderace a écrit:
Vap a écrit:J'ai une question toute bête sur l'utilité du script. Est-ce que les miniatures sont de qualité?

Chaque fois que j'ai vu des sites qui retaillent automatiquement les images, le résultat est franchement degueu.

Retailler soit même en photoshop ou autre donne de bien meilleurs résultats. Bref, je chargerai l'image ET sa miniature plutot que de créer cette derniere automatiquement.
(sinon, oui : quand, c'est mes photos ...je fait ça manuellement).


Donc tu es d'accord avec moi...

felinderace
Nouveau WRInaute
 
Messages: 38
Inscription: Mar Avr 24, 2007 17:34

Message le Ven Fév 22, 2008 13:40

phloam a écrit:Voila tout ce que tu as à faire :Tu ouvres ton bloc note et tu fais un ctrl+H puis tu remplaces tout ce qu'il y a en rouge par tout ce qu'il y a en vert dans tout le fichier:

$mdp devient $_POST['mdp']
$NomFichier devient $_POST['NomFichier']
$act devient $_POST['act']
$mot devient $_GET['mot']



Mais c'est génial ton Truc !
... ça va me simplifier la vie : j'adore ! merci

...je teste et je reviens.

felinderace
Nouveau WRInaute
 
Messages: 38
Inscription: Mar Avr 24, 2007 17:34

Message le Ven Fév 22, 2008 14:02

Bon,

alors les $motdepasse sont devenus $_POST['mot']depasse ....j'ai tout remis en $motdepasse


ma galerie affiche pour l'instant :

" Parse error: syntax error, unexpected '[', expecting ',' or ';' in /var/www/virtual/.............../test2/correction.php on line 72


ligne 72 : global $_POST['mdp'],$motdepasse;

je comprend même pas le message d'erreur, mais je vais voir ce qui est possible de faire...


Ré-edition : partout ou il y avait des messages d'erreur j'ai rechangé

global $_POST['mdp'],$motdepasse; en global $mdp,$motdepasse;


....Le message d'erreur disparaissait ...alors j'ai tout fait comme ça. Surement une mauvaise idée car les miniatures de s'affichent pas, sinon on peut maintenant télécharger des photos.


Le code corrigé donne maintenant ça :


<?php
////////////-------------- debut configuration -----------------//////////
//mettre le mot de passe ici
$motdepasse="1234";
//donner le chemin depuis la racine du serveur vers la galerie, n'oubliez pas le / à la fin !
//ex: c:/programme files/easyphp/www/galerie/ (windows)
//ex2: /home/user/galerie/ (linux)
//Si vous ne savez pas, laissez vide
$chemin="";
//nombre d'images par ligne
$nb_colone=6;
//largeur max de la miniature
$max_largeur=60;
//hauteur max de la miniature
$max_longeur=60;
//version de la librairie GD, si vous ne savez pas, mettez 1.
$gd=2;
//activer les fonctions admin (renommer, suppression) 1:active 0: inactive
//il est conseillé de désactiver si vous donner le mot de passe à une autre personne
$admin=0;
////////////-------------- fin configuration ----------------//////////
if(!isset($_POST['act'])) $_POST['act']="";
switch($_POST['act'])
{
case "upload":
if($_POST['mdp']!=$motdepasse) die ("mauvais mot de passe");
verif_fichier($_POST['NomFichier']);
upload();
break;
case "thumb":
thumb($img);
break;

case "supprimer":
if($admin==1)
supprimer($img);
else
echo "la suppression a été désactivé";
break;

case "renommer":
if($admin==1)
renommer($img,$nom);
else
echo "cette fonction est désactivé";
break;
default :
tete();
afficher_formulaire_upload();
upload_liste_fichier();
pied();
break;
}
function tete()
{
echo"
<html>
<head>
<title> Upload Galerie </title>
</head>
<body>";
}
function pied()
{
echo "
</body>
</html>";
}
///-------------------- liste des fonctions ----------------------////
function renommer($img,$nom)
{
global $mdp,$motdepasse;

if($_POST['mdp']==$motdepasse && $nom!="" && isset($nom))
{
if(@rename($img,$nom))
{
echo "l'image <b>$img</b> a été renommé avec succès en : <b>$nom</b>";
}
else
{
echo "changement de nom echoué";
}
echo "<br /><a href=\".\">retour à la galerie</a>";
}
else
{
echo"
<div style=\"background:#C0C0C0;width:30%;\">
<b>renommer une image</b><br /><br />
<form>
<b>image:</b> <input type=\"text\" name=\"img\" value=\"$img\"><br />
<b> nouveau nom :</b> <input type=\"text\" name=\"nom\" value=\"$img\"><br />
<b>mot de passe:</b> <input type=\"password\" name=\"mdp\"><br />
<input type=\"hidden\" name=\"act\" value=\"renommer\">
<input type=\"submit\" value=\"envoyer\"><br />
</form>
</div>";
}
}
function supprimer($img)
{
global $mdp,$motdepasse;

if($_POST['mdp']==$motdepasse)
{
if(@unlink($img))
{
echo "l'image <b>$img</b> a été supprimé avec succès";
}
else
{
echo "suppresion echoué";
}
echo "<br /><a href=\".\">retour à la galerie</a>";
}
else
{
echo"

<div style=\"background:#C0C0C0;width:30%;\">
<b>supprimer une image</b><br /><br />
<form>
<b>image:</b> <input type=\"text\" name=\"img\" value=\"$img\"><br />
<b>mot de passe:</b> <input type=\"password\" name=\"mdp\"><br />
<input type=\"hidden\" name=\"act\" value=\"supprimer\">
<input type=\"submit\" value=\"envoyer\"><br />
</form>
</div> ";
}

}
function alert($message)
{
echo "<br /><table align=\"center\" style=\"border:1px solid #C0c0c0;\"><tr><td><h4>$message</h4></td></tr></table>";
}
function verif_fichier($NomFichier)
{
if (!preg_match ("/^(.*)\.(txt|rar|zip|exe|jpg|png|gif|jpeg)$/i", $_FILES["NomFichier"]["name"] ))
{
exit (alert("fichier non autorisé, on a le droit seulement aux extension jpg,jpeg,png,gif"));

}

}
function tab_image()
{
//dossiers qui contient les fichiers
$d=opendir(".");

//scan du dossier
while($f=readdir($d))
{
if (preg_match ("/^(.*)\.(txt|rar|zip|exe|jpg|png|gif|jpeg)$/i", $f))
{
$is_image=true;
}
else
{
$is_image=false;
}
if ($f != "." && $f != ".." && $f!="index.php" && $f!=".htaccess" && $is_image)
$dir[]=$f;
}
closedir();
@sort($dir);
return $dir;
}
function tab_recherche($mot)
{
$dir=tab_image();
$num=count($dir);

$i=0;
while($i<$num)
{
if (preg_match ("/^(.*)$mot(.*)$/i", $dir[$i]))
{
$tab_recherche[]=$dir[$i];
//echo $dir[$i];
}
$i++;
}
return $tab_recherche;
}
function upload_liste_fichier()
{
global $admin,$path,$HTTP_HOST,$REQUEST_URI,$nb_colone,$mot;

if(isset($_GET['mot']) && $_GET['mot']!="")
{
$dir=tab_recherche($_GET['mot']);

echo "<p align=\"center\"><a href=\".\" ><b>retour à la liste</b></a></p>";

$num=count($dir);
if($num==1 || $num==0 )
{
echo"<p> $num photo a été trouvé pour le mot <b> $mot </b></p>";
}
else
{
echo"<p> $num photos ont été trouvé pour le mot <b>$mot</b></p>";
}
}
else
{
$dir=tab_image();

//on compte le nombre de fichier trouvé dans le dossier
$num=count($dir);
if($num==1 || $num==0 )
{
echo"<p>il y un $num object " ;
}
else
{
echo"<p>il y un $num object " ;
}
}

$i=0;

echo "\n<table border=\"0\" width=\"90%\" align=\"center\"><tr bgcolor=\"#E4E4E4\">";
$width=100/$nb_colone;
$nb_ligne=0;
while($i<$num || $i%$nb_colone!=0)
{
if($nb_ligne%2==0)
{
$couleur="#F0F0F0";
}
else
{
$couleur="#E4E4E4";
}
if($i<$num)
{

$dir[$i]=rawurlencode($dir[$i]);
if (preg_match ("/^(.*)\.gif$/i", $dir[$i]))
{
echo "\n<td width=\"$width%\" ><a href=\"".$dir[$i]."\" target=\"_blank\">(pas de miniature) <br />".$dir[$i]."</a>";
if($admin==1)
{
echo"<br /> <a href=\"?act=supprimer&img=$dir[$i]\">supprimer</a>";
echo"<br /> <a href=\"?act=renommer&img=$dir[$i]\">renommer</a>";
}
echo"</td>";

}
else
{
echo "\n<td width=\"$width%\" ><a href=\"".$dir[$i]."\" target=\"blank\"><img src=\"?act=thumb&img=".$dir[$i]."\" border=\"2\"></a><br />".rawurldecode($dir[$i]);
if($admin==1)
{
echo"<br /> <a href=\"?act=supprimer&img=$dir[$i]\">supprimer</a>";
echo"<br /> <a href=\"?act=renommer&img=".$dir[$i]."\">renommer</a>";
}

echo"</td>";

}
}
else
{
echo "\n<td width=\"$width%\">&nbsp;...</td>";
}
$i++;

if($i%$nb_colone==0 &&$i!=0)
{
if($i<$num)
echo "\n</tr>\n<tr bgcolor=\"$couleur\">";
else
echo "\n</tr>";
$nb_ligne++;
}
}
echo"</table>";
}
function afficher_formulaire_upload()
{

echo'<div style="background:#C0C0C0;width:30%;">
<h4>Formulaire pour uploader une photo</h3>
<form ENCTYPE="multipart/form-data" method="post" name="upload">
<input type="hidden" name="MAX_FILE_SIZE" value="999999" />
<input name="mdp" type="password"> password<br />
<input name="NomFichier" type="file"><br />
<input type="hidden" name="act" value="upload">
<input type="SUBMIT" VALUE="Upload">
<input type="reset" name="Cancel " value="Cancel ">
</form> </div>';

echo'<table align="center"><tr><td><form >
<input name="mot" type="text"><input type="SUBMIT" VALUE="recherche">
</form></td></tr></table> ';
}
function upload()
{
global $HTTP_HOST,$REQUEST_URI,$_FILES,$chemin;
if (file_exists($_FILES['NomFichier']['name']))
{
echo"<h3>un fichier comporte deja ce nom</h3>";
}
else
{
if(move_uploaded_file($_FILES["NomFichier"]["tmp_name"],$chemin.$_FILES["NomFichier"]["name"] ))
{
echo '<h3>"'.$_FILES['NomFichier']['name'].'" a été envoyé sur le serveur avec succées</h3>';
echo '<input type="text" size="72" value="[img]http://'.$HTTP_HOST.$REQUEST_URI.$_FILES['NomFichier']['name'].'[/img]"><br /><br />';
echo '<img src="http://'.$HTTP_HOST.$REQUEST_URI.$_FILES['NomFichier']['name'].'">';
echo '<br /> <a href=".">retourner à la galerie</a>';
}
else
{
echo "<h3>upload echoué</h3><br />";
}
}
}
function thumb($img)
{
global $gd,$max_largeur,$max_longeur;
//on demande les dimension de l'image $img:
$size = getimagesize($img);
//largeur
$largeur=$size[0];
//longeur
$longeur=$size[1];
//on regarde si c'est png jpg gif
$type=$size[2];
//on regarde si l'image depasse en longueur
$depasse_long=$longeur-$max_longeur;
//on regarde si l'image depasse en largeur
$depasse_large=$largeur-$max_largeur;
//on charge l'image $img dans $img_big:
switch($type)
{
case 2: $img_big = imagecreatefromjpeg($img); break;
case 3: $img_big = imagecreatefrompng($img); break;
case 1: $img_big = imagecreatefromgif($img);break;
}
if($depasse_long>0 || $depasse_large>0)
{
if($depasse_long>$depasse_large)
{
$largeur=($max_longeur/$longeur)*$largeur;
//echo "$largeur=$max_longeur/$longeur)*$largeur";
$longeur=$max_longeur;
//150/243*300
}
else
{
$longeur=($max_largeur/$largeur)*$longeur;
$largeur=$max_largeur;
}
//on fait une nouvelle image ayant pour dimension: largeur et hauteur

if($gd=="1")
{
$img_mini = imagecreate($largeur, $longeur);
}

else
{
$img_mini = imagecreatetruecolor($largeur, $longeur);
}


//on copie l'image d'origine contenu dans img_big dans img_mini en la reduisant a $img_x pour la largeur et $img_y pour la hauteur:
imagecopyresized($img_mini,$img_big,0,0,0,0,$largeur,$longeur,$size[0],$size[1]);

switch($type)
{
case 2:
//on enverra au navigateur un fichier de type image au format jpeg:
header("Content-type: image/jpeg");
//on envoie l'image reduire au navigateur:
imagejpeg($img_mini);
break;
case 3://on enverra au navigateur un fichier de type image au format jpeg:
header("Content-type: image/png");
//on envoie l'image reduire au navigateur:
imagepng($img_mini);
break;
case 1: //on enverra au navigateur un fichier de type image au format jpeg:
header("Content-type: image/gif");
//on envoie l'image reduire au navigateur:
imagegif($img_mini);
break;
default: false ;
}

}
else
{
switch($type)
{
case 2:header("Content-type: image/jpg"); $img_big = imagejpeg($img_big); break;
case 3:header("Content-type: image/png"); $img_big = imagepng($img_big); break;
case 1:header("Content-type: image/gif"); $img_big = imagegif($img_big);break;
default: false ;
}
}
}
?>


Voilà ou j'en suis, aurais-je mal fait les changements ? (en tout cas, il y a du progret)

felinderace
Nouveau WRInaute
 
Messages: 38
Inscription: Mar Avr 24, 2007 17:34

Message le Ven Fév 22, 2008 14:35

phloam a écrit:Sinon une autre solution encore plus simple est de simplement ajouter ces 2 lignes: au début de ton code et de ne rien modifier d'autre:

foreach ($_POST as $key => $value) $$key = addslashes($value);
foreach ($_GET as $key => $value) $$key = addslashes($value);

trouvé ici:
http://www.asp-php.net/ressources/bouts ... aspx?id=37


Bon sinon, ta solution de secour fonctionne carrément bien !

En attendant de trouver les erreurs que j'ai fait, je confirme que ça fonctionne au poil !!! (pas testé sur free mais sur mon hébergeur payant). Merci phloam.


Cependant, je reste ouvert au propositions de modifs du script que j'ai corrigé (mal d'ailleur).


phloam
WRInaute accro
WRInaute accro
 
Messages: 1369
Inscription: Ven Avr 08, 2005 22:06

Message le Sam Mar 01, 2008 20:35

Oui effectivement la seconde solution pourrait créer des trous de sécurité si un autre script est utilisé sur la même page et/ou si des variables ne sont pas initialiser (mais dans ce cas en ayant rapidement regarder je n'ai pas trouver de trous évident pour ce script, toutes les variables sont initialiser). Il faut veiller à placer les deux lignes tout en haut du code avant l'initialisation des variables.

felinderace
Nouveau WRInaute
 
Messages: 38
Inscription: Mar Avr 24, 2007 17:34

Message le Sam Mai 24, 2008 22:57

... j'ai mis le temps, mais merci pour vos réponses. La galerie est au top maintenant sur les hebergeurs payants...merci grandement pour cette soluce géniale.


cedric_g
WRInaute accro
WRInaute accro
 
Messages: 2037
Inscription: Mer Jan 18, 2006 16:26

Message le Dim Mai 25, 2008 8:33

Bonjour

Quid des droits d'auteur sur les photos ? Je m'explique : qu'est-ce qui empêche quelqu'un d'uploader la photo d'un autre ? Ton paragraphe sur les clauses légales est un peu léger je pense... et en cas de problème, tu pourrais risque "gros" :roll:

Mais surtout, le fait de donner en pâture des images haute définition (la première que j'ai cliquée était en 4 MPixels) est à mon avis une hérésie !... Où comment retrouver ses photos sur un microstock :roll:

Voili voilou



PS : ton article sur la HCM chez le maine coon est obsolète... et en partie faux :wink: (eh oui, tous les maine coons porteurs de la mutation HCM1 ne déclenchent pas la maladie... Expérience de terrain (bientôt 10 ans d'élevage) corroborée par une étude récente en Allemagne, qui a notamment circulé chez les éleveurs de maine coons ; au passage j'ai une homozygote++ qui va sur ses 8 ans, qui est placée chez une particulière pour sa "retraite", elle a un coeur de jeune fille et tout est même nickel au Doppler tissulaire :roll: ) ; quant au test HCM2, les premières vagues de tests ont montré son inefficacité... Conclusion : le test ADN HCM1 spécifique au maine coon ne reste qu'un outil et en rien une vérité absolue, seul un suivi échographique régulier donnera une vision concrète de la situation des chats. Dingue comme les maine coons ont perdu 10 ans d'espérance de vie depuis l'arrivée de ce test ADN... Mardi je vois le Pr Chetboul à l'ENV Maisons-Alfort, je lui poserai la question à propos de l'étude allemande :wink:

forummp3
WRInaute accro
WRInaute accro
 
Messages: 1553
Inscription: Dim Fév 08, 2004 11:10

Message le Dim Mai 25, 2008 10:16

lol, mort de rire, c'est mon script !!!

tu peux le trouver a cette adresse:

http://forummp3.free.fr/galerie/

je sais pas si tu as la derniere version par contre (ca commence a dater la derniere MAJ)

ca fait plaisir de lire "super script" ;)

C la fete des mere, j'ai pas trop le temps de lire le topic, mais sinon, j'essayerai de voir comment adapter le script pour satisafaire tout le monde (j'avais pris en compte les register_global à l'epoque)

a+


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5240
Inscription: Mer Nov 23, 2005 10:38

Message le Dim Mai 25, 2008 10:21

Pour obtenir des résultats meilleur au niveau des thumb, l'utilisation de ImageMagick serait pas mal je pense. En terme de rendu pour un retaillage d'image c'est quand même ce qui se fait de mieux. Les possibilités sont en effet bien plus poussées que GD. Après c'est sûr qu'il faut avoir ImageMagick d'installé sur le serveur...

forummp3
WRInaute accro
WRInaute accro
 
Messages: 1553
Inscription: Dim Fév 08, 2004 11:10

Message le Dim Mai 25, 2008 10:40

UsagiYojimbo a écrit:Pour obtenir des résultats meilleur au niveau des thumb, l'utilisation de ImageMagick serait pas mal je pense. En terme de rendu pour un retaillage d'image c'est quand même ce qui se fait de mieux. Les possibilités sont en effet bien plus poussées que GD. Après c'est sûr qu'il faut avoir ImageMagick d'installé sur le serveur...
dans la derniere version que j'ai pas encore mis dispo, j'ai utilisé une autre fonction de GD, ca sert à enlever les defauts lors d'un redimensionnement.

Super Script de galerie photo ...mais fonctionne pas partout Super Script de galerie photo ...mais fonctionne pas partout

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités