Masquer extension fichier

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 : Masquer extension fichier

par ekzouille » 23 déc. 2008, 12:05

Merci infiniment! Tu m'as été d'une précieuse aide.
Je n'en espérais pas tant, bonne journée et bonne continuation!

par guilt92 » 19 déc. 2008, 17:27

Bah ca dépend...

Si tes trois dossiers sont dans un même sous dossier ou que leur nom est statique tu peux le faire.

Tu fais de ton bout de code une fonction (je prend le 1er que tu avais posté meme si c'est plus le bon, c pr l exemple)
<?php 
function get_images($dirname)
{
$dir = opendir($dirname);  

while($file = readdir($dir)) { 
    if($file != '.' && $file != '..' && !is_dir($dirname.$file)) 
    { 
        echo '<li><a href="'.$dirname.$file.'">'.$file.'</a></li></br>'; 
    } 
} 
closedir($dir); 
}
?>
Ensuite il te suffit de faire appel à cette fonction pour tous les dossiers que tu veux, donc par exemple pour afficher les 3
<?php 
get_images('admin/upload1/');
get_images('admin/upload2/');
get_images('admin/upload3/');
?>
Après sinon tu peux faire quelque chose de plus dinamique qui fait ca pour tous les dossiers de admin par exemple
<?php
$dirname = "admin/";
$dir = opendir($dirname);  
while($file = readdir($dir)) { 
    if($file != '.' && $file != '..' && is_dir($dirname.$file)) get_images($dirname.$file); 
} 
closedir($dir); 
}?>
C'est un exemple je pense que tu comprendras l'idée derrière ;)

par ekzouille » 19 déc. 2008, 17:03

Pourquoi t'es fort ?
Tu as tout compris et ca roule comme un char, merci infiniment pour ton aide detaillée !

Serait-ce un tout petit abus si je te demandais encore une petite chose (nan nan, j'veux pas que tu codes a ma place :lol: )

A vrai dire, j'ai trois dossiers contenant les fichiers, donc j'ai fait trois formulaires d'upload de fichier ainsi que trois pages pour le "renommage/stockage" du fichier, comme c'est le backoffice, ca importe peu mais ca m'embete un peu de repeter la page "filelist" trois fois, pour afficher les images de chaque dossier dans chacune des pages

aurais tu un moyen rapide (je t'ai deja assez solicité) pour visualiser les fichiers des trois dossiers dans la seul et meme page dynamique "filelist" ?
Merci encore et d'avance!

par guilt92 » 19 déc. 2008, 16:20

Je ne suis pas sur de bien comprendre mais j'essaye ;)

A ce moment la l'idée est effectivement de modifier le parametre href de tes liens pour faire quelque chose du style
echo '<li><a href="filelist.php?nom'.$dirname.$file.'">'.pathinfo($file,PATHINFO_FILENAME).'</a></li></br>';
(par exemple, donc chaque lien sera un lien vers la page filelist.php avec un paramètre qui change.

Et du coup dans la partie centrale de ta page récupérer la valeurs postée en $_GET["nom"] qui composera la source d'une image :

exemple
<img src="images/<?php echo $_GET["nom"];?>" alt=""/>
Attention cependant si tu fais cela :

Il faudra vérifier l'existence du $_GET["nom"];
Il faudra vérifier l'extension du fichier car si ca n'est pas une image => plantage
Il faudra vérifier l'existence du fichier avant de l'afficher (file_exists() par exemple)

En espérant que cela t'aide...

par ekzouille » 19 déc. 2008, 13:22

J'vais essayer, ca parait tellement logique en plus!
Puis-je t'embeter pour une derniere petite chose, ô grand sauveur de ma journée ( :wink: )

Comme tu peux le voir, le fichier s'ouvre seul, et j'ai besoin de l'ouvrir dans le cadre centrale de ma page.
lideal serait de cliquer sur le lien et d'avoir une url du type
"http://127.0.0.1/admin/filelist.php?nom ... conque.gif" mais comme tu as pu le remarquer, je suis un newbie de la prog

Merci encore pour la rapidité de ta reponse, l'espoir renait :lol: !

par guilt92 » 19 déc. 2008, 13:15

echo '<li><a href="'.$dirname.$file.'">'.$file.'</a></li></br>'; 
C'est la que tu affiche le lien vers le fichier.

Le but est de transformer $file en la version sans extension.

Ainsi essaye de faire cela :

Donc tu affiches quelque chose du genre <li><a href="xxx">Nom du fichier</a></li>

Donc c'est sur l'affichage de $file qu'il faut jouer :
echo '<li><a href="'.$dirname.$file.'">'.pathinfo($file,PATHINFO_FILENAME).'</a></li></br>'; 

par ekzouille » 19 déc. 2008, 13:07

Merci beaucoup pour la rapidité de vos réponses

J'ai regardé un peu et j'essaye d'integrer
echo pathinfo($file,PATHINFO_FILENAME);
à
<?php
$dirname = 'admin/upload2/';
$dir = opendir($dirname); 

while($file = readdir($dir)) {
	if($file != '.' && $file != '..' && !is_dir($dirname.$file))
	{
		echo '<li><a href="'.$dirname.$file.'">'.$file.'</a></li></br>';
	}
}
closedir($dir);
 ?>
mais je n'ai que des erreurs en retour
(en fait, je recupere, en lien, la liste des fichiers d'un dossier mais je ne veux pas que ca apparaisse avec l'extension pour avoir une liste de lien "propre")

par caroube » 19 déc. 2008, 12:57

Effectivement, encore mieux :)

par guilt92 » 19 déc. 2008, 12:50

Sinon tu peux aussi utiliser la fonction pathinfo() ce qui est encore plus simple...
echo pathinfo($file,PATHINFO_FILENAME);
correspond à ce que tu cherches je pense (si ta version de php > 5.2.0)

par caroube » 19 déc. 2008, 12:41

Le paramètre "path" de basename contient le nom complet du fichier avec son répertoire. Mais, tu n'as le droit qu'à un seul suffixe, donc tu ne peux pas supprimer en une seule fois les jpg, les png, ...

Et pourquoi ne pas tout simplement rechercher le dernier . -- strrpos() -- et enlever tout ce qu'il y a derrière -- substr() -- ?
Ou si tu es en PHP 5.3, il y a également strstr()

Ne recherche pas uniquement du côté des fonctions relatives aux fichiers : c'est sur son nom (cad une chaîne de caractères) que tu dois bosser

Masquer extension fichier

par ekzouille » 19 déc. 2008, 12:21

Salut,
je rencontre un petit probleme concernant mon script

J'affiche la liste du contenu d'un fichier avec
<?php
$dirname = 'admin/upload2/';
$dir = opendir($dirname); 

while($file = readdir($dir)) {
	if($file != '.' && $file != '..' && !is_dir($dirname.$file))
	{
		echo '<li><a href="'.$dirname.$file.'">'.$file.'</a></li></br>';
	}
}
closedir($dir);
 ?>
et j'aimerai integré ce petit code qui me permet de masquer l'extension (étant donné que la liste des fichiers constitue une partie du menu de mon site
<?php 
$path = "/home/httpd/html/index.php"; 
$file = basename($path); // $file is set to "index.php" 
$file = basename($path, ".jpg",".png"); // $file is set to "index" 
?>
Je ne sais pas quoi mettre dans le "$path ="

Pourriez vous m'aider ?
Merci d'avance