Ajout d'une fonction d'un script de transfert php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajout d'une fonction d'un script de transfert php

Re: Ajout d'une fonction d'un script de transfert php

par JcLoD » 07 mars 2012, 01:39

Bonjour,

A priori au niveau du serveur de jeu on m'a dit que rien ne pourrai posez problème à la connexion, ils m'ont dit que ca pourrait être au niveau de mon hébergement web mais le script fonctionnait très bien avant sur un serveur de jeu possédant le port par défaut (21) donc la je ne vois pas pourquoi j'ai ces erreurs avec se serv.

Je ne sais pas si vous avez une idée, en tous cas merci d'avance

Re: Ajout d'une fonction d'un script de transfert php

par JcLoD » 05 mars 2012, 22:56

Ok je demanderais a celui qui s'occupe du serv quand il sera co, merci pour le moment en tout cas

Re: Ajout d'une fonction d'un script de transfert php

par Ryle » 05 mars 2012, 22:22

Ok, et est-ce que tu fais le test en local ou sur un serveur en ligne ? Si tu es sur un serveur hébergé, il se peut que le port 8821 soit bloqué (par un firewall ou autre) et empêche php de s'y connecter...

Re: Ajout d'une fonction d'un script de transfert php

par JcLoD » 05 mars 2012, 22:05

Oui car je me connect au ftp du server avec ces identifiants ...

Re: Ajout d'une fonction d'un script de transfert php

par Ryle » 05 mars 2012, 21:47

C'est sans doute que la connexion ftp via ftp_connect() n'a pas fonctionné... et au lieu d'avoir une ressource en résultat, tu récupère la valeur false qui indique un problème de connexion.. es-tu sur de l'ip et du port à utiliser ?

Re: Ajout d'une fonction d'un script de transfert php

par JcLoD » 05 mars 2012, 21:44

Merci pour ta réponse mais le script renvoi une erreur quand on clique sur actualiser (http://up.florianlp.fr/teststv.php):

Code : Tout sélectionner

Warning: ftp_login() expects parameter 1 to be resource, boolean given in /home/florianl/public_html/up/teststv.php on line 143 Warning: ftp_pasv() expects parameter 1 to be resource, boolean given in /home/florianl/public_html/up/teststv.php on line 144 Connexion ftp 88.190.36.182 non possible !
Si tu c'est pourquoi je suis prenneur de la réponse ^^ Merci d'avance

Re: Ajout d'une fonction d'un script de transfert php

par Ryle » 05 mars 2012, 21:23

Au moment où tu initialise la connexion avec ton ftp, il faut spécifier le port en plus de l'adresse du serveur ftp :
...
// Création de la connexion
$conn_id = ftp_connect($ftp_server, 8821);
...
Tu peux aussi modifier la fonction pour que cette valeur soit passée en paramètre, comme pour $ftp_server :)

Re: Ajout d'une fonction d'un script de transfert php

par JcLoD » 05 mars 2012, 02:26

J'utilise FilleZilla mais le souci c'est que c'est des fichiers assez lourd qui sont transférés donc ça me simplifie beaucoup la tâche !

Re: Ajout d'une fonction d'un script de transfert php

par AB » 05 mars 2012, 02:14

Et un client ftp comme FileZilla ne pourrait-il pas répondre à tes besoins ?

Ajout d'une fonction d'un script de transfert php

par JcLoD » 05 mars 2012, 01:51

Bonsoir,

J'ai un souci avec un script en php de transfert de fichier d'un ftp à un autre.

Voici le code:
<?php
// Nom du script : demolist_ftp.php
// Version : editer par JcLoD fonction delete [on], fonction zip [off]
// 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 = "88.190.36.***"; // l'adresse ftp du serveur de jeu. Par exemple ftp.verygames.net
$ftp_user_name = "***"; // le username ftp par exemple server0000
$ftp_user_pass = "****"; // le password ftp par exemple ********
$ftp_dir = "/88.190.36.000_00000/css/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 = "./SLC-SOURCETV/"; //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://up.florianlp.fr/SLC-SOURCETV/"; // 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: #000000; 
	font-size: 12px; 
}
a:link { 
	color: #000000; 
	text-decoration: none; 
}
a:visited { 
	text-decoration: none; 
	color: #000000; 
}
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:#000000; 
	text-decoration:none;
 }
* html .page_numbers a {
	display:inline-block;
	margin:0 -2px; 
 }
.page_numbers a:hover {
	color:#FF0000; 
	background:#FFFFFF;
 }
a.current {
	color:#000000; 
	background:#FFFFFF;
	cursor:default;
 }
-->
</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; ?>">
<input type="submit" name="action" value="actualiser" />
</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);
	ftp_pasv($conn_id, false);
	
	// 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);
}


?>
Enfaite le script ne propose pas d'entrer dans le paramétrage en haut du script le port ftp car le script doit surement prendre en défaut le port 21 alors que le port de mon accès ftp n'est pas 21 mais 8821 donc quand on va à l'adresse du script (http://up.florianlp.fr/teststv.php) qu'on clique sur actualiser sa nous met connexion ftp non possible donc je pense que ca ne peut-être qu'a cause du port ftp.

Le souci c'est que je suis nul en php donc je ne sais pas quoi ajouter au script pour avoir la fonction d'ajout du port ftp.

Merci d'avance à ceux qui essayerons de trouver la solution.

Cordialement Florian