[Résolu] Paramètres dans url

flipflipflipflip Member
juin 2017 modifié dans Bogues
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?static18/portail&p=stock . La variable p est bien récupérable par $_GET.

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?static18/portail&p=panier&a=add&v=3253560059293 . 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 ?

J'ai un string de l'array

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    juin 2017 modifié
    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.
  • flipflipflipflip Member
    juin 2017 modifié
    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.

    J'ai un string de l'array

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

    Merci pour le temps accordé :)

    J'ai un string de l'array

Connectez-vous ou Inscrivez-vous pour répondre.