begin process at 2010 03 19 16:38:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > CONTROLE DE LA TAILLE D'UN FICHIER DISTANT

CONTROLE DE LA TAILLE D'UN FICHIER DISTANT


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Débutant Date de création :29/08/2002 Date de mise à jour :29/08/2002 03:26:39 Vu :3 714

Auteur : GunLiam

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

ce code est la version (nexen.net) qui marche pour les sites heberges (hote virtuel) et simplifie pour etre ici d'un tel comme dans phpBB. pas de commentaire car tard et fatigué mais je reviendrai si vous avez des questions. il y as trois fonctions
     is_img qui verifie si l'url rentre se termine par gif ou jpg ca evite de se connecter pour rien mais bon .gif marche. on peut toujours rechercher par expression reguliere...

     is_size c'est la fonction en elle meme

     add_http rajoute http:// si ca n'y est pas

     le morceau de code c'est pour montrer une utilisation

Source

  • function is_img($this){
  • $res = false;
  • if(eregi(".(jpg|gif)$",$this))
  • {
  • $res = true;
  • }
  • return $res;
  • }
  • function is_size($this){
  • $res = false;
  • if (eregi('^(http:\/\/)[a-z0-9\-]+\.[a-z0-9\-]+\.[a-z]+',$this,$reg))
  • {
  • $host = $reg[0];
  • }
  • $path = explode($reg[0]."/",$this);
  • $limit_size = 21000; // en gros 20ko mais vous pouvez changer
  • $fp = fsockopen($host, 80, &$errno, &$errstr, 30);
  • if(!$fp)
  • {
  • $res = false;
  • }
  • else
  • {
  • fputs($fp,"HEAD $host/$path[1] HTTP/1.0\r\n");
  • fputs($fp,"Connection: close \r\n\r\n");
  • while(!feof($fp))
  • {
  • $buffer = fgets($fp, 1024);
  • $split = explode(' ', $buffer);
  • if($split[0]=="Content-Length:")
  • {
  • $size=(int)$split[1];
  • if ($size < $limit_size)
  • {
  • $res = true;
  • }
  • break;
  • }
  • }
  • fclose($fp);
  • }
  • }
  • function add_http($this){
  • if(eregi("^http://", $this))
  • {
  • return $this;
  • }
  • else
  • {
  • $this = "http://".$this;
  • return $this;
  • }
  • }
  • /////le morceau de code
  • .....
  • if ($logo!='')
  • {
  • $logo = add_http($logo);
  • if (is_img($logo))
  • {
  • if (!is_size($logo))
  • {
  • $error++;
  • $error_level[$error] = "Le logo ne sera pas affiché. Vérifiez le poids de l'image et la validité du lien.";
  • $logo = '';
  • }
  • }
  • else
  • {
  • $error++;
  • $error_level[$error] = "Le logo ne sera pas affiché. Format de fichier invalide.";
  • $logo = '';
  • }
  • }
  • ......
  • //pour utiliser error_level pour ceux qui se demande a quoi ca sert
  • if ($error > 0)
  • {
  • echo "<font color=\"#ff3300\" size=\"+1\">";
  • for($i=1; $i<=$error; $i++)
  • {
  • echo "$error_level[$i]\n<br>";
  • }
  • echo "</font>\n<br>\n<br>";
  • }
  • .....
function is_img($this){
	$res = false;
	if(eregi(".(jpg|gif)$",$this))
		{
			$res = true;
				}
	return $res;
}

function is_size($this){
$res = false;
	if (eregi('^(http:\/\/)[a-z0-9\-]+\.[a-z0-9\-]+\.[a-z]+',$this,$reg))
		{
			$host = $reg[0];
				}
	
	$path = explode($reg[0]."/",$this);
	$limit_size = 21000;  // en gros 20ko mais vous pouvez changer
	$fp = fsockopen($host, 80, &$errno, &$errstr, 30);

	if(!$fp) 
		{
			$res = false;
				}
	else
		{
			fputs($fp,"HEAD $host/$path[1] HTTP/1.0\r\n");
			fputs($fp,"Connection: close \r\n\r\n");

  			while(!feof($fp))
				{ 
  					$buffer = fgets($fp, 1024); 
  					$split = explode(' ', $buffer); 
  						if($split[0]=="Content-Length:")
							{ 
  								$size=(int)$split[1];
								if ($size < $limit_size)
									{
			   							$res = true;
											}
								break;
 										}
						}
			fclose($fp);
			}
	}

function add_http($this){
	if(eregi("^http://", $this))
		{
			return $this;
			}
	else
		{
			$this = "http://".$this;
			return $this;
			}
	}


/////le morceau de code
.....
if ($logo!='')
		{
			$logo = add_http($logo);
			if (is_img($logo))
				{
					if (!is_size($logo))
						{
							$error++;
							$error_level[$error] = "Le logo ne sera pas affiché. Vérifiez le poids de l'image et la validité du lien.";
							$logo = '';
								}
					}
			else
				{
					$error++;
					$error_level[$error] = "Le logo ne sera pas affiché. Format de fichier invalide.";
					$logo = '';
						}
			}
......

//pour utiliser error_level pour ceux qui se demande a quoi ca sert

if ($error > 0)
					{
						echo "<font color=\"#ff3300\" size=\"+1\">";
						for($i=1; $i<=$error; $i++)
							{
								echo "$error_level[$i]\n<br>";
									}
						echo "</font>\n<br>\n<br>";
							}
.....

 Conclusion

Voila bon c'est pas le code du siecle (voir au dessus ) mais ca peut servir pour une section membre, un forum enfin un truc perso quoi.
Pour les mauvaises langues qui pensent que je commentes pas parce que c'est pas de moi he bien desole mais il est 3h22. je mange du code depuis 8 h ce matin et j'ai pas envie de raconter des betises.( et pis j'suis fatigué aussi )
Je vais pousser aussi pour l'upload de fichiers distant par cette voie tres bientot mais bon vous pouvez toujours voir phpBB il le fait tres bien.


 Sources du même auteur

Source avec Zip CLASSE POUR EMAIL
TEMPS D'EXECUTION (BIS ET PLUS SIMPLE)

 Sources de la même categorie

Source avec Zip EFFACER LES FICHIERS IMAGES ( .PNG ), D'UN RÉPERTOIRE TEMPS ... par christophe0511
COURTE ET SIMPLE FONCTION RÉCURSIVE POUR LECTURE DE RÉPERTOI... par mbdx
Source avec Zip Source avec une capture GESTIONNAIRE DE FICHIERS | MYSQL PHP 5.X {NEMENTON PHP MANA... par Nementon
Source avec Zip Source avec une capture LISTE REPERTOIRE (DIR EN PHP) par mephistope
Source avec Zip LIRE UNIQUEMENT LES X DERNIERS OCTETS D'UN FICHIER DISTANT (... par Equilibrius

Commentaires et avis

Commentaire de GunLiam le 29/08/2002 03:37:22

allez j'en dis quand meme quelque chose pourquoi
fputs($fp,"HEAD $host/$path[1] HTTP/1.0
");
et pas
fputs($fp,"GET $host/$path[1] HTTP/1.0
");
he bien parce que ce qui nous interresse se trouve dans les entete http, get reviens a demander le fichier complet. essayez  en mettant
echo $buffer;
apres
$buffer = fgets($fp, 1024);
virer le reste (enfin ce qui sert plus )
if($split[0]=="Content-Length:")
                            {
                                    $size=(int)$split[1];
                                if ($size &lt; $limit_size)
                                    {
                                            $res = TRUE;
                                            }
                                break;
                                       }
et lancer le script avec head puis get vous verrez la difference ...
Pour le reste je vais vous detaillez les bug rencontrés mais le script de nexen ne marchait pas sur un hote virtuel (i.e il renvoyait la page de free quand vous mettez www.site.free.fr au lieu de l'image demandé sur un hote en particulier) la ca marche dans tous les cas virtuels ou pas.
bon je vais me couchez

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales