Lister un dossier en fonction du login

Lister un dossier en fonction du login - PHP - Programmation

Marsh Posté le 24-01-2009 à 20:32:49    

Bonjour à tous,
 
J'ai actuellement une page php qui est comme ceci :
 

Code :
  1. <?
  2. require("protec/passe/conf.php3" );
  3. $db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
  4. // SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
  5. $requete=mysql_db_query($sql_bdd,"select * from membre where id=\"$id\"",$db_link);
  6. // SI L'ID N'EXISTE PAS
  7. if(mysql_num_rows($requete)==0)
  8. {
  9. header("Location:$url_erreur" );
  10. }
  11. ?>
  12. </head>
  13. <body>
  14. <div id="menu_principal">
  15.   <div id="menu_conteneur"> </div>
  16. </div>
  17. <div id="general">
  18.   <div id="general_conteneur">
  19.     <div id="gauche"> </div>
  20.     <div id="droite">
  21.     </div>
  22.     <div id="centre">
  23.       <?php
  24.    $path = basename($_SERVER['SCRIPT_NAME'],".php3" );
  25.     {
  26. echo '<h2>Bienvenue '.str_replace ('_', ' ', $path).' sur votre espace personnel</h2>';
  27.    }
  28.   ?>
  29. </p>
  30. <table width="100%" border="0">
  31.   <tr>
  32.     <td><div align="center">
  33.       <p>&nbsp; </p>
  34.       <p>
  35.       </p>
  36.     </div></td>
  37.   </tr>
  38. </table>
  39. <p>&nbsp; </p>
  40. <p align="left">Vos factures sont class&eacute;es de la plus r&eacute;cente &agrave; la plus ancienne. Elles sont au format PDF. Si vous ne disposez pas d'Adobe Acrobat Reader pour les ouvrir et les imprimer, vous pouvez le t&eacute;l&eacute;charger gratuitement <a href="http://www.adobe.com/fr/products/acrobat/readstep2.html" target="_blank">ici</a>.</p>
  41. <p align="left" class="important">&nbsp;</p>
  42. <p align="left" class="important">&nbsp;</p>
  43. <p align="left" class="important">&nbsp;</p>
  44. <table cellpadding="3" cellspacing="1" class="particuliers">
  45.   <tr>
  46.     <th scope="col">Vos factures<br /></th>
  47.     <th scope="col">Date de mise en ligne<br />
  48.     <th scope="col">Taille du fichier<br /></th>
  49.   </tr>
  50.   <?php
  51. //Guillaume ROBERT pour le site Zerobug
  52. //http://www.zerobug.fr
  53. //Script permettant de lister tous les fichiers PDF d'un répertoire
  54. //dans un tableau et créant automatiquement des liens de  
  55. //téléchargement. Le fichier PDF ne s'ouvre donc pas par défaut  
  56. //dans le navigateur mais l'utilisateur aura le choix entre l'ouvrir
  57. //et le télécharger sur son disque dur
  58. function listing($dir)
  59. {
  60. $pdf_files = array();
  61. $dh = opendir($dir);
  62. while (false !== ($filename = readdir($dh)))
  63. {
  64. if(strtolower(strrchr($filename, '.')) == '.pdf')
  65. $pdf_files[] = $filename;
  66. elseif(strtolower(strrchr($filename, '.')) == '.zip')
  67. $pdf_files[] = $filename;
  68. }
  69. rsort($pdf_files);
  70. $sommepoids = "";
  71. foreach($pdf_files as $pdf_file)
  72. {
  73. /* à partir de là, on créé le lien forçant le
  74. //téléchargement du fichier PDF
  75. //Pour cela, il vous faudra créer dans chaque répertoire à lister
  76. //un fichier php (ici nommé down.php) composé comme ceci :
  77. //<?  
  78.     //header("Content-type: application/pdf" );  
  79.     //header("Content-Disposition: attachment; filename=$pdf" );  
  80.     //readfile($pdf);  
  81.     //?> */
  82. $poidsdufichier = round(filesize($dir."/".$pdf_file)/1024,2);
  83. $sommepoids += $poidsdufichier;
  84.   echo '<tr>
  85.           <td><p align="center"><a href="'.rawurlencode($dir).'/down.php?pdf='.rawurlencode(str_replace ('/', '', $pdf_file)).'">'.$pdf_file.'</a></p></td>
  86.         <td><p align="center">'.date ("d/m/Y", filectime($dir."/".$pdf_file)).'</p></td><td><p align="center">'.round(filesize($dir."/".$pdf_file)/1024,2) .'Ko</p></td>
  87.         </tr>';
  88. }
  89. echo '<p>'.count($pdf_files).' fichier(s) disponible(s) pour un poids total de '.$sommepoids.' Ko</p>';
  90.  }
  91.  
  92. listing($path);
  93. $urlComplete= rawurlencode(str_replace ('/', '', $value));
  94. ?>
  95. </table>
  96. </div>
  97. </div>
  98. </div>
  99. </body>
  100. </html>


 
Chaque client a sa propre page du type prenom_nom.php3. Chaque page est identique, seul son nom change car grâce au nom du fichier php3, je liste les fichiers qui sont dans le dossier prenom_nom ( $path = basename($_SERVER['SCRIPT_NAME'],".php3" );).
 
Je souhaiterai remodifier ça afin de n'avoir plus q'une seule page php3 qui se serve du login du client ($pseudo) pour lister le fichier. J'ai essayé, mais pas assez doué en php pour y arriver.
 
Est-ce que quelqu'un pourrait me donner un coup de main pour y arriver ?


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 24-01-2009 à 20:32:49   

Reply

Marsh Posté le 24-01-2009 à 23:00:02    

hyperion66 a écrit :

Je souhaiterai remodifier ça afin de n'avoir plus q'une seule page php3 qui se serve du login du client ($pseudo) pour lister le fichier. J'ai essayé, mais pas assez doué en php pour y arriver.

Euh ... qu'est ce qui t'empêche de faire $path = $pseudo ?
Si ça te génère une erreur, quelle est elle ?


---------------
By bob.
Reply

Marsh Posté le 24-01-2009 à 23:13:10    

Il me met une erreur dans ce cas au niveau de la ligne 67.


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 25-01-2009 à 10:11:49    

c'est à dire ? quel message d'erreur ?

Reply

Marsh Posté le 25-01-2009 à 12:52:01    

Je ne sais plus. Je retesterai ce soir et je vous mettrai le message.


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 25-01-2009 à 14:37:38    

À part ça, vire ta fonction "listing" du milieu de ton code, elle a rien à faire là.
 
Ensuite nettoie un peu ton code par exemple les lignes 45,46,47 sont pas d'une utilité flagrante à première vue


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 25-01-2009 à 17:49:00    

superbob56 a écrit :

Euh ... qu'est ce qui t'empêche de faire $path = $pseudo ?
Si ça te génère une erreur, quelle est elle ?


Voilà l'erreur :
 
Warning: readdir(): supplied argument is not a valid Directory resource in /homez.41/zerobug/www/gestion/Interface.php3 on line 67

Message cité 1 fois
Message édité par hyperion66 le 25-01-2009 à 17:49:23

---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 25-01-2009 à 18:07:54    

hyperion66 a écrit :


Voilà l'erreur :
 
Warning: readdir(): supplied argument is not a valid Directory resource in /homez.41/zerobug/www/gestion/Interface.php3 on line 67


Est-ce que le dossier correspondant à l'utilisateur existe bien ?


---------------
By bob.
Reply

Marsh Posté le 25-01-2009 à 18:09:07    

Oui, j'ai créé un dossier ayant pour nom le nom de l'utilisateur.


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 25-01-2009 à 18:30:01    

J'en doute.  
Ajoute un  

Code :
  1. if($dh === false)
  2. echo "Bad directory".$dir;


 
Après le opendir, tu verras que quelque chose joue pas.
 
Et relis mon post un peu plus haut


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 25-01-2009 à 18:30:01   

Reply

Marsh Posté le 25-01-2009 à 18:39:47    

esox_ch a écrit :

À part ça, vire ta fonction "listing" du milieu de ton code, elle a rien à faire là.
 
Ensuite nettoie un peu ton code par exemple les lignes 45,46,47 sont pas d'une utilité flagrante à première vue


La fonction listing qui est ligne 105 ?


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 25-01-2009 à 18:41:43    

En mettant ton code, j'ai cette erreur :
 
Bad directory
Warning: readdir(): supplied argument is not a valid Directory resource in /homez.41/zerobug/www/gestion/Interface.php3 on line 67
 
J'ai pourtant bien un dossier qui a le même nom que le pseudo de l'utilisateur.


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 25-01-2009 à 18:41:47    

Son ça c'est l'appel, il a tout à fait le droit d'être là.
Je parle de la définition de ta fonction, ligne 62. Qui doit, au pire être en haut de ta page, au mieux être dans un autre fichier que t'inclus. Sinon on n'y voit plus rien et toi non plus

 

Edit : Mon code allait pas te résoudre le problème. Mon code te fait voir que ta variable $dir est vide => ça va planter


Message édité par esox_ch le 25-01-2009 à 18:42:34

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 26-01-2009 à 20:04:12    

Désolé, je n'ai rien compris. Jusqu'à présent, ma fonction marche bien.


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 26-01-2009 à 20:22:37    

Si tout fonctionne bien pourquoi postes-tu en demandant de l'aide?
Je te répète une dernière fois :
 
Ton erreur est générée parce que la variable $dir ne contient pas ce que tu penses. Mets des "echo" pour voir ce qui se passe dans $dir et tu comprendras.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 26-01-2009 à 20:34:30    

Tout fonctionne bien à l'ancienne, à savoir avec un fichier par client.


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Marsh Posté le 26-01-2009 à 20:55:09    

J'abandonne. Bonne chance pour la suite


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 26-01-2009 à 21:19:22    

Merci quand même. Mais je cherche à récupérer la valeur du dossier à partir du pseudo du client, c'est ma seule question. Je ne pense pas qu'il faille tout modifier dans mon code pour cela.


---------------
MATOS VELO - Club Strava Matos Vélo
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed