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 :

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 :
ou sa :
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:
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!
@*+