PluXml.org

Blog ou CMS à l'Xml

Vous n'êtes pas identifié(e).

#1 27/06/2017 17:00:05

flipflip
Membre
Lieu : Lyon
Inscription : 19/05/2008
Messages : 752
Site Web

[Résolu] Paramètres dans url

Bonjour,

Je dev un plugin et je rencontre un problème à la récupération des variables dans les url.

Le plugin utilise sont propre formulaire d'authentification lié à une base mysql. Je gère tout ça avec les sessions php et suivant le cas je génère les url pour accéder aux fonctions du plugin.

Exemple d'une url qui marche :

echo '<li><a href="'.$plxMotor->urlRewrite('?static18/portail').'">Tableau de bord</a></li>';

Ce qui donne : http://192.168.x.x:8080/index.php?static18/portail . Sur celle-ci c'est simple pas de GET à récupérer.

Une autre qui marche :

echo '<li><a href="'.$plxMotor->urlRewrite('?static18/portail&p=stock').'">Consultation stock</a></li>';

Ce qui donne : http://192.168.x.x:8080/index.php?stati … il&p=stock . La variable p est bien récupérable par $_GET['p'].

Et enfin une qui ne marche pas

echo '<td><a href="'.$plxMotor->urlRewrite('?static18/portail&p=panier&a=add&v='.$data['eancod']).'" title="Ajouter au panier">Ajouter au panier</a>'

Ce qui donne : http://192.168.x.x:8080/index.php?stati … 3560059293 . Avec celle-ci je suis automatiquement renvoyé à la page d'accueil et la session php saute.

Le problème intervient dès que j'ajoute un 2eme paramètre dans l'url.

J'ai poussé le test en écrivant les url moi même dans le code pour ne pas passer par urlRewrite mais le comportement est le même.

J'ai fais un test hors pluxml avec ce code :

<?php

echo 'test';

echo 'a = '.$_GET['a'];
echo '<br>b = '.$_GET['b'];
?>

<br><a href="test.php">test 1</a>
<br><a href="test.php?a=2">test 2</a>
<br><a href="test.php?a=2&b=1">test 3</a>

Dans ce cas pas de comportement bizarre donc pour moi pas la config du serveur à remettre en cause (en passant c'est un debian jessie avec une installation par défaut dans un container docker).

Avez-vous une idée ?

Dernière modification par flipflip (28/06/2017 17:24:39)


"J'ai un string dans l'array" | http://www.blogoflip.fr

Hors ligne

#2 27/06/2017 18:02:20

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 765
Site Web

Re : [Résolu] Paramètres dans url

PluXml utilise la fonction plxMotor::prechauffage() pour savoir quoi faire de l'URL qu'il reçoit.
J'ai testé tes URL avec l'expression régulière ligne 154  de class.plx.motor.php pour PluXml 5.6, sur regex101.com.
Mais il n'y a rien d'anormal.

Tu as regardé dans les logs d'Apache si PHP ne génère pas une erreur ou en affichant le source de la page renvoyée (Ctrl-U dans le navigateur)

Le problème est de savoir où cela saute. D'où l'intérêt d'un déboggueur.
Si tu n'as pas de débogueur avec xdebug, tu peux utiliser cette astuce.

Dernière modification par bazooka07 (27/06/2017 18:03:07)

Hors ligne

#3 28/06/2017 15:41:05

flipflip
Membre
Lieu : Lyon
Inscription : 19/05/2008
Messages : 752
Site Web

Re : [Résolu] Paramètres dans url

Malheureusement pas de trace d'erreur dans les logs apache. Sur ton conseil j'ai mis en place pour lui aussi pas d'erreur, après je bataille avec la mise en place de la fonction de traçage de xdebug.

Je vais créer un autre plugin basique en essayant de reproduire le problème et si ça "marche" je pourrais le mettre à dispo pour test.

Pour télécharger le plugin de test : https://blogoflip.fr/mespartages/s/K3QiCD0eChKX4MK

Je réalise l'appel du plugin par une page statique qui à pour url "portail". Dans mon cas elle à l'id 18. Dans la page statique ajouter le code :

<?php
$plxShow = plxShow::getInstance();
$plxPlugin = $plxShow->plxMotor->plxPlugins->getInstance('portail');
eval($plxShow->callHook('portailLoginForm'));
?>

Dans le code, remplacer ?static18 par ?staticXX ou XX est l'id de votre page statique.

Pour accéder à la page saisissez directement l'url : http://votresite/index.php?staticXX/portail. Normalement un formulaire s'affiche, rentrer n'importe quoi comme infos (le nom d'utilisateur est une adresse mail). Une session php est lancée, un print_r($_SESSION) s'affiche et en dessous un petit menu qui permet de reproduire les cas.

Le 1er lien renvoie vers la page statique en ajoutant un paramètre dont la valeur est stock. Les deux suivants ajoutent des paramètres d'url a et v. Si vous avez le même problème que moi alors vous devez revenir à la page d'accueil et votre session a été supprimé.

P.S. : ne tenez pas compte de la propreté du code, c'est juste une version pour reproduire le problème.

Dernière modification par flipflip (28/06/2017 16:13:36)


"J'ai un string dans l'array" | http://www.blogoflip.fr

Hors ligne

#4 28/06/2017 17:24:25

flipflip
Membre
Lieu : Lyon
Inscription : 19/05/2008
Messages : 752
Site Web

Re : [Résolu] Paramètres dans url

Bon bah j'ai trouvé !
Un pauvre isset mal placé dans la récupération des variables GET.

Merci pour le temps accordé smile


"J'ai un string dans l'array" | http://www.blogoflip.fr

Hors ligne

Pied de page des forums

A propos Nous soutenir Contact Twitter Google+
Copyright © 2006-2017 PluXml.org, tous droits réservés