Categorizator - problème Méta automatique

Nouveau WRInaute
bonjour,

j'ai installé categorizator, et ensuite la mise à jour la version rewriting récente.

seul probleme, dans mon admin, quand j'ajoute moi meme un site, dans une catégorie, lorsque je clique sur le bouton méta , il ne me met pas l'image sur site (meme ceux qui en on une) et il ne me met pas les métas automatiquement... comme il devrait le faire normalement...

meme probleme quand j'essaye d'ajouter un site, par la zone visiteur "proposer un site" , il ne trouve pas les métas, me met juste l'url, rien d'autre...

pourtant j'ai bien regarder, aucun fichiers ne manque...

merci pour votre aide
 
WRInaute occasionnel
Salut,
Tu as une fonction pour mettre à jour les images de sites dans ton admin. Pour qu'elle fonctionne il faut renommer un fichier qui se trouve dans le dossier /admin/
 
Nouveau WRInaute
titiplanti a dit:
Salut,
Tu as une fonction pour mettre à jour les images de sites dans ton admin. Pour qu'elle fonctionne il faut renommer un fichier qui se trouve dans le dossier /admin/
oui mais c'est pas ca le problème :wink:
 
WRInaute passionné
il y a deux solutions : soit le paramètre func_get_meta_tags de la table infos_annuaire n'est pas a true soit il doit y avoir une problème dans une des fonctions appelée dans la function preremplir_formulaire (fopen, fread, get_meta_tags)
 
Nouveau WRInaute
j'ai pas trouvé; la function preremplir_formulaire .

voila la table infos_annuaire , je n'ai pas de vu de True :







ma page function : (je vois une true à $detected = true;)

Code:
function preremplir_formulaire($url,$fill)
// Préremplir le formulaire d'inscription grâce aux metas et la détection d'images
{
	if ( $fill )
	{
		global $PMA_infos;
		
		preg_match("/^(\d)(\d)(\d)$/",$PMA_infos['detect_images'],$detect_images);
		
		$detect_images = array (
			'ascreen'	=> $detect_images[1],
			'thumbshots'	=> $detect_images[2],
			'alexa'		=> $detect_images[3],
		);
		
		asort($detect_images);
		
		$detected = false;
		foreach ( $detect_images as $methode => $ordre )
		{
			if ( $ordre )
			{
				$url_image = detect_images($methode,$url);
				
				if ( $url_image ) {
					$detected = true;
					break;
				};
			};
		};
		
		$url_image = $detected ? $url_image : 'http://';
		
		if ( $PMA_infos['func_get_meta_tags'] )
		{
			$fp = @fopen($url, 'r');
			$head = @fread($fp, 1024);
			@fclose($fp);
		}
		else
		{
			$head = null;
		};
		
		if ( $head )
		{
			$tags = @get_meta_tags($url);
			
			$nom_proprio = isset($tags['author']) ? $tags['author'] : '';
			$email_proprio = isset($tags['reply-to']) ? $tags['reply-to'] : ( isset($tags['email']) ? $tags['email'] : '' );
			$titre = preg_match( "/<title>([^<]*)<\/title>/si", $head, $match ) ? $match[1] : '';
			$description = $tags['description'] ? $tags['description'] : '';
		};
		
		return array( $url, $url_image, $nom_proprio, $email_proprio, $titre, $description );
	}
	else
	{
		$url = 'http://';
		$url_image = 'http://';
		$nom_proprio = null;
		$email_proprio = null;
		$titre = null;
		$description = null;
 
WRInaute passionné
la fonction preremplir_formulaire test si la zone $PMA_infos['func_get_meta_tags'] est vrai pour récupérer le contenu de l'url. dans ton cas c'est bon car $PMA_infos['func_get_meta_tags'] = 1 (0=faux, et 1=vrai). ce paramètre est modifié dans la partie administation en cliquant sur "Modifier les paramètres
de l'annuaire" avec la page /admin/param_annuaire.php

La fonction get_meta_tags ne doit pas fonctionner avec ta configuration. il faut regarder du coté de l'hébergeur pour vérifier.
 
Nouveau WRInaute
webmasterlamogere a dit:
la fonction preremplir_formulaire test si la zone $PMA_infos['func_get_meta_tags'] est vrai pour récupérer le contenu de l'url. dans ton cas c'est bon car $PMA_infos['func_get_meta_tags'] = 1 (0=faux, et 1=vrai). ce paramètre est modifié dans la partie administation en cliquant sur "Modifier les paramètres
de l'annuaire" avec la page /admin/param_annuaire.php

La fonction get_meta_tags ne doit pas fonctionner avec ta configuration. il faut regarder du coté de l'hébergeur pour vérifier.
ok, il faut donc que je contacte mon hebergeur ?

je dois leur demander quoi ?
 
WRInaute passionné
il y a peut-être un petit test a faire pour trouver l'origine de l'erreur : enlever les @ devant fopen, fread, fclose et get_meta_tags pour voir si un message d'erreur est affiché (le préfixe @ empèche l'affichage des erreurs).
 
Nouveau WRInaute
webmasterlamogere a dit:
il y a peut-être un petit test a faire pour trouver l'origine de l'erreur : enlever les @ devant fopen, fread, fclose et get_meta_tags pour voir si un message d'erreur est affiché (le préfixe @ empèche l'affichage des erreurs).
j'ai enlevé et il me marque ca :

Code:
Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /home/.arizona/video/e-gratuit.com/annuaire/functions.php on line 625

Warning: fopen(http://www.tchat.com) [function.fopen]: failed to open stream: no suitable wrapper could be found in /home/.arizona/video/e-gratuit.com/annuaire/functions.php on line 625

Warning: fread(): supplied argument is not a valid stream resource in /home/.arizona/video/e-gratuit.com/annuaire/functions.php on line 626

Warning: fclose(): supplied argument is not a valid stream resource in /home/.arizona/video/e-gratuit.com/annuaire/functions.php on line 627
 
WRInaute passionné
il y a surement un paramétrage du serveur qui interdit la lecture du contenu d'une url. Il faire un phpinfo(); et regarder si allow_url_fopen = On
Si ce n'est pas le cas, il faut modifier le fichier php.ini et mettre allow_url_fopen = On si tu as la main sur ce fichier. sinon il faut voir avec l'hébergeur.
 
Nouveau WRInaute
mon hebergeur m'a répondu ca :? :

im betting its trying to remotely
open a file. We have this disabled by default. Here is a useful.

The PHP option allow_url_fopen would normally allow a programmer to open, include or otherwise use a remote file using a URL rather than a local file path. For security reasons, server has disabled this feature; however, a feature-rich alternative exists in the form of the bundled cURL library, and you can always get around the problem by compiling your own version of PHP.
 
WRInaute passionné
j'ai l'impression qu'ils conseillent d'utiliser curl : voici un petit exemple a adapter :
Code:
		if (($ch = curl_init($url)) === false) {
			$num_erreur = curl_errno($ch);
			$text_erreur = curl_error($ch);
			return "<font color=\"red\">Erreur d'initialisation de la session cURL pour $url : $num_erreur : $text_erreur</font>";
		}
		if (!curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8')) {
			$num_erreur = curl_errno($ch);
			$text_erreur = curl_error($ch);
			return "<font color=\"red\">Erreur d'ajout de l'option cURL USERAGENT pour $url : $num_erreur : $text_erreur</font>";
		}
		if (!curl_setopt($ch, CURLOPT_HEADER, false)) {
			$num_erreur = curl_errno($ch);
			$text_erreur = curl_error($ch);
			return "<font color=\"red\">Erreur d'ajout de l'option cURL HEADER pour $url : $num_erreur : $text_erreur</font>";
		}
		if (!curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)) {
			$num_erreur = curl_errno($ch);
			$text_erreur = curl_error($ch);
			return "<font color=\"red\">Erreur d'ajout de l'option cURL RETURNTRANSFER pour $url : $num_erreur : $text_erreur</font>";
		}
		if (!curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)) {
			$num_erreur = curl_errno($ch);
			$text_erreur = curl_error($ch);
			return "<font color=\"red\">Erreur d'ajout de l'option cURL FOLLOWLOCATION pour $url : $num_erreur : $text_erreur</font>";
		}
		$header[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
		$header[] = "Accept-Language: fr\r\n";
		if (!curl_setopt($ch, CURLOPT_HTTPHEADER, $header)) {
			$num_erreur = curl_errno($ch);
			$text_erreur = curl_error($ch);
			return "<font color=\"red\">Erreur d'ajout de l'option cURL HTTPHEADER pour $url : $num_erreur : $text_erreur</font>";
		}
		if (!empty($referer)) {
			if (!curl_setopt($ch, CURLOPT_REFERER, $referer)) {
				$num_erreur = curl_errno($ch);
				$text_erreur = curl_error($ch);
				return "<font color=\"red\">Erreur d'ajout de l'option cURL REFERER pour $url : $num_erreur : $text_erreur</font>";
			}
		}
		if (($res = curl_exec($ch)) === false) {
			$num_erreur = curl_errno($ch);
			$text_erreur = curl_error($ch);
			return "<font color=\"red\">Erreur d'exécution cURL pour $url : $num_erreur : $text_erreur</font>";
		}
		$url_reelle = convert_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
		$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		curl_close($ch);
		if (($http_code <> 200) && ($http_code <> 301) && ($http_code <> 302)) {
			$description = get_http_code_description($http_code);
			return "<font color=\"red\">Code retour $http_code : $description</font>";
		}
 
WRInaute occasionnel
il faut transformer les appels fopen en utilisant curl, je t'avoue que c'est pas facile si tu ne connais rien à PHP, sinon c'est faisable en connaissant un petit peu et en sachant trouver et utiliser un exemple de conversion dans ton cas particulier.
Car cela arrive souvent que les hébergeurs au bout d'un moment désactive les url dans fopen et qu'il faille utiliser curl à la place.
 
Discussions similaires
Haut