demande de conseils

Eléphanteau du PHP | 17 Messages

30 déc. 2008, 00:00

oui je sais et je te prepare un tuto depuis ce matin alors patience...... 8-)
qui vivra vera et vice versa!
http://elgaucho2711.labrute.fr/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 déc. 2008, 00:11

Ce n'est à priori pas faisable en php, celui-ci ne pouvant pas lister les fichiers du disque dur de l'utilisateur depuis le serveur.

Il faudrait pour cela installer un serveur php et un script spécifique sur chacun des postes clients, pour lister les fichiers du disque et leurs permettre de les envoyer vers le serveur. Si techniquement cela peut se faire, php n'est clairement pas le langage le plus aproprié pour cela (déjà la galère de maintenance pour faire une mise à jour du script sur tous les postes clients...)

Une applet java (ou peut être flash ?) ou un client lourd (comme ton client ftp) serait probablement plus adaptée.

Maintenant je ne parle que du côté visuel. Tu peux très bien proposer un input de type "file" à tes utilisateurs pour leur permettre de spécifier un fichier de leur disque (là c'est le navigateur qui gère le choix dans une liste) et l'envoyer sur le serveur dans un dossier particulier avec des infos destinée à une bdd par exemple :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 17 Messages

30 déc. 2008, 01:15

c'est pas tout a fait faux, mais on peus imaginer utiliser des disque reseaux par exemplece qui rend la chose plus realisable mais il est evident qu'un langage de programation comme c# serait plus adapté, mais a coeur vaillant rien d'impossible.... :lol:
qui vivra vera et vice versa!
http://elgaucho2711.labrute.fr/

Eléphanteau du PHP | 25 Messages

30 déc. 2008, 01:18

je pense que ça sera avec javascript ou bien ajax,
toute information sera le bien venue

Eléphanteau du PHP | 17 Messages

30 déc. 2008, 14:17

bon voila alors j'ai fais un tuto pour toi mais il faudra certainement l' ameliorer.

alors on commence par un script de login , on ne voudrais pas que n'importe qui se connecte,

alors voici login.php :
<? //session_start ();?>

<form action="login session.php" method="post">
<br><input type="text" name="usr">login</br>
<br><input type="password" name="pwd">password</br>
<input type="submit" value="connexion">
</form>

sa donne sa :
Image
jusque la rien de bien compliqué c'est un form avec un input type text et un password,

avec un submit vers un script de session, le voici

login session .php:



<?php session_start() ;
header('location: ./verif.php' );
?>
<?php 

$_SESSION["usr"]=$_POST["usr"];

$_usr=$_POST["usr"];

$_SESSION["pwd"]=$_POST["pwd"];

$_pwd=$_POST["pwd"];

?>
alors ici tu recupere les info user et password, et tu redirige le user vers un script de verification d'identité.

voice le script en question

verif.php
<?php session_start (); ?>
<?
//info de session
if (isset ($_SESSION["usr"])) {
$usr= $_SESSION["usr"];
$pwd= $_SESSION["pwd"];

//verif du user
if( $usr == "root" ){ 
$usrchk ="ok"; echo $udrchk;}
else {
$usrchk = "Pok";
}
//verif du pass
if( $pwd == "root" ) {
$pwdchk ="ok";
}
else { 
$pwdchk = "pok";
}

$ok= $usrchk.$pwdchk;
echo $ok;
}

//si usr et pass ok 
if ($ok == "okok"){
echo "connexion autorisé, vou allez etre redirigez vers votre aplication.";
echo "<meta http-equiv='refresh' content='5;url=test (2).html'> ";

//header('location: ./test (2).html' );
}
//si usr et pass pas ok
else {
echo "connexion non autorisé pour usr=".$usr."pwd=".$pwd;
}

?>
et sa donne sa :

Image

ou sa :
Image


bon maintenant que la partit securité est vu on passe a se qui t'interesse,
le navigateur!

a partir de la sa ce complique un peu on va utiliser trois fichiers qui contiennent des frames (j'ai pas pus le faire en un si quelqu'un a une idée je suis preneur)et deux autres qui sont des fichier include et encore deux fichiers de session

j'expliquerai chacun d'eux pas a pas.

alors on commence par le premier fichier de frame, le voila

test2.php

<?php session_start (); ?>
<?
 //verification des autorisation 
if ($ok == "okok"){
echo "<FRAMESET COLS='50%,50%'><FRAME SRC='row1.php' NAME='gauche'><FRAME SRC='row2.php'  NAME='droit'></FRAMESET>";
}
else {
echo "connexion non autorisé";
}
?>
donc ici on demande l'affichage d'un frameset en deux colonnes qui occupe chacunes 50% de l'espace de la page, est qui ont pour source row1.php et row2.php

voici row1 :


<FRAMESET ROWS="100%">
<FRAME SRC="./tlf/1.php"
	  NAME="1">

</FRAMESET>
celui ci affiche une ligne, il point vers notre explorateur de source,
row2 est identique sauf qu'il pointe vers l'explorateur de destination.

<FRAMESET ROWS="100%">
<FRAME SRC="./dest/3.php"
	  NAME="3">

</FRAMESET>

passons au vif du sujet,

1.php, conporte un frameset de deux frames en ligne (row)
nb: chaque frame se comporte comme une page web unique.
<? session_start () ;
// HAUT DE PAGE COMMUN
?><HTML><HEAD>
   <TITLE>explorateur</TITLE>
</HEAD><?


// GÉNÉRATION DU FRAMESET
if(!@$_GET["frame"]) { ?><?php include '../4.php';  ?>

   <FRAMESET rowS="50%,50%" frameborder=0>
      <FRAME SRC="<? echo $_SERVER["SCRIPT_NAME"]?>?frame=menu" NAME="menu">
      <FRAME SRC="<? echo $_SERVER["SCRIPT_NAME"]?>?frame=image" NAME="image">
   </FRAMESET>

<? }
// FRAME MENU


elseif($_GET["frame"]=="menu") { ?> 

   <BODY bgcolor=white><left>

      <? // Dossier en cours
	  
	  
      $curdir = @$_GET["dir"];
      if(!$curdir) $curdir = ".";
      
      echo "<b><img src='../img/dvo.png' border=0 width=35>Dossier ".$curdir."</b><br><br>\n";

      // LISTE DES DOSSIERS COURANTS
      $dir = opendir($curdir);
      // on scanne le répertoire
      while($p=readdir($dir)) {
         // si c'est un dossier sauf . (current directory)
         if(is_dir($curdir."/".$p)&&($p!=".")) {
            // si c'est le dossier .. (parent directory)
            if($p=="..") {
               // si ce n'est pas dans le dossier racine
               if($curdir!=".") {
                  // lien vers le dossier parent
                  $tmp = strrpos($curdir,"/");
                  echo "<A href='?frame=menu&dir=".substr($curdir,0,$tmp)."'
                     target=menu><img src='../img/back.gif' border=0 width=35>Parent Directory</A><br>\n";
               }
            // sinon, lien vers le dossier
            } else {
               echo "<A align='left' href='?frame=menu&dir=".$curdir."/".$p."' target=menu><img src='../img/dvf.png' border=0 width=35>".$p."</A><br>\n"; 
            }
         }
      }
      closedir($dir);

      // LISTE DES IMAGES DU DOSSIER COURANT
      $dir = opendir($curdir);
      // on scanne le répertoire
      while($p=readdir($dir)) {
         // si c'est un fichier 
		 $ww= pathinfo($p, PATHINFO_EXTENSION);
       if ($ww == "php") $w="../img/php.png" ; if ($ww == "xls") $w="../img/xls.png" ;if ($ww == "html") $w="../img/html.png" ;if ($ww == "txt") $w="../img/txt.png" ;if ($ww == "doc") $w="../img/doc.png" ;if ($ww == "mdb") $w="../img/mdb.png" ;  if(is_file($curdir."/".$p)) {
            // si c'est une extension d'image
            $ext = strtolower(substr($p, strrpos($p, '.') + 1));
            if(   ($ext=="txt") || ($ext=="mdb")
               || ($ext=="html")
               || ($ext=="doc")
			   || ($ext=="php")
               || ($ext=="xls")) {
               // lien vers l'image
			   
                echo "<TABLE BORDER='0' cellspacing='10'cellpadding='10'><th align='left'><A href='?frame=image&dir=".$curdir."&image=".$p."' alt='info detaillé' target=image><img src='".$w."' alt='info detaillé' border=0 width=35>".$p."</th></A><form action='../5.php' method='post'><th><input type='hidden' value='1' name='copie'><input type='hidden' value='".$curdir."/".$p."' name='path'><input type='hidden' value='".$curdir."/".$p."' name='path'><input type='hidden' value='".$p."' name='name'><input type='submit' value='copier' ></form></th></table>\n";
            }
         }
      }
      closedir($dir);

      // MISE A JOUR DE LA FRAME IMAGE
      ?><script>
         top.image.location="?frame=image&dir=<?echo $curdir?>"
      </script>
      
   </center></BODY>

<? }
// FRAME IMAGE
elseif($_GET["frame"]=="image") { ?>

   <BODY bgcolor=gray>
      <table width=100% height=100%><tr>
         <td align=center>
 <? include '../2.php';  if ($y == "php") $z="../img/php.png" ; if ($y == "xls") $z="../img/xls.png" ;if ($y == "html") $z="../img/html.png" ;if ($y == "txt") $z="../img/txt.png" ;if ($y == "doc") $z="../img/doc.png" ;if ($y == "mdb") $z="../img/mdb.png" ;?>
      <? // AFFICHAGE DE L'IMAGE
     if (isset ($z)) {  
      
      echo  "<img src='".$z."' width=50>";
}
      
     ?>

         </td>
      </table>
   </BODY>

<? }
// BAS DE PAGE COMMUN
?></HTML>
voila le navigateur de fichier
il se compose donc de deux frames,
la frames superieur affiche les dossier et les fichiers, celle inferieur affiche certaine propriete du fichier (tu choisis a ta guise la c'est pour l'exempple).
a coté de chaque fichier tu trouve un bouton copier , il te permet la copie vers le dossier cible(que nous allons voir apres).

le script include deux autres script qui sont des function, les voici :

2.php




<br><?php 



$x= @$_GET["dir"]."/".$_GET["image"]; 
$y= pathinfo($x, PATHINFO_EXTENSION);

$file = $x;

outputFileTestInfo( $file );
function outputFileTestInfo( $f1 ){
   if ( ! file_exists( $f1 ) ){
       print "$f1 does not exist<BR>";
      return;
   }
   print "$f1 is ".(is_writable( $f1 )?"":"not ")."writable<br>";
   
}
?></br>

<br><?php 


   echo "File last accessed: ".date("m-d-y g:i:sa", fileatime($file));
   

?></br>
<br><?php
   
   echo "File last modification: ".date("m-d-y g:i:sa", fileatime($file));
?></br>

<br><?php
  

  if (file_exists ($file)) {
    $checksize=filesize ($file);
    echo "file size:"."$checksize"/1024 ._kb;
  } else {
    echo "The file doesn't exist!";
  }
?></br>
<br><?php
  

  if (is_readable ($file)) {
    echo "The file can be read!", "\n";
  } else {
    echo "The file cannot be read.", "/n";
  }
  
  if (is_writable ($file)) {
    echo "<br>The file can be used for writing!</br>", "\n";
  } else {
    echo "<br>The file cannot be used for writing.</br>", "\n";
  }

  if (is_executable ($file)) {
    echo "<br>The file is executable!</br>", "\n";
  } else {
    echo "<br>The file is not executable.</br>", "\n";
  }
 
?>

</br>

celui ci s'occupe des propriété du fichier,et l'autre
4.php

<?php


$x= @$_GET["dir"]."/".$_GET["image"];
$y= pathinfo($x, PATHINFO_EXTENSION);
$x2= $x;
?>

s'occupe de recuperer les noms de dossier ,fichier et extention.

mon navigateur de destination est simillaire a la difference du boutton qui sert a effacer les fichiers
desiré

et d'une condition d'etat qui sert a autorisé la copie ou la supression.

le voici :
3.php


<? session_start () ;
// HAUT DE PAGE COMMUN
?><HTML><HEAD>
   <TITLE>Catalogue de photos</TITLE>
</HEAD><?

// GÉNÉRATION DU FRAMESET
if(!@$_GET["frame"]) { ?>

   <FRAMESET rowS="50%,50%" frameborder=0>
      <FRAME SRC="<? echo $_SERVER["SCRIPT_NAME"]?>?frame=menu" NAME="menu">
      <FRAME SRC="<? echo $_SERVER["SCRIPT_NAME"]?>?frame=image" NAME="image">
   </FRAMESET>

<? }
// FRAME MENU
elseif($_GET["frame"]=="menu") { ?> 

   <BODY bgcolor=white><left>

      <? // Dossier en cours
      $curdir = @$_GET["dir"];
      if(!$curdir) $curdir = ".";
      
      echo "<b><img src='../img/dvo.png' border=0 width=35>Dossier ".$curdir."</b><br><br>\n";
	  

      // LISTE DES DOSSIERS COURANTS
      $dir = opendir($curdir);
      // on scanne le répertoire
      while($p=readdir($dir)) {
         // si c'est un dossier sauf . (current directory)
         if(is_dir($curdir."/".$p)&&($p!=".")) {
            // si c'est le dossier .. (parent directory)
            if($p=="..") {
               // si ce n'est pas dans le dossier racine
               if($curdir!=".") {
                  // lien vers le dossier parent
                  $tmp = strrpos($curdir,"/");
                  echo "<A href='?frame=menu&dir=".substr($curdir,0,$tmp)."'
                     target=menu><img src='../img/back.gif' border=0 width=35>Parent Directory</A><br>\n";
               }
            // sinon, lien vers le dossier
            } else {
               echo "<TABLE BORDER='0' cellspacing='10'cellpadding='10'><th align='left'><A align='left' href='?frame=menu&dir=".$curdir."/".$p."' target=menu><img src='../img/dvf.png' border=0 width=35>".$p."</th></A><br>\n";
            }
         }
      }
      closedir($dir);
	  

      // LISTE DES IMAGES DU DOSSIER COURANT
      $dir = opendir($curdir);
      // on scanne le répertoire
      while($p=readdir($dir)) {
         // si c'est un fichier
		  $ww= pathinfo($p, PATHINFO_EXTENSION);
       if ($ww == "php") $w="../img/php.png" ; if ($ww == "xls") $w="../img/xls.png" ;if ($ww == "html") $w="../img/html.png" ;if ($ww == "txt") $w="../img/txt.png" ;if ($ww == "doc") $w="../img/doc.png" ;if ($ww == "mdb") $w="../img/mdb.png" ;  if(is_file($curdir."/".$p)) {
         if(is_file($curdir."/".$p)) {
            // si c'est une extension d'image
            $ext = strtolower(substr($p, strrpos($p, '.') + 1));
            if(   ($ext=="txt") || ($ext=="mdb")
               || ($ext=="html")
               || ($ext=="doc")
			   || ($ext=="php")
               || ($ext=="xls")) {
               // lien vers l'image
       echo "<TABLE BORDER='0' cellspacing='10'cellpadding='10'><th align='left'><A href='?frame=image&dir=".$curdir."&image=".$p."' alt='info detaillé' target=image><img src='".$w."' alt='info detaillé' border=0 width=35>".$p."</th></A><form action='../6.php' method='post'><th><input type='hidden' value='1' name='unlink'><input type='hidden' value='".$curdir."/".$p."' name='path1'><input type='hidden' value='".$p."' name='name1'><input type='submit' value='effacer' ></form></th></table>\n";
   
            }
         }
      }
	  }
      closedir($dir);
	  
if (isset ($_SESSION["copie"])) {
$copy= $_SESSION["copie"];
$path= $_SESSION["path"];

$name= $_SESSION["name"];
if( $copy == 1 ) 
$array1= str_ireplace ("./","/",$path);
$array2= str_ireplace ("./","/",$name);
echo 'http://127.0.0.1:8081/2/row/tlf'.$array1; echo $curdir."/".$name;
!@copy('http://127.0.0.1:8081/2/row/tlf'.$array1, $curdir."/".$array2);
unset($_SESSION['copie']);
unlink ("./".$name);


}
if (isset ($_SESSION["unlink"])) {
$unlink= $_SESSION["unlink"];
$path1= $_SESSION["path1"];

$name1= $_SESSION["name1"];
if( $unlink == 1 ) 

$array4= str_ireplace ("./","/",$name);
echo $path1; //echo $curdir."/".$name;
unlink ($path1);

}

      // MISE A JOUR DE LA FRAME IMAGE
      ?><script>
         top.image.location="?frame=image&dir=<?echo $curdir?>"
      </script>
      
   </center></BODY>

<? }
// FRAME IMAGE
elseif($_GET["frame"]=="image") { ?>



   <BODY bgcolor=gray>
      <table width=100% height=100%><tr>
         <td align=center>
		 <? include '../2.php';  if ($y == "php") $z="../img/php.png" ; if ($y == "xls") $z="../img/xls.png" ;if ($y == "html") $z="../img/html.png" ;if ($y == "txt") $z="../img/txt.png" ;if ($y == "doc") $z="../img/doc.png" ;if ($y == "mdb") $z="../img/mdb.png" ;?>
 
      <? // AFFICHAGE DE L'IMAGE
      if (isset ($z)) {  
      
      echo  "<img src='".$z."' width=50>";
} ?>
      
      

      

         </td>
      </table>
   </BODY>

<? }
// BAS DE PAGE COMMUN
?></HTML>
cette ligne
unset($_SESSION['copie']);
est indispenssable sinon on a droit a des copie intempestive qui semble aleatoire(mais qui ne le sont pas) .
l'ecriture a la racine du dossier destination est aussi interdite.
celui ci include 2.php, et utilise deux script de session ,un pour la copie l'autre pour effacer les fichier

voici pour la copie:
5.php


<?php 
header('location: ./tlf/1.php?frame=menu' );
session_start() ;

$_SESSION["copie"]=$_POST["copie"];

$_copie=$_POST["copie"];

$_SESSION["path"]=$_POST["path"];

$_path=$_POST["path"];

$_SESSION["name"]=$_POST["name"];

$_name=$_POST["name"];


?>
dans celui ci cette ligne :
header('location: ./tlf/1.php?frame=menu' );
est importante elle permet le retour a la frame de navigation sans reafficher encore la frame de proprieté.

on arrive au dernier script:
6.php
<?php 
header('location: ./dest/3.php?frame=menu' );
session_start() ;

$_SESSION["unlink"]=$_POST["unlink"];

$_unlink=$_POST["unlink"];

$_SESSION["path1"]=$_POST["path1"];

$_path1=$_POST["path1"];

$_SESSION["name1"]=$_POST["name1"];

$_name1=$_POST["name1"];

?>
et voila!!!

et sa donne sa en pratique:

Image

maintenant pour copier 2.html vers html tu ouvre le dossier html et tu clik copier devant 2.html

apres tu actualise et tu verras ton fichier.

moi je l'ai fait en http mais c aussi possible en ftp et avec une unc(lecteur reseaux)

ya un bug que je n'ai pas pus enlever au demarage du site ,mais qui part des que l'on regarde les proprieté d'un fichier.
ton arborescence doit ressembler a sa :
\root-->\dossier source
\dossier source -->1.php
\dossier source -->tes fichiers et dossiers source
\root-->\image
\root-->\dossier de destination
\dossier de destination-->3.php
\dossier de destination-->tes dossier de classement
\root-->2.php
\root-->4.php
\root-->5.php
\root-->6.php
\root-->login.php
\root-->login session.php
\root-->verif.php
\root-->test2.php
\root-->row1.php
\root-->row2.php



et voila, si tu as des questions n'hesite pas , et si qui que ce soit veus apporter des modification ou et surtout des simplifications n'hesitez pas non plus!

@*+
qui vivra vera et vice versa!
http://elgaucho2711.labrute.fr/

Eléphanteau du PHP | 25 Messages

31 déc. 2008, 15:47

Merci beaucoup pour ta réponse mais c'es que cherche est d'avoir comme l'explorer de windows avec deux arbres (tree) comme representé dans cette photo svp
Image
Image
Toute information sera le bien venue et merci d'avance

Eléphanteau du PHP | 17 Messages

31 déc. 2008, 16:08

avec ce que je t'ais fais tu est en mesure de le faire si tu galere je me ferais un plaisirs de t'aider mais je t'ai deja pas mal macher le travail :D !

si t'as des question sur les scripts n'hesite pas.
@*+
qui vivra vera et vice versa!
http://elgaucho2711.labrute.fr/