Pseudo base de donné avec un répertoire sur un serveur free

A

Anonyme

Invité
Bonsoir,
ce que je veux faire est... bizarre. Je m'explique; j'ai un serveur gratuit chez free, par mon abonnement ADSL, j'utilise ce serveur pour un site web mais également pour entreposer des fichiers personnels qui bien entendu sont protégés par un fichier .htaccess. Donc j'entre l'adresse du répertoire, puis mon id et mon mot de passe, et là j'accède à la page très simplifiée ou je vois mes fichiers. Ce que je voudrais, ça serait créer un fichier index.html dans mon dossier perso et que dans cette page html apparaissent les fichiers du répertoire où se trouve l'index.html (tous les fichiers seraient afficher sauf justement l'index html). Donc ça serait comme utiliser le dossier perso en tant que base de données. Comme cette explication est très mal faîte, je vais faire un schéma:

sh%C3%A9ma.tiff


Voilà j'espère que vous saurez m'aider, merci.
 
Heu... c'est la première fois que je manipule du php, je ne comprend strictement rien, je vais commencer par traduire les commentaires. J'ai cru comprendre qu'il y avait des fonctions aussi. Si tu as déjà utilisé ce code, pourrais tu m'aider un peu à comprendre stp ?

En fait il faudrait m'expliquer le concept même du php.
 
Dernière édition par un modérateur:
Bonjour,
Et bien ça s'appelle commencer de zéro :D :D

Je te conseille d'aller un peu sur wikipedia et/ou le site du zéro si ça t’intéresse, mais en gros le principe est le suivant :

Ton navigateur internet (safari, firefox, ...) ne sait comprendre que du html. C'est un langage fait de balises comme par exemple
Bloc de code:
<center><b>bonjour</b></center>
qui affiche bonjour en gras et au centre de la page. Si tu veux voir le code source de cette page tu peux faire "clic droit" n'importe où -> "code source".
Maintenant le php : Ton navigateur ne comprend pas le php (comme j'ai dis il ne comprend que le html), par contre un serveur php, lui peut comprendre du php et surtout, il sait comment créer du html à partir du php.
- Mais pourquoi s'emmerder avec le php ?
Et bin le php est un langage interprété dans lequel on peut par exemple placer des condition
Bloc de code:
     [COLOR=#000000] [COLOR=#0000BB]<?php
[/COLOR][COLOR=#007700]if ([/COLOR][COLOR=#0000BB]$a [/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000BB]$b[/COLOR][COLOR=#007700])
  echo [/COLOR][COLOR=#DD0000]"<center><b>center</b></center>"[/COLOR][COLOR=#007700];
[/COLOR][/COLOR][COLOR=#000000][COLOR=#007700]else[/COLOR][COLOR=#007700]
  echo [/COLOR][COLOR=#DD0000]"<u>bonjour</u>"[/COLOR][COLOR=#007700];[/COLOR][/COLOR]
[COLOR=#000000][COLOR=#007700]
[/COLOR][COLOR=#0000BB]?>[/COLOR][/COLOR]

Ainsi, si la variable a est supérieure à b, le code html renvoyé sera différent de si a est inférieur ou égale à b.

Je sens que c'est déjà un peu plus clair, mais qu'il reste des zones d'ombre. Passons à un peu de pratique.
Tout d'abord il te faut un éditeur de code. Je te conseille Fraise, mais peut-être en as-tu déjà un.
Ensuite, nous allons vérifier que ton serveur supporte bien le php : tu ouvres donc Fraise, tu crée un nouveau fichier que tu enregistre en tant que version.php et tu copies le code suivant à l'intérieur.
Bloc de code:
<?php phpinfo(); ?>
Maintenant tu places ce fichier sur ton serveur et tu y accède via ton navigateur
Bloc de code:
http://ton_espace.free.Fr/version.php
Normalement tu devrais voir une page avec le logo php et un tableau de 50 lignes. (Tu peux remarqué en faisant clic droit -> code source que le simple code phpinfo(); a été interprété et à produit une quantité monstrueuse de code html)
Maintenant que l'on sait que le php fonctionne (ou ne fonctione pas :rateau:) sur ton serveur, tu peux télécharger la dernière version de encode explorer et l'uploader sur ton serveur de la même façon.


:zen:
 
je ne commence pas vraiment de zéro, je sais déjà parfaitement coder en html, mais jamais je n'avais créé de page dynamique, je vais m'essayé un peu à ça... Mon éditeur s'appelle Smultron mais il ressemble parfaitement à "Fraise" (sauf le logo qui est une fraise vue de haut:)

smultron-icon.png

apparemment ça marche:

Capture%20d%E2%80%99%C3%A9cran%202012-01-29%20%C3%A0%2015.03.23.png

heu... j'ai copié l'index.php mais il apparait un message d'erreur:

Bloc de code:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/136/sdc/9/0/web.graphiz/perso/index.php on line 1526

Je suis aller chercher à la ligne 1526 mais je n'ai rien trouvé
 
Dernière édition par un modérateur:
Je n'ai pas testé le script donné plus haut&#8230;

Personnellement j'utilise le code suivant pour partager des fichiers (très facile à utiliser et à adapter à tes besoins). Je l'ai bricolé à partir de plusieurs sources trouvées ici et là. Personnellement, c'est pour des partages de fichiers temporaires avec des clients. Il n'y a donc qu'eux qui ont l'adresse et celle-ci est temporaire. Mais avec un htaccess en plus, c'est tout à fait sécurisé.

Simple et efficace, il ne m'a jamais fait défaut mais je ne cherche pas une navigation complexe, pas d'option de suppression de fichiers, etc. juste l'accès au contenu d'un répertoire :
On crée un répertoire, on y place cet "index.php" et les fichiers et on donne l'adresse "site/repertoire" à qui on veut.

Il est facile à mettre en forme, des classes CSS sont incorporées)
Il faut bien sûr remplacer "XXX" par le chemin de la CSS (ou incorporer une CSS pour le mettre en forme) mais ça t'es déjà familier.

J'ajoute que chaque document du dossier (chaque ligne du tableau, en fait) a une classe CSS commençant par "ftp-ico-" et finissant par l'extension (exemple : class="ftp-ico-pdf", ce qui permet par exemple de mettre une icône différente pour chaque type de document (via les CSS, bien sûr). On peut trouver des icônes ici, entre autres.

Code complet de mon fichier index.php :



Bloc de code:
<?php
// recup nom dossier parent
function my_dir(){
    $arfdn = explode('/', dirname($_SERVER['PHP_SELF']));
    return end($arfdn);
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FTP Index de <?php echo my_dir(); ?></title>
    <link rel="stylesheet" type="text/css" media="all" href="XXX" />
</head>
<body>

<div id="ftp-wrapper">
<h1>Contenu du répertoire : 
<?php 
echo my_dir(); // nom dossier parent
?>
</h1>

<div class="notes">
<p>N-B - Ce contenu a un caractère privé et provisoire.</p>
<p>Me confirmer par courriel que vous avez bien récupéré les fichiers.</p>
</div>


<table>

<?php


// returns the extension of a file
function strip_ext($name)
{           
         $ext = substr($name, strlen($ext)-4, 4);
           if(strpos($ext,'.') === false) // if we have a folder element
           {
               return "    "; // we return a string of space characters for later sort,
                             // so that the folder items remain on the first positions
           }
           return $ext; // if we have a file we return the extension - .gif, .jpg, etc.
}

// finds extention of file
function findexts($filename)
{
           $filename = strtolower($filename) ;
           $exts = split("[/\\.]", $filename) ;
           $n = count($exts)-1;
           $exts = $exts[$n];
           return $exts;
}

// returns the files from the $path and returns them in an array
function getFiles($path) {

   $files = array();
   $fileNames = array();
   $i = 0;
   // build
   if (is_dir($path)) {
       if ($dh = opendir($path)) {
           while (($file = readdir($dh)) !== false) {
               if (($file == ".") || ($file == "..")) continue;
               $fullpath = $path . "/" . $file;
               //$fkey = strtolower($file);
               $fkey = $file;
               while (array_key_exists($fkey,$fileNames)) $fkey .= " ";
               $a = stat($fullpath);
               $files[$fkey]['size'] = $a['size'];
               if ($a['size'] == 0) $files[$fkey]['sizetext'] = "vide";
               
               else if ($a['size'] > 1024 && $a['size'] <= 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " ko";
               
               else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mo";
               
               // else $files[$fkey]['sizetext'] = $a['size'] . " octets";
               
               else $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " ko";
               
               $files[$fkey]['name'] = $file;
               $e = strip_ext($file); // $e is the extension - for example, .gif
               $files[$fkey]['type'] = filetype($fullpath); // file, dir, etc
               $k=$e.$file; // we use this string for sorting the array elements by extension and filename;
               $fileNames[$i++] = $k;
           }
           closedir($dh);
       } else die ("Cannot open directory:  $path");
   } else die ("Path is not a directory:  $path");
   sort($fileNames,SORT_STRING); // sorting
   $sortedFiles = array();
   $i = 0;
   foreach($fileNames as $f) {
           $f = substr($f, 4, strlen($f)-4); // we remove the extension we added in front of the filename for sorting
           if($files[$f]['name'] !='') $sortedFiles[$i++] = $files[$f];   
    }// ends the foreach where we build the final sorted array
   return $sortedFiles;
}


// folder navigation code
$startdir = "./";
if(isset($_GET['dir'])) {
    $prev = $_GET['dir'];
    $folder = $_GET['dir'];   
    echo "<a href=\"javascript:history.go(-1)\">Retour</a>";
} else { $folder = $startdir; $prev='';}
// end folder navigation code


$files = getFiles($folder);

foreach ($files as $file) {
    if(strip_ext($file[name])!='.php'){
        if($file[type]=='dir') {
            $cmd='?dir='.$prev.$file[name].'/';
        }// if the element is a directory
        else $cmd=$prev.$file[name];
        echo "<tr class=\"ftpico-";       
        if($file[type]=='dir') {
             echo "dir";
        }
        else echo findexts($file[name]);
        echo "\"><td><a href=\"$cmd\" > $file[name]</a></td><td class=\"notes\" style=\"text-transform:uppercase\">";
        if($file[type]=='dir') {
             echo "&#8212;";
        }
        else echo findexts($file[name]);
        echo "</td><td class=\"notes\">$file[sizetext]</td></tr>";
    }//if strip_ext
}//foreach
?>

</table>

<div class="notes">
<p><a href="/">Page d'accueil</a></p>
</div>

</div>
</body>
</html>
Le seul truc que j'ai bien envie d'y ajouter maintenant que je touche un peu plus au PHP, c'est un petit compteur de téléchargement.

Capture écran d'exemple :
 
Dernière édition:
Ok je vas regarder ça, ça ressemble un peu plus à ce que je cherche; pas de partie upload dont je ne me servirais pas, et ça a l'air un peu plus simple ( je galère légèrement avec le php).
 
( je galère légèrement avec le php).

Pour commencer (si tu as besoin de modifier des choses) contente-toi de regarder comment sont construites les instructions "echo". Ce sont celles qui servent à afficher les variables PHP préalablement construites en les mixant à du HTML. En gros, dans les "echo" tu peux toucher à tout ce qui est entre les guillemet et qui ne commence pas par "$".

Attention les guillemets du html doivent être indiquée ainsi : \" (avec un anti-slash devant) pour bien signifier à PHP que ce ne sont pas les guillemets de fin de l'instruction echo.

Tout ce qui est en dehors des balises "<?php" et "?>" est du HTML tout ce qu'il y a de plus banal et tu en fais bien ce que tu veux.
 
En ce qui me concerne Free est à déconseiller tout court… (et dans tous les domaines).
Je n'aurais pas le droit de dire que ce sont des escrocs mais par contre j'ai parfaitement le droit de le penser très fort.

Mais en particulier pour de l'hébergement de site web : trop de limitations et, effectivement des conditions générales d'utilisation qui leur permettent de fermer les hébergements sans préavis.
 
Dernière édition:
Bonsoir,

Si je peux me permettre très respectueux modo :)D). Notre amis est venu chercher ici de l'aide concernant le php et notamment pour un script d'arborescence de fichier. En effet, bien que moi même client déçu d'orange et client déçu de bouygues, j'ai ouïe dire que Free proposait un espace de stockage plus que raisonnable mais que leurs services étaient parfois en déroute.C'est pourquoi moi même, je préconiserais OVH qui pour un investissement moindre offre sur l'année des services alléchants et surtout concurrentiels aux yeux de tous !
Cependant l'ami : Sache que la partie upload de "encode explorer" est de base désactivée.

Le php n'est pas méchant, les codes que tu pourra trouver de part et d'autre exploitent principalement des fonctions "merveilleuses" qui se démerdent elles-même. Ce que je veux dire, c'est qu'en cherchant bien tu trouvera peut-être un code qui fait 10 lignes de moins qu'un autre que quelqu'un t'aura proposé ; mais ce sera uniquement parce qu'il n'est compatible que php x.y. Tout cela évolue vite et si tu veux t'y retrouver un tantiné, va valoir faire un TP de 5 heures pour comprendre les bases. Niconemo t'as déjà expliqué "echo" mais ce n'est pas tout. Sincèrement, si tu as un peu de logique (bon sens), il est facile de prendre la main sur tout ça et c'est ce que je te conseille. Si tu est partant, sache tout de même que toute question est le bienvenu (et que les milliers de gens qui taperont "php how to parse a string into int" seront content de trouver ce lien si toi même tu te pose la question !

--------
Sinon, si vraimen
 
Je suis modo dans une autre section. Ici je suis un simple membre&#8230; :zen: (mon avis très personnel sur l'hébergeur sus cité n'est à prendre que comme ça)

&#8230;et moi même je me forme avec ça :

http://www.siteduzero.com/tutoriel-3-14668-concevez-votre-site-web-avec-php-et-mysql.html

et un peu de ça aussi :

http://sylvie-vauthier.developpez.com/tutoriels/php/grand-debutant/

Et franchement je conseille toute personne qui a déjà bien en main le html/css de s'y plonger. Même en commençant seulement par les premiers chapitres du premier lien (qui sont très ludiques) on acquiert de quoi comprendre et adapter un code pas trop complexe et bien structuré (même si on le déstructure un peu soi-même :D)
 
Dernière édition:
  • J’aime
Réactions: tantoillane