Ne prends pas toutes mes variables en comptes

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 : Ne prends pas toutes mes variables en comptes

Re: Ne prends pas toutes mes variables en comptes

par xTG » 25 mars 2014, 19:28

0,N => de 0 à N-1 => N caractères
0,4 => 4 caractères
0,5 => 5 caractères
:)

Re: Ne prends pas toutes mes variables en comptes

par lasko » 25 mars 2014, 18:16

Super Sirakawa ! Merci :)
Donc si je change le 2 en 5, il me prendra les 5 lettres et non pas que les 2 premières?
Par ex pour nl-be, si je fini par "0,4", alors les 5 lettres de langues (dont le trait d'union) seront prises et pas que les deux premières qui me renvoient vers la hollande?
Merci encore de ton aide :)

Re: Ne prends pas toutes mes variables en comptes

par sirakawa » 25 mars 2014, 17:29

Dernier point, que veux dire le "0,2" dans ta ligne:
une chaine de caractères php , entre autes, est un tableau de lettres, dont les cellules sont numérotées de 0 à nombre de lettres -1 de la chaine.
substr($chaine, $debut, $ombre_de_lettres);
donc dans ce cas les deux premières lettres.

Re: Ne prends pas toutes mes variables en comptes

par laskoo » 25 mars 2014, 15:46

Merci xTG & Sirakawa :)

J'ai donc fais les changements que vous m'avez proposé et modifié la première ligne suite à divers recherches google. Ca fait peut etre bcp de "$_SERVER"... je ne sais pas... :?

Toutefois il y a quand meme un problème, les navigateurs prennent en compte que les 2 première lettres lors des "languages composés" type nl-be et fr-be.
en gros je m'explique, lorsque je configure mon navigateur en "nl-be", je suis redirigé vers le "nl" et si je suis en "fr-be", alors redirigé vers le "fr"...
Comment faire en sorte que les 4 lettres soient prises en compte?

Dernier point, que veux dire le "0,2" dans ta ligne
$lg = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0,2);
?
<?php

$lang=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$lg = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0,2);
if ($lang == 'fr')
{
header('location:http://monsite.fr');
}
elseif ($lang == 'fr-FR')
{
header('location:http://monsite.fr');
}
elseif ($lang == 'fr-BE')
{
header('location:http://fr.monsite.be');
}
elseif ($lang == 'nl-BE')
{
header('location:http://nl.monsite.be/');
}
elseif ($lang == 'nl')
{
header('location:http://monsite.nl');
}
exit;
?>
Merci bcp de votre aide ! :)

Re: Ne prends pas toutes mes variables en comptes

par sirakawa » 25 mars 2014, 13:06

Le simple égal est une affectation.
Le double égal est une comparaison. ;)

N.B : le résultat d'une affectation retourne toujours true.
@xtg Ca devrait toujours entrer dans le premier cas.

Il faut remplacer le = par un ==, come dit xtg
Il y a un problème supplémentaire:
pour avoir la langue de la requete il faut écrire
$lg = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0,2);

Re: Ne prends pas toutes mes variables en comptes

par xTG » 25 mars 2014, 12:55

Le simple égal est une affectation.
Le double égal est une comparaison. ;)

N.B : le résultat d'une affectation retourne toujours true.

Ne prends pas toutes mes variables en comptes

par Lasko » 25 mars 2014, 11:55

Bonjour,
Je suis vraiment très nul en php mais j'essaye de me dépatouiller tant bien que mal, donc j'espère que vous pourrez m'aider ! :)

Je dois rediriger des sites en fonction de la langue de chaque navigateur mais je dois faire cela dans le header de mon site car je n'ai pas accès au serveur...
Donc voilà ce que j'ai trouvé et modifié :
<?php

$lang=$HTTP_ACCEPT_LANGUAGE;
if ($lang='fr')
{
header('location:http://monsite.fr');
}
if ($lang='fr_FR')
{
header('location:http://monsite.fr');
}
if ($lang='fr_BE')
{
header('location:http://be.monsite.be');
}
if ($lang='nl_BE')
{
header('location:http://nl.monsite.be/');
}
if ($lang='nl')
{
header('location:http://monsite.nl');
}
exit;
?>
La c'était mon premier test et je me rend compte que seul ma dernière variable if est prise en compte.
J'ai ensuite remplacé les "if" (sauf le premier) par des "esleif" (après l'avoir vu sur la toile) et cela ne change rien non plus...

Pourriez vous m'aider svp?

Merci d'avance!