Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2011, 15h02   #1
Nouveau Membre du Club
 
Inscription : mars 2008
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 158
Points : 26
Points : 26
Par défaut Test si un l'image d'un lien est egale a 0 octet ou pas

Bonjour,

je voudrais pourvoir tester un llien internet :

ex: http://monsite.monimage.jpg

je voudrais savoir si ce lien est égale à 0 octet (dont pas d'image) ou si != 0 octet donc image.

je vous remercie d'avance.

Bonne journée
jameson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 15h24   #2
Membre habitué
 
Avatar de Chen norris
 
Inscription : mai 2004
Messages : 124
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2004
Messages : 124
Points : 101
Points : 101
Bonjour,

Je ne suis pas sûr à 100% mais regarde du côté de la fonction filesize pour voir si elle permet de tester des fichiers distants ou non.

____ EDIT ____

En effet, regarde du côté de ce commentaire-ci.

PS : n'oublie pas le tag Résolu
__________________
Chen norris
C/C++, C#, Java, PHP & SQL coder
Web developer
Chen norris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 15h48   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
filesize() est un bon point.
Mais tu fais quand même une confusion :

1/ d'abord tester si le fichier existe ou pas -> file_exists()

2/ si le fichier existe : tester si sa taille est égale à zéro (fichier existant, mais vide ou mal enregistré) -> filesize()
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 24/08/2011, 15h55   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
stat n'est pas émulé/émulable pour le protocole HTTP donc ni file_exists ni filesize ni is_file ni ... ne fonctionneront.

Un fopen en mode r échouera si la ressource est inexistante (404) ou autre (requête HEAD, cURL par exemple). S'il s'agit bien de déterminer si le document est existant mais vide, alors il faut consulter les entêtes (Content-Length) et/ou le lire (même partiellement - juste le début).

Un bon début avec cURL :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ch = curl_init('http://...');
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
if (FALSE === ($ret = curl_exec($ch))) {
    echo 'échec';
} else if (200 != curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
    echo 'inexistant';
} else if (curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD) <= 0) {
    echo 'vide';
} else {
    echo 'ok';
}
curl_close($ch);
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 16h09   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par julp Voir le message
stat n'est pas émulé/émulable pour le protocole HTTP
c'est vrai. (même si le fichier est sur le serveur)

Mon raisonnement ci-dessus est quand même valable que pour des liens relatifs (../../dossier-images/monimage.jpg).
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 16h14   #6
Nouveau Membre du Club
 
Inscription : mars 2008
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 158
Points : 26
Points : 26
Bon j'avais regardé du coté filesize, mais cela ne va pas, mon fichier image n'est pas le même a chaque requête.

Comment puis je faire avec un fopen ...

De mon coté j'avais essayé ça :

Code :
1
2
3
4
5
$url = curl_init(); 
		curl_setopt($url, CURLOPT_URL, $result_array['meta_value']);
		curl_setopt($url, CURLOPT_RETURNTRANSFER, true);
		$urlSizeInfo = curl_getinfo($url);
		echo $urlSizeInfo['download_content_length'];
mais cela ne marche pas. je suis un peu debutant je ne vois pas comment faire la .
jameson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 20h26   #7
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Envoyé par jameson Voir le message
mais cela ne marche pas. je suis un peu débutant je ne vois pas comment faire la .
Pas très clair comme conclusion. Peux tu expliciter ? (des messages d'erreurs par exemple...).

Citation:
Envoyé par jameson Voir le message
Comment puis je faire avec un fopen ...
j'ai rapidement fais ceci pour toi

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
$poids = 0;
$params = array( 'http' => array(
              'method' => 'HEAD',
              'content' => NULL ) );
 
$contexte = stream_context_create( $params );
$res = fopen( 'http://static.php.net/www.php.net/images/php.gif', 'rb', false, $contexte );
 
if ( $res ) {
	$reponse = stream_get_contents( $res );
	if ($reponse !== false) {
     $headers = stream_get_meta_data( $res );
	 foreach( $headers['wrapper_data'] as $meta ){
		if( preg_match( '#^Content-Length: (\d*)$#', $meta, $matche ) ){
			$poids = (int) $matche[1];
			break;
		}
	 }
	 fclose( $res );
	}
 }
 
echo $poids;
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 09h55   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
euh ...

Code :
1
2
$headers = get_headers('http://static.php.net/www.php.net/images/php.gif', 1);
var_dump($headers['Content-Length']);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 09h59   #9
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Envoyé par stealth35 Voir le message
euh ...

Code :
1
2
$headers = get_headers('http://static.php.net/www.php.net/images/php.gif', 1);
var_dump($headers['Content-Length']);
oups! j'ai du rater celle là.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h23.


 
 
 
 
Partenaires

Hébergement Web