Problème Expression Régulière/Redirection URL PHP
Bonjour, alors voici mon problème :
J'essaye de récupérer une variable contenu dans l'URL cette variable comprend un "&" et lorsque je la récupère, je récupère que ça valeur avant le "&".
J'utilise dans cette page un RewriteRule pour rediriger ma page, et les fonctions php urlencode() et urldecode() ne marchent pas non plus.
Je soupçonne le RewriteRule de mon .htaccess d'être le coupable le voici :
RewriteRule ^(?'type'[^/]+)/(?'nom'[^/]+)\.html$ beer.php?type=$1&nom=$2 [L]
Je suis perdu, merci de votre aide !
En gros tu as l'URL de ce type: dossier/partie nom1+%26+partie nom2.html et tu veux récupérer que "partienom1 & partienom2".
Et la tu ne récupères que le partienom1 et pas la suite "& partienom2" ?
@Timops: Justement ce & doit être transformé en %26 au moment de la génération du lien via le code PHP.
déja je te conseille de virer le .htacces et de tout faire dans etc/apache2/sites-avaliable/fichierDeConf.conf .
le htaccess c'est pas très bon du pdv sécu.
par aileurs, a moins que ca ait changé, ce que tu veux faire est impossible, pour des problemes de sécurité, la aussi: rewriterule ne peux pas prendre des vcaribles passés en post (ou en get, il me semble que ca ne change rien).
@Kaazhan: Merci je vais voir alors pour modifier je ne connais pas grand chose sur les conf d'apache2. Le rewriterule marche pour les autres variables quand il n'y a pas de "&".
@Timops: par contre j'ai pas trop compris le probleme de base. tu a une url, tu veux en faire quoi ? faire du traitement en php dessus ? dans ce cas, pourquoi t'embeter avec rewriterule ? tu fait du php sans framework ?
Je suis pas trop sûr d'avoir compris ta demande mais si tu veux récupérer les valeurs de tes variables dans l'url, tu le fais avec $_GET comme ceci : $_GET["nom"] par exemple.
@P1nkman: Si mais par exemple si ma valeur est "test&blabla" la le $_GET ne contient que "test"...
@Timops: Tu fais plusieurs parametres GET.
Il faut les séparer dans l'url par "&" , le code pour faire un "&" , si tu met juste le "&" , ça ne passera pas.
$_GET["nom"] = "toto";
$_GET["subject"] = "a_la_toilette";
Imaginons que tu le fait dans l'autre sens, que tu passes donc un lien avec des parametres GET : <a href="index.php?nom=toto&subject=a_la_toilette">Toto va a la toilette</a>
En espérant que ça t'aies aidé.
Les caractères qu'on doit échapper pour qu'ils passent bien :
https://alexandre.alapetite.fr/doc-alex/alx_special.html
@Kaazhan: Après relecture c'est pour son .htaccess (Je suppose que c'est pour faciliter le référencement naturel)
@IDoc: Alors j'ai une page de mon site lesite/dossier/page.php?type=maVar&nom=maVar2 que j'appelle grâce au rewriterule avec lesite/dossier/maVar/maVar2.html et lorsqu'il y a un "&" dans maVar2 je n'arrive pas a récupérer la valeur entière.
Si tu veux rediriger une URL de type http://monsite.com/voiture/volvo-s60.html vers http://monsite.com/beer.php?type=voiture&nom=volvo-s60 alors utilises celle ci
RewriteRule ^([^/]+)/([^/]+).html$ beer.php?type=$1&nom=$2
Salut,
Si ton problème vient seulement de PHP lorsque l'url est par exemple : http://monsite.php/beer.php?type=lorem&ipsum&nom=lorem et que tu ne trouves pas le moyen de faire un urlencode dans le lien de base, je ne vois qu'une solution.
$query = $_SERVER['QUERY_STRING']; // type=lorem&ipsum&nom=lorem
preg_match("/type=(.)&nom=(.)/", $query, $matches);
$type = $matches[1]; // lorem&ipsum
$nom = $matches[2]; // lorem
Testé et approuvé !
https://regex101.com/
Tiens ca vaut le coup de foutre ca en favoris pour quand tu fais des regex !
Tu ne dois accéder à ce site que si tu as au moins 18 ans ou si tu as l'âge légal pour visionner ce type de matériel dans ta juridiction locale, l’âge le plus élevé étant retenu. En outre, tu déclares et garantis que tu ne permettras aucun mineur à d'accéder à ce site ou à ces services.
En accédant à ce site, tu acceptes nos conditions d'utilisation.