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 !

Poster un commentaire
Garichigo
Garichigo
7 ans

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
Timops
7 ans

@Garichigo: Oui !

IDoc
IDoc
7 ans

@Timops: Justement ce & doit être transformé en %26 au moment de la génération du lien via le code PHP.

Azertsix
Azertsix
7 ans

Ils sont ou les boobs ?

Kaazhan
Kaazhan
7 ans

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).

Timops
Timops
7 ans

@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 "&".

Kaazhan
Kaazhan
7 ans

@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 ?

P1nkman
P1nkman
7 ans

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.

Timops
Timops
7 ans

@P1nkman: Si mais par exemple si ma valeur est "test&blabla" la le $_GET ne contient que "test"...

NoxWorld
NoxWorld
7 ans

@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&amp;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

IDoc
IDoc
7 ans

Donne un exemple directement

Kaazhan
Kaazhan
7 ans

@IDoc: voila, moi non plus je comprend pas pourquoi il veut utiliser rewriterule...

IDoc
IDoc
7 ans

@Kaazhan: Après relecture c'est pour son .htaccess (Je suppose que c'est pour faciliter le référencement naturel)

Timops
Timops
7 ans

@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.

Timops
Timops
7 ans

@IDoc: Oui et aussi pour rendre l'url plus joli.

IDoc
IDoc
7 ans

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

Commentaire supprimé.

Vaval
Vaval
7 ans

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é !

Enerdhil
Enerdhil
7 ans

https://regex101.com/
Tiens ca vaut le coup de foutre ca en favoris pour quand tu fais des regex !

Cette page est réservée aux ADULTES

Tu es sur le point d'accéder à un site web qui contient du matériel explicite (pornographie).

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.