8795 sujets

Développement web côté serveur, CMS

Bonjour,

Pour certaines raisons de compatibilités, je dois cibler les navigateurs Chrome/Safari (webkit) dans mon CSS. (Ne me demandez pas pourquoi, c'est bien la première fois que j'ai un rendu à ce point divergent avec webkit et je ne sais pas pourquoi) Après quelques recherches, je suis tombé sur un article d'Alsacréation sur comment utiliser PHP pour gérer les styles CSS. Avec l'emploi de la class Browscap qui détecte le navigateur client utilisé, je serais en mesure d'arriver à mes fins (Enfin je crois muhu..)
Browscap retourne donc les infos de la sorte :

stdClass Object
(
    [browser_name] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
    [browser_name_regex] => ^mozilla/5\.0 \(.*windows nt 6\.1.*wow64.*\).*gecko/.*firefox/18\..*$
    [browser_name_pattern] => Mozilla/5.0 (*Windows NT 6.1*WOW64*)*Gecko/*Firefox/18.*
    [Parent] => Firefox 18.0
    [Platform] => Win7
    [Platform_Version] => 6.1
    [Win32] => 
    [Win64] => 1
    [Comment] => Firefox 18.0
    [Browser] => Firefox
    [Version] => 18.0
    [MajorVer] => 18
    [MinorVer] => 0
    [Beta] => 1
    [Frames] => 1
    [IFrames] => 1
    [Tables] => 1
    [Cookies] => 1
    [JavaScript] => 1
    [JavaApplets] => 1
    [CssVersion] => 3
    [Alpha] => 
    [Win16] => 
    [BackgroundSounds] => 
    [VBScript] => 
    [ActiveXControls] => 
    [isMobileDevice] => 
    [isSyndicationReader] => 
    [Crawler] => 
    [AolVersion] => 0
)

Et je récupère une de ces valeurs comme ceci : print_r($current_browser->Parent);

Mais maintenant il faudrait que je puisse mettre en place une condition qui detecte si [Parent]=> Chrome. Je procède comme ceci :
if($current_browser->Parent = "Chrome"){
	echo "La condition est valide";
}else{echo "La condition n'est pas valide";}

Mais la condition retourne valide que ce soit Chrome ou pas. J'ai essayé aussi :
$var_browser=$current_browser->Parent;
if($var_browser = "Chrome"){
	echo "La condition est valide";
}else{echo "La condition n'est pas valide";}


Que dois je faire ? Dois je convertir $var_browser en string ? Si oui, avec quelle fonction ?
Merci d'avance !
Modifié par osef_ (29 Jan 2013 - 18:12)
Salut

C'est normal tu affecte une variable avec un seul = donc là sa vaut chrome tout le temps alors que si tu fais :

if($current_browser->Parent == "Chrome"){
	echo "La condition est valide";
}else{echo "La condition n'est pas valide";}
Merci de ta réponse !
J'avais aussi bien sûr essayé avec l'opérateur == mais en fait l'erreur était ailleurs, et vraiment toute bête. Parent retourne "Chrome 24.0" soit navigateur + version. J'utilise maintenant "Browser" qui retourne juste "Chrome" ou "Firefox" et ça marche de suite bien mieux !

Par contre je suis face à un autre problème maintenant. Je sais pas si tu as déjà utilisé le PHP pour tes feuilles de style, je dois en gros définir une entête CSS avec
<?php
header('content-type: text/css');
ob_start('ob_gzhandler');
header('Cache-Control: max-age=31536000, must-revalidate');
?>

Mais aussi faire appel à la classe Browscap :
<?php
require 'Browscap.php';
use \Browscap;
$bc = new Browscap('cache');
$current_browser = $bc->getBrowser();?>


Mais header() ne semble pas vouloir fonctionner si je rajoute quelque chose après ... La doc PHP explique à propos de header() qu'il faut l'appeler en premier lieu avant le reste. Où est donc l'erreur ?