Controle de la taille d'un fichier distant

Contenu du snippet

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 / Exemple :


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.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.