Scanner un dossier sur votre site

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Scanner un dossier sur votre site

Message par Zorro »

pour un prg , je voulais pouvoir acceder au contenu d'un de mes dossiers sur mon site
le but c'est de connaître le contenu de ce dossier !
car si j'ajoute quelque chose, dans le dossier, il faut que mon prg le sache !
sans avoir a modifier mon prg en interne ! :mrgreen:
(pour afficher des images par exemple ... )

donc au lancement de mon prg, il faut qu'il puisse "scanner" le contenu du dossier sur mon site, qui contient les images, ou des sons
probleme aucune commande PB ne peut scanner un dossier sur un site ....(du moins pas a ma connaissance )

@Ar-s ça te serai peut etre utile pour ton prg de Smiley car avec ce code, tu peux modifier le contenu du dossier des images
directement en ligne ;)

et bien ... j'ai trouvé une solution , que je vous expose ici !


voici la methode :


il faut creer le dossier sur votre site qui contiendra vos images
perso ce sera : /xxx/img/

le dedans je collerai mes images, mes sons *.gif , *.png .....etc

a la racine du site je creer un fichier "Dir.php"
ce code va scanner mon dossier (bien sur il vous faut modifier le chemin vers VOTRE dossier :)
voici le contenu de dir.php :

;ce code a poser sur le site avec le nom "dir.php" , scan le dossier "/xxx/img/" et genere un fichier "file_dir.txt" a la racine du site
;contenant le nom de tout les fichiers du dossier "/xxx/img/"

il suffit de faire executer ce code par le prg Purebasic , ou bien de le faire a la main pour mettre a jour le fichier "file_dir.txt" qui contiendra le noms des fichiers

"dir.php"

Code : Tout sélectionner

<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
  </head>
  <body><br>
    
    
    
<?php

$file_rec ="file_dir.txt"; // Chemin vers fichier texte qui contiendra le nom de nos fichiers

$dirname = './xxx/img/'; // on defini le dossier a scanner ici le dossier "img" dans le dossier "xxx"
$dir = opendir($dirname); // on ouvre le dossier

# Ouverture en mode écriture
$fileopen=(fopen("$file_rec",'w+'));

#scan du dossier
while($file = readdir($dir)) {
if($file != '.' && $file != '..' && !is_dir($dirname.$file))
{
# echo '- <a href="'.$dirname.$file.'">'.$file.'</a>'.'<br /><br />'; // affiche le resultat 

fwrite($fileopen,$file ."\r\n"); // ecrit le nom trouvé dans le fichier

}
}

closedir($dir);
?>
 

  </body>
</html>

ce petit code, scan le dossier indiqué et creer un fichier "file_dir.txt" qui contiendra le nom
de tout les fichiers (image ou pas ) qui se trouve dedans ...

et devinez quoi ?
il suffit de récupérer ce fichier avec Purebasic et sa fonction ReceiveHTTPFile()

Code : Tout sélectionner

InitNetwork()
  If ReceiveHTTPFile("http://votre site/","file_dir.txt")
    Debug "Succès"
  Else
    Debug "Echec"
  EndIf
plus qu'a lire le contenu de "file_dir.txt" en le chargeant avec un simple OpenFile()
et ainsi acceder au graal , le contenu de notre dossier sur internet :)

Image
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Scanner un dossier sur votre site

Message par Ar-S »

Mon prog de smiley est très vieux, si je le refais, j'emploierai sans doute une technique similaire de listing dynamique en php. Je l'ai fait pour mon sheep up.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
TazNormand
Messages : 1294
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Scanner un dossier sur votre site

Message par TazNormand »

Perso je serai plus passé par les fonction "NetWork()", en utilisant une interrogation d'une adresse particulière (= à un script PHP), qui renverrai un fichier JSON correspondant à tes fichiers.

L'avantage, c'est que tu peux "protéger" tes accès à ton/tes dossiers via htaccess, tout en laissant ta connexion PB passer (genre mot de passe crypté envoyé par appli PB via SendNetworkString(), ton script php appelé voit que le bon user se connecte à l'adresse demandée, et donc renvoie le contenu du dossier via données au format JSON.

Je ne dis pas que c'est simple, mais au moins tes dossiers ne sont accessibles qu'à qui tu le souhaites, et il n'y a pas fichier créé sur le dossier distant.
Image
Image
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Scanner un dossier sur votre site

Message par Marc56 »

Techniquement ingénieux, mais:
« ... genere un fichier "file_dir.txt" a la racine du site ... »
L'as-tu testé chez un hébergeur ? car un hébergeur sérieux ne laisse pas les commandes d'écriture sur disque déclenchées par un script externe (porte ouverte à tout) :?
Donc ton fopen w+ ne fonctionnera pas nécessairement :wink:

Comme la plupart des accès en mode maintenance à un site se font par FTP, autant utiliser ExamineFTPDirectory() c'est bien plus simple et rapide :)
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Scanner un dossier sur votre site

Message par Zorro »

Marc56 a écrit : L'as-tu testé chez un hébergeur ? car un hébergeur sérieux ne laisse pas les commandes d'écriture sur disque déclenchées par un script externe (porte ouverte à tout) :?
marche tres bien chez Free.fr ! :)

test et vois :

http://michel.dobro.free.fr/dir.php

le Script n'est pas externe ;il est sur ton site ..... et c'est sur ton site qu'es generé le fichier de sortie
a partir du moment ou le php est sur ton compte, heureusement qu'il peut ecrire
sinon comment fonctionnerai les Forums Livre D'or et autres CMS sans BAse de données ??

de plus utiliser le FTP oblige a fournir le login et le pass ... au prg pas tres chaud ...

mais oui tu as raison , en FTP ça marche aussi :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Scanner un dossier sur votre site

Message par Ar-S »

Oui c'est comme pour récup les url pour nos webradios. A la différence ici qu'une page php génère automatiquement une liste dans un fichier txt (ou une page web au choix). Il faut bien sûr autoriser ce dossier dédié en écriture.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Scanner un dossier sur votre site

Message par Zorro »

voila :)

c'est clean au sens ou aucun mot de pass ne transite, puisque c'est du simple surf pour l'utilisateur ... :)

le truc c'est que si par FTP tu ajoutes des fichiers dans le fameux dossier ..

ben le prg client qui lui utilise ce fichier generé (qu'on peut appeler liste ou annuaire), sera a jour !! :)
sans meme avoir a recompiler le client :)

le concept peut ainsi etre etendu pour par exemple des personnages d'un jeux , un niveau de jeux
de la musiques, des dessins ....
bref tout ce qui peut etre consultable en lecture seule :)


ps: je vais desactiver mon "dir.php" pour le moment
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Scanner un dossier sur votre site

Message par Ar-S »

@Zorro
Tu peux éviter de mettre ton txt dans la racine et le mettre dans ton dossier de travail, tu ajoutes juste

Code : Tout sélectionner

&& $file != 'file_dir.txt'
dans ta ligne if($file .....).
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Scanner un dossier sur votre site

Message par Zorro »

oui merci .... :)

il me semble cependant qu'il est mieux de preciser ici

Code : Tout sélectionner

$file_rec ="file_dir.txt"; //ici tu met le path ou dois s'ecrire le fichier de sortie
modifié comme ça

Code : Tout sélectionner

$file_rec ="./xxx/file_dir.txt"; // Chemin vers fichier texte qui contiendra le nom de nos fichiers
comme ça le fichier de sorti reste dans le dossier de travail ("/xxx"):)

la condition que tu as touché sert a ne pas prendre en compte certains fichiers pendant le Scan


le code modifié donne ceci : (pour le dossier "/xxx/" )

Code : Tout sélectionner

<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
  </head>
  <body><br>
    
    
    
<?php

$file_rec ="./xxx/file_dir.txt"; // Chemin vers fichier texte qui contiendra le nom de nos fichiers

$dirname = './Pure_Smiley/img/'; // on defini le dossier a scanner ici le dossier "img" dans le dossier "Pure_Smiley"
$dir = opendir($dirname); // on ouvre le dossier

# Ouverture en mode écriture
$fileopen=(fopen("$file_rec",'w+'));

#scan du dossier
while($file = readdir($dir)) {
if($file != '.' && $file != '..' && !is_dir($dirname.$file)) 
{
echo '- <a href="'.$dirname.$file.'">'.$file.'</a>'.'<br /><br />'; // affiche le resultat

fwrite($fileopen,$file ."\r\n"); // ecrit le nom trouvé dans le fichier

}
}

closedir($dir);
?>
 

  </body>
</html>


du coup la recup deviens

Code : Tout sélectionner


InitNetwork()
If ReceiveHTTPFile("http://votre site/xxx/file_dir.txt","file_dir.txt")
	Debug "Succès"
Else
	Debug "Echec"
EndIf
#file=1

If ReadFile(#file, "file_dir.txt")   ; Si le fichier peut être lu , on continue...
	While Eof(#file) = 0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
		Debug ReadString(#file)      ; Affiche du fichier
	Wend
CloseFile(#file)               ; Ferme le fichier précédemment ouvert
Else
	MessageRequester("Information","Impossible d'ouvrir le fichier!")
EndIf
; Epb

Dernière modification par Zorro le lun. 06/juin/2016 17:15, modifié 3 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Scanner un dossier sur votre site

Message par Ar-S »

J'ai pris pour exemple ma page http://share.ldvmultimedia.com/ qui ajoute à la liste tout nouveau fichier uppé.. Tout est dans le même dossier. Du coup j'ai filtré les fichiers à ne pas inventorier ;)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Scanner un dossier sur votre site

Message par Zorro »

ha oui d'accords :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Répondre