Tester une url pour attribuer une classe [Résolu]

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tester une url pour attribuer une classe [Résolu]

Re: Tester une url pour attribuer une classe

par Oufdeladingue » 29 déc. 2011, 13:53

Yeees, j'ai réussi à faire ce que je voulais grâce à ton code.

En fait, il n'y a pas d'url en "/fr", du coup, je fais retourner fr et pas le contenu du tableau si /en et /de ne sont pas présents!!!

Merci vraiment du coup de main rapide et efficace!!!

Re: Tester une url pour attribuer une classe

par Oufdeladingue » 29 déc. 2011, 13:32

Merci pour le coup de main:

Pour l'instant, ça ne me retourne que des 'fr' pour tous les sites...
Faut que je précise que je bosse en local (mais ça ne change rien au problème).
J'ai fait un echo sur le template pour chaque url et c'est toujours 'fr'...

Re: Tester une url pour attribuer une classe

par Yosh » 29 déc. 2011, 13:21

C'est l'idée oui, mais les paramètres de la fonction str_pos ne sont pas dans le bon ordre.

Sinon un truc dans le genre :
function getLang($url = null) {
        //liste des langues supportées
	$array_lang = array('fr', 'en', 'de');
				
	//recup de l'url courante si non passé en paramètre
	if(empty($url)) {
		$url = $_SERVER["REQUEST_URI"];
	}
				
	//check lang param
	foreach($array_lang as $lang) {
		if(strpos($url, '/'.$lang.'/') !== false) {
			return $lang;
		}
	}
			
	//default lang
	return $array_lang[0];
}
			
Et tu test avec :
echo getLang();
echo getLang('www.monsite.com/fr/');
echo getLang('www.monsite.com/en/');
echo getLang('www.monsite.com/de/');
EDIT: ajout des /

Re: Tester une url pour attribuer une classe

par Oufdeladingue » 29 déc. 2011, 13:09

ok désolé, autant pour moi...

Tu aurais une idée sur la fonction à créer ?
Un truc dans ce genre mais il me manque le fait de récupérer le résultat sous forme d'une valeur sur laquelle faire un echo dans mon template...
Qu'est-ce que tu en penses?

function test_url() {
$url = $_SERVER["REQUEST_URI"];
$var1 = '/en/';
$var2 = '/de/';
if(strpos($var1, $url) == 0)
return "en";
if(strpos($var2, $url) == 0)
return "de";
else
return "fr"
}

Re: Tester une url pour attribuer une classe

par Yosh » 29 déc. 2011, 13:02

J'ai trouvé ce morceau de code en cherchant sur lenet... C'était juste pour illustrer ce que je désire faire!
Oui mais rien à voir, cUrl te permet de lancer une session à distance.

Re: Tester une url pour attribuer une classe

par Oufdeladingue » 29 déc. 2011, 12:46

J'ai trouvé ce morceau de code en cherchant sur lenet... C'était juste pour illustrer ce que je désire faire!

Re: Tester une url pour attribuer une classe

par Yosh » 29 déc. 2011, 12:41

Oui mais je ne veux pas travailler sur la langue, mais bien sur l'url de la page...
J'ai déjà fais des recherches sur les possibilités propres à Wordpress mais ça ne correspond pas à ce que je veux...

Je pense à quelque chose du type:

$url = curl_init ("$_SERVER['REQUEST_URI']");
curl_exec($url);
$test = strstr($url, '/en/');
curl_close($url);

echo $test;

Ceci doit être bourré de fautes et ne me renvoi pas une chaîne de caractères qui remplacerai ma class mais là je bloque...
Pourquoi du cUrl ? Je comprend pas...

EDIT: regarde du côté de preg_match

Re: Tester une url pour attribuer une classe

par Oufdeladingue » 29 déc. 2011, 12:36

Oui mais je ne veux pas travailler sur la langue, mais bien sur l'url de la page...
J'ai déjà fais des recherches sur les possibilités propres à Wordpress mais ça ne correspond pas à ce que je veux...

Je pense à quelque chose du type:

$url = curl_init ("$_SERVER['REQUEST_URI']");
curl_exec($url);
$test = strstr($url, '/en/');
curl_close($url);

echo $test;

Ceci doit être bourré de fautes et ne me renvoi pas une chaîne de caractères qui remplacerai ma class mais là je bloque...

Re: Tester une url pour attribuer une classe

par Yosh » 29 déc. 2011, 12:33

@Yosh
Le problème avec le test de la langue, c'est que mes trois "sites" sont en fr (installation Wordpress MU pour des utilisateurs français).
La possibilité de tester la langue du navigateur ne m'a pas échappé mais je préférais travailler avec l'url afin de pouvoir "switcher" la classe même si je suis français, anglais, etc...
Avec Wordpress tu doit pouvoir récupérer la langue avec un code dans le genre:
$lang=get_bloginfo("language");

Re: Tester une url pour attribuer une classe

par Oufdeladingue » 29 déc. 2011, 12:30

@Yosh
Le problème avec le test de la langue, c'est que mes trois "sites" sont en fr (installation Wordpress MU pour des utilisateurs français).
La possibilité de tester la langue du navigateur ne m'a pas échappé mais je préférais travailler avec l'url afin de pouvoir "switcher" la classe même si je suis français, anglais, etc...

Re: Tester une url pour attribuer une classe

par Oufdeladingue » 29 déc. 2011, 12:27

Je travaille actuellement en local, et les url données ne sont que des exemples...
Ne peut-on pas simplement tester la présence d'une chaîne de caractères dans une chaîne de caractère:
Si url (ex:www.monsupersite-est-cool.com/en/je-suis-bof-en-php) contient "/en/", alors class="ma-classe-en"

L'utilisation de la position me parait plus compliquée non?

Re: Tester une url pour attribuer une classe

par Yosh » 29 déc. 2011, 12:23

Tu dois surement avoir une variable en session qui stock la langue courante...

Fais un print_r de $_SESSION

Si c'est bien le cas tu n'a plus qu'a tester la valeur de langue et modifier la class de ta div.

Re: Tester une url pour attribuer une classe

par Mazarini » 29 déc. 2011, 12:22

substr($_SERVER['REQUEST_URI'],$pos,2) le problème est de calculer $pos.

Tu peux mettre $pos = 16 tout simplement ou $pos = strpos('/',$_SERVER['REQUEST_URI']) ou encore $pos = strlen($_SERVER['HTTP_HOST']
(à voir s'il faut ajouter 1 ou pas à $pos)

Si tu fais une page <?PHP phpinfo(); ?> tu pourras voir toutes les variables disponible et peut être en choisir une plus appropriée (ne comportant pas le nom de la machine ?) ou vérifier que $_SERVER['HTTP_HOST'] contient bien le nom de la machine.

Tester une url pour attribuer une classe [Résolu]

par Oufdeladingue » 29 déc. 2011, 12:08

Bonjour,

Travaillant actuellement pour un client désireux de s'offrir un site multilangue; j'ai opté pour le CMS Wordpress en Multisite.
J'ai donc mon url pour le site francophone: http://www.monsite.com/
Puis un dossier pour les langues: http://www.monsite.com/en/ et http://www.monsite.com/de/

Je voudrais modifier la classe d'une div sur mon template en fonction de la langue, et donc de mon url.

Je sais que l'on peut récupérer l'url facilement: <?php echo $_SERVER['REQUEST_URI']; ?>
Il me manque le reste, à savoir:
- conversion en chaîne de caractère
- test: si contient "/en/" alors class="en"; si contient "/de/" alors class="de", si contient ni "/en/" ni "/de/" alors class="fr"

Merci de votre aide ;-)