Rechercher

Ajout sur un script

 
JcLoD
Date : 31/08/2011
Forum msgs : 5
Rank : Utilisateur

Ajout sur un script

Lien directde JcLoD le 31/08/2011 à 18:01
Salut a tous smile ,

Alors voila je ne m'y connais pas beaucoup en php donc j'aurais besoin de votre aide pour mon site : http://nightskill.mtxserv.fr/sourcetv.html
Mon souci c'est que le script si-dessous sert a transferer automatiquement des fichiers d'un ftp à un autre mes quand on va sur le site on voit que les fichiers ne sont pas classer par leur date de transfert, j'aurais aimer savoir s'il était possible d'ajouter quelque chose au script pour que les fichiers sur le site soit classer du moins vieux au plus vieux

Voici le script php:

<?php
// Nom du script : demolist_ftp.php
// Version : editer par JcLoD fonction not refresh
// Date : 27/9/2009                                                                                    
// Auteur : Thierry Vanneste alias jenlain
// Email : [email protected]
// Licence : GNU GPL http://www.gnu.org/licenses/gpl.txt
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// P A R A M E T R A G E
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$ftp_server = "ftp.verygames.net"; // l'adresse ftp du serveur de jeu. Par exemple ftp.verygames.net
$ftp_user_name = "dedigame632"; // le username ftp par exemple server0000
$ftp_user_pass = ""; // le password ftp par exemple ********
$ftp_dir = "/servers/server3542/games/halflife_source/orangebox/cstrike/"; //le chemin vers le repertoire ftp sur le serveur de jeu où sont stockées les démos, avec un / au debut et à la fin, en general (/games/half-life/cstrike/).  
$dest_dir = "./"; //le chemin vers le repertoire sur le serveur web où seront stockées les démos evc un / au debut et à la fin. Le repertoire doit être inscriptible (chmod 777)
$url = "http://nightskill.mtxserv.fr/demos/"; // l'url vers le répertoire où seront stockées les démos avec un / au bout.
$del = "1"; // Si 1  supprime les fichiers sur le serveur ftp qui sont deja presents sur votre site web
$limit = "12"; // Nombre de demos affichées par pages
$zipfile = "1"; // Si 1 les fichiers transférés seront compressés. (Pré-requis : php5 avec zlib)
// Pour connaitre le chemin vers la racine de votre serveur web, décommentez les deux lignes suivantes et relancez le fichier
//$root = getenv("DOCUMENT_ROOT") ;
//echo "<center>DOCUMENT_ROOT: " . $root . "</center>";
// Pour connaitre le repertoire ftp où sont affichées les démos, utilisez votre logiciel ftp, filezilla ou autre.
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// NE RIEN TOUCHER APRES CETTE LIGNE SI VOUS NE MAITRISEZ PAS LE CODE.
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
?>
<!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" xml:lang="en" lang="en">
<head>
<style type="text/css">
<!--
body,td,th {
        font-family: Arial, Helvetica, sans-serif;
        color: #FFFFFF;
        font-size: 12px;
}
a:link {
        color: #FFFFFF;
        text-decoration: none;
}
a:visited {
        text-decoration: underline;
        color: #FFFFFF;
}
a:hover {
        text-decoration: none;
        color: #FF0000; }
a:active {
        text-decoration: none;
        color: #FF0000; }
.page_numbers {
        display:table;          
        padding:0;
        margin:0 auto;
        font-family: arial, helvetica, sans-serif;
        white-space:nowrap;
        list-style-type:none;
}
* html .page_numbers {
        display:inline-block;
        width:1px;
        padding:0 2px;
 }  
.page_numbers li {
        display:table-cell;
 }
* html .page_numbers li {
        display:inline;
}
.page_numbers a {
        display:block;
        padding:0.2em 1em;
        color:#FFFFFF;
        text-decoration:none;
 }
* html .page_numbers a {
        display:inline-block;
        margin:0 -2px;
 }
.page_numbers a:hover {
        color:#FF0000;
        background:#000000;
 }
a.current {
        color:#FFFFFF;
        background:#000000;
        cursor:default;
 }
.others { color: #FF0000 }
-->
</style>
<!--[if IE]>
<style type="text/css">
.page_numbers  a { display:inline-block; }
.page_numbers ul li {display:inline; }
</style>
<![endif]-->
</head>
<body>

<?php
if ( empty($ftp_dir) | empty($dest_dir)) {
        die("<center>Désolé votre parametrage n'est pas correct<br>Veuillez éditer le fichier.</center> \n");       
        }
$webpage = basename($_SERVER['PHP_SELF']);
global $webpage;
$page = $_GET['page'];
?>
       
<div style="text-align: center;">
<p style="font-size: medium; font-weight: bold;"><?php echo $name; ?></p>
<FORM method="POST" action="<?php echo $PHP_SELF; ?>">
</FORM>
</div>

<?php
if(isset($_POST["action"])) {
$action = $_POST["action"];

        switch($action) {
                case "actualiser";
                        getfiles($dest_dir, $ftp_dir);
                        printfiles($dest_dir,$url);
                break;         
                }      
        }      
        else {
                printfiles($dest_dir,$url);
        }
?>

</body>
</html>
       
<?php  

function getfiles($dest_dir, $ftp_dir) {
        global $ftp_server , $ftp_user_name , $ftp_user_pass , $ftp_root, $del, $delage, $zipfile;     
        // Création de la connexion
        $conn_id = ftp_connect($ftp_server);
        // Authentification avec nom de compte et mot de passe
        $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
        // Vérification de la connexion
        echo "<div align=\"center\"> \n";
        if ((!$conn_id) || (!$login_result)) {
                die ("Connexion ftp " . $ftp_server . " non possible ! \n");
        } else {
                echo "Connexion ftp ok!... ";  
                $dir = $ftp_dir;
                //echo "<center>ftp dir : " . $dir . " </center> \n";
                $contents = ftp_nlist($conn_id, $dir);
                echo "Analyse du repertoire ftp... Veuillez patienter... \n" ;
                foreach($contents as $file){
                        $lenght = strlen($ftp_dir);
                        $get_file = substr($file, $lenght);
                        $ext = pathinfo($file, PATHINFO_EXTENSION);  
                        // Téléchargement des fichiers dont l'extension est .dem depuis le repertoire $ftp_dir
                        if ($ext == 'dem') {  
                                if (!file_exists($dest_dir.$get_file)) {
                                        echo "<center> File get : " . $file . " </center> \n" ;
                                        $buff = ftp_mdtm($conn_id, $file);
                                        $today = MkTime(Date("h,i,s,m,d,Y"));
                                        $days = number_format((($today - $buff)/86400), 1);
                                        //echo "Fichier en téléchargement : " . $get_file . " " . date("d.m.Y H:i", $buff) . ", Match effectué il y a : " . $days . " jr(s) <br> \n" ;
                                        ftp_get($conn_id, $dest_dir.$get_file, $dir.$get_file,FTP_BINARY);     
                                        $i = $i + 1;
                                        //effacement si option choisie dans le parametrage
                                        if ( $del == "1" ) {
                                                if (ftp_delete($conn_id, $file)) {
                                                        echo "File delete: " . $file. " done<br> \n";
                                                }
                                        }                                      
                                }                              
                        }
                }
                if ($i == "") {
                        echo "Aucun nouveau fichier à télécharger. \n";     
                } else {
                        echo " " . $i . " nouveau(x) fichier(s) téléchargés(s). \n";
                }              
                ftp_quit($conn_id); //deconnexion du ftp
                echo "Traitement terminé. </div> \n";
        }                      
}

function printfiles($dest_dir,$url) {  
        global $limit, $webpage, $page;
        $dir = @opendir($dest_dir);
        while ($file = readdir($dir)) {
                $ext = pathinfo($dest.$file, PATHINFO_EXTENSION);
                // placement des fichiers .dem dans un tableau pour pouvoir les trier
                        if ($ext == 'dem' || $ext == 'zip') {  
                                $ListFiles[$i]=$file;
                        $i++;  
                        }                      
        }
        closedir($dir);
        echo "<div align=\"center\"> \n";
        // tri par ordre decroissant - fonction rsort
    if(count($ListFiles)!=0) {
                rsort($ListFiles);
        }
        else {
                die("Il n'y a actuellement pas de fichier dans le repertoire de destination. \n");
        }
        // affiche les fichiers par ordre alphabetique decroissant dans des tables
        $total_pages = floor(count($ListFiles)/$limit) +1 ;
        $pagination = pagination($total_pages,$page);
        if ($page == "") {
                $page = 1;
        }
        $i = (($page - 1) * $limit) ;
        echo "Nombre total de fichiers : " . count($ListFiles) . " \n";
        //echo "limit = " . $limit . ", page = " . $page . ", i = " . $i . " <br> \n";
        echo "<table width=\"90%\"> \n"  ;
        echo "<tr><td width=\"80%\"><b> Filename <b></td><td width=\"20%\" align=\"center\"><b> Filesize(Mb) <b></td></tr>  \n" ;
        if ( count($ListFiles) > $limit ) {
                while ( $i < ($page * $limit) && $i < count($ListFiles)) {     
                        echo '<tr><td width="80%"><a href="' . $url.$ListFiles[$i] . '">' . $ListFiles[$i]. '</a></td><td width="20%" align="center" >' . number_format(filesize($dest_dir.$ListFiles[$i])/1000000, 1) . '</div></td></tr>',"\n";              
                        $i++;
                }
        }
        if ( count($ListFiles) <= $limit ) {
                while ( $i < count($ListFiles) ) {
                        echo '<tr><td width="80%"><a href="' . $url.$ListFiles[$i] . '">' . $ListFiles[$i]. '</a></td><td width="20%" align="center" >' . number_format(filesize($dest_dir.$ListFiles[$i])/1000000, 1) . '</div></td></tr>',"\n";              
                        $i++;
                }
        }
        echo "</table> \n";    
        echo "<div align=\"center\">" . $pagination . "</div> \n";
        echo "Free script from Jenlain - Designed & Edited by JcLoD\n";
        echo "</div> \n";
}

function pagination($total_pages,$page){
        //pagination_six
    global $webpage;
    $pagination = '<div class="page_numbers">
                    <ul>'
;                    
    if($total_pages!=1){    
        //the total links visible          
        $max_links=10;        
        //$max links_marker is the top of the loop
        //$h is the start        
        $max_links_marker = $max_links+1;            
        $h=1;                
        //$link_block is the block of links on the page
        //When this is an integer we need a new block of links                  
        $link_block=(($page-1)/$max_links);        
        //if the page is greater than the top of th loop and link block
        //is an integer        
        if(($page>=$max_links_marker)&&(is_int($link_block))){        
                //reset the top of the loop to a new link block        
            $max_links_marker=$page+$max_links;            
            //and set the bottom of the loop                    
            $h=$max_links_marker-$max_links;
            $prev=$h-1;                                                                    
        }        
            //if not an integer we are still within a link block        
        elseif(($page>=$max_links_marker)&&(!is_int($link_block))){            
                //round up the link block            
            $round_up=ceil($link_block);                    
            $new_top_link = $round_up*$max_links;            
                //and set the top of the loop to the top link            
            $max_links_marker=$new_top_link+1;            
                //and the bottom of the loop to the top - max links            
            $h=$max_links_marker-$max_links;
            $prev=$h-1;                            
        }        
          //if greater than total pages then set the top of the loop to
          // total_pages        
        if($max_links_marker>$total_pages){
            $max_links_marker=$total_pages+1;
        }        
            //first and prev buttons        
        if($page>'1'){
            $pagination.='<li class="current"><a href="'.$webpage.'?page=1">First</a></li>
            <li class="current"><a href="'
.$webpage.'?page='.($page-1).'">Prev</a></li>';
        }        
            //provide a link to the previous block of links            
        $prev_start = $h-$max_links;
        $prev_end = $h-1;
        if($prev_start <=1){
            $prev_start=1;
        }
        $prev_block = "Pages $prev_start to $prev_end";        
        if($page>$max_links){
            $pagination.='<li class="current"><a href="'.$webpage.'?page='.$prev.'">'.$prev_block.'</a></li>';
        }        
            //loop through the results            
        for ($i=$h;$i<$max_links_marker;$i++){
            if($i==$page){
                $pagination.= '<li><a class="current">'.$i.'</a></li>';
            }
            else{
                $pagination.= '<li><a href="'.$webpage.'?page='.$i.'">'.$i.'</a></li>';
            }
        }
            //provide a link to the next block o links        
        $next_start = $max_links_marker;
        $next_end = $max_links_marker+$max_links;
        if($next_end >=$total_pages){
            $next_end=$total_pages;
        }
        $next_block = "Pages $next_start to $next_end";
        if($total_pages>$max_links_marker-1){
            $pagination.='<li class="current"><a href="'.$webpage.'?page='.$max_links_marker.'">'.$next_block.'</a></li>';
        }        
          //link to next and last pages              
        if(($page >="1")&&($page!=$total_pages)){
            $pagination.='<li class="current"><a href="'.$webpage.'?page='.($page+1).'">Next</a></li>
                  <li class="current"><a href="'
.$webpage.'?page='.$total_pages.'">Last</a></li>';
        }
    }    
    //if one page of results    
    else{
      $pagination.='<li><a href="" class="current">1</a></li>';
    }
    $pagination.='</ul>
        </div>'
;    
    return($pagination);
}


?>


Je vous remercie d'avance :wink:

Cordialement JcLoD
Sky
sky
Date : 13/08/2003
Forum msgs : 4435
Rank : Admin
Localisation : toulouse

Re : Ajout sur un script

Lien directde sky le 01/09/2011 à 10:40
Bonjour

Je n'ai pas testé mes modifications sur la fonction prinfiles (je n'ai pas touché au reste), c'est une idée rapidos.

Le principe est de prendre la date de création du fichier avec filemtime() qui permet ensuite de faire un tri sur date_titredufichier.

Ensuite, lors de l'affichage proprement dit, on supprime la date du fichier pour avoir un nom de fichier correct.

C'est rapide et pas très propre, mais pour faire mieux faut recoder l'affichage et les calculs de paginations.
<?php
function printfiles($dest_dir, $url) {
    global $limit, $webpage, $page;
    $dir = @opendir($dest_dir);
    while ($file = readdir($dir)) {
        $ext = pathinfo($dest . $file, PATHINFO_EXTENSION);
        // placement des fichiers .dem dans un tableau pour pouvoir les trier
        if ($ext == 'dem' || $ext == 'zip') {
            $time = filemtime($dest_dir.$file);
            $ListFiles[$i] = $time.'_'.$file;
            $i++;
        }
    }
    closedir($dir);
    echo "<div align=\"center\"> \n";
    // tri par ordre decroissant - fonction rsort
    if (count($ListFiles) != 0) {
        rsort($ListFiles);
    } else {
        die("Il n'y a actuellement pas de fichier dans le repertoire de destination. \n");
    }
    // affiche les fichiers par ordre alphabetique decroissant dans des tables
    $total_pages = floor(count($ListFiles) / $limit) + 1;
    $pagination = pagination($total_pages, $page);
    if ($page == "") {
        $page = 1;
    }
    $i = (($page - 1) * $limit);
    echo "Nombre total de fichiers : " . count($ListFiles) . " \n";
    //echo "limit = " . $limit . ", page = " . $page . ", i = " . $i . " <br> \n";
    echo "<table width=\"90%\"> \n";
    echo "<tr><td width=\"80%\"><b> Filename <b></td><td width=\"20%\" align=\"center\"><b> Filesize(Mb) <b></td></tr>  \n";
    if (count($ListFiles) > $limit) {
        while ($i < ($page * $limit) && $i < count($ListFiles)) {
            $real_file_name = substr($ListFiles[$i], 0, 11);
            echo '<tr><td width="80%"><a href="' . $url . $real_file_name . '">' . $real_file_name . '</a></td><td width="20%" align="center" >' . number_format(filesize($dest_dir . $real_file_name) / 1000000, 1) . '</div></td></tr>', "\n";
            $i++;
        }
    }
    if (count($ListFiles) <= $limit) {
        while ($i < count($ListFiles)) {
            $real_file_name = substr($ListFiles[$i], 0, 11);
            echo '<tr><td width="80%"><a href="' . $url . $real_file_name . '">' . $real_file_name . '</a></td><td width="20%" align="center" >' . number_format(filesize($dest_dir . $real_file_name) / 1000000, 1) . '</div></td></tr>', "\n";
            $i++;
        }
    }
    echo "</table> \n";
    echo "<div align=\"center\">" . $pagination . "</div> \n";
    echo "Free script from Jenlain - Designed & Edited by JcLoD\n";
    echo "</div> \n";
}
?>

Gunning Sky
ViaPHP : Cours PHP
A quoi sert Internet Explorer ? A télécharger Firefox !
JcLoD
Date : 31/08/2011
Forum msgs : 5
Rank : Utilisateur

Re : Ajout sur un script

Lien directde JcLoD le 01/09/2011 à 14:49
Il y a un beug, le voici : http://nightskill.mtxserv.fr/demos/test.php

Je te remercie d'avance

cdt
Sky
sky
Date : 13/08/2003
Forum msgs : 4435
Rank : Admin
Localisation : toulouse

Re : Ajout sur un script

Lien directde sky le 01/09/2011 à 18:58
Ha oui, tient (tjrs pas testé... dsl, pas eu le temps) :
<?php
function printfiles($dest_dir, $url) {
    global $limit, $webpage, $page;
    $dir = @opendir($dest_dir);
    while ($file = readdir($dir)) {
        $ext = pathinfo($dest . $file, PATHINFO_EXTENSION);
        // placement des fichiers .dem dans un tableau pour pouvoir les trier
        if ($ext == 'dem' || $ext == 'zip') {
            $time = filemtime($dest_dir.$file);
            $ListFiles[$i] = $time.'_'.$file;
            $i++;
        }
    }
    closedir($dir);
    echo "<div align=\"center\"> \n";
    // tri par ordre decroissant - fonction rsort
    if (count($ListFiles) != 0) {
        rsort($ListFiles);
    } else {
        die("Il n'y a actuellement pas de fichier dans le repertoire de destination. \n");
    }
    // affiche les fichiers par ordre alphabetique decroissant dans des tables
    $total_pages = floor(count($ListFiles) / $limit) + 1;
    $pagination = pagination($total_pages, $page);
    if ($page == "") {
        $page = 1;
    }
    $i = (($page - 1) * $limit);
    echo "Nombre total de fichiers : " . count($ListFiles) . " \n";
    //echo "limit = " . $limit . ", page = " . $page . ", i = " . $i . " <br> \n";
    echo "<table width=\"90%\"> \n";
    echo "<tr><td width=\"80%\"><b> Filename <b></td><td width=\"20%\" align=\"center\"><b> Filesize(Mb) <b></td></tr>  \n";
    if (count($ListFiles) > $limit) {
        while ($i < ($page * $limit) && $i < count($ListFiles)) {
            $date_fichier = substr($ListFiles[$i], 0, 11);
            $real_file_name = preg_replace("#$date_fichier#", '', $ListFiles[$i]);
            echo '<tr><td width="80%"><a href="' . $url . $real_file_name . '">' . $real_file_name . '</a></td><td width="20%" align="center" >' . number_format(filesize($dest_dir . $real_file_name) / 1000000, 1) . '</div></td></tr>', "\n";
            $i++;
        }
    }
    if (count($ListFiles) <= $limit) {
        while ($i < count($ListFiles)) {
            $date_fichier = substr($ListFiles[$i], 0, 11);
            $real_file_name = preg_replace("#$date_fichier#", '', $ListFiles[$i]);
            echo '<tr><td width="80%"><a href="' . $url . $real_file_name . '">' . $real_file_name . '</a></td><td width="20%" align="center" >' . number_format(filesize($dest_dir . $real_file_name) / 1000000, 1) . '</div></td></tr>', "\n";
            $i++;
        }
    }
    echo "</table> \n";
    echo "<div align=\"center\">" . $pagination . "</div> \n";
    echo "Free script from Jenlain - Designed & Edited by JcLoD\n";
    echo "</div> \n";
}
?>

Gunning Sky
ViaPHP : Cours PHP
A quoi sert Internet Explorer ? A télécharger Firefox !
JcLoD
Date : 31/08/2011
Forum msgs : 5
Rank : Utilisateur

Re : Ajout sur un script

Lien directde JcLoD le 01/09/2011 à 19:27
Nikel ca a marcher : http://nightskill.mtxserv.fr/demos/test.php

Par contre il l'est classe par rapport a la date mais y a t-il moyen qu'il est classe en meme temps avec les heures et minutes car j'ai regarder ils sont classer par jours mais il ne classe pas les heures si c'est possible de modifier ca, ca serait nikel

Merci d'avance
 

You need a account to use the forum.

Inscription

Connexion