Bonjour,
J'ai toujours pensé que la fonction header() était "implicitement" une "fin de script" dans le type header("location:xxx");
Je sais que cette fonction est souvent aussi utilisé pour les types mime de fichier.
Alors si un header("location:xxx") ne termine pas le script comme un exit... effectivement, y a un soucis venant de moi. (Et ça fait 5ans que je bosse comme ça ! C'te honte xD).
J'vais tester avec un Exit(); ! S'il s'avère que ça règle le problème, alors ben c'est cool.
J'avais déjà eu affaire parfois à des problèmes similaires de scripts qui continuent après un header(); et j'n'avais pas spécialement tilté...
Du coup, je viens de tester le "Ce bâtiment n'est pas à votre portée" correspond à la ré-entrance dans le Action==Entrer. Donc ce n'est effectivement pas celui de la partie Action==Acheter.
J'ai testé en mettant le code suivant dans la partie Action==Acheter, ça ne change rien.
J'ai toujours pensé que la fonction header() était "implicitement" une "fin de script" dans le type header("location:xxx");
Je sais que cette fonction est souvent aussi utilisé pour les types mime de fichier.
Alors si un header("location:xxx") ne termine pas le script comme un exit... effectivement, y a un soucis venant de moi. (Et ça fait 5ans que je bosse comme ça ! C'te honte xD).
J'vais tester avec un Exit(); ! S'il s'avère que ça règle le problème, alors ben c'est cool.
J'avais déjà eu affaire parfois à des problèmes similaires de scripts qui continuent après un header(); et j'n'avais pas spécialement tilté...
Du coup, je viens de tester le "Ce bâtiment n'est pas à votre portée" correspond à la ré-entrance dans le Action==Entrer. Donc ce n'est effectivement pas celui de la partie Action==Acheter.
J'ai testé en mettant le code suivant dans la partie Action==Acheter, ça ne change rien.
Code PHP :
<?php
//on vérifie la distance
if(!$Batiment->EtreAPortee($PJ->Pe_Caracs->Pe_PosX,$PJ->Pe_Caracs->Pe_PosY,$PJ->Pe_Caracs->Qu_Id))
{
header("location:jouer.php?Erreur=Ce batiment n'est pas à votre portée");
exit ();
}
Ca veut donc dire qu'il considère que le personnage est à portée. Que seulement l'ID de session change (puisqu'il n'y avait pas de refresh de ladite page et donc de la session) et que donc à la ré-entrance, l'ID a changé, le personnage n'est plus à portée...
Donc la seule solution que je vois (peut-être y en a-t-il d'autres) est effectivement d'envoyer l'ID de celui qui fait l'action par le biais d'un champs Hidden dans le formulaire et de comparer ensuite l'ID de l'envoi et l'ID du perso en cours.
Mais j'ai peur que ça ne change rien vu que lors de l'achat la session ne sera pas régénérée...
Oula, je viens de dire une énorme connerie avec ma "régénération" de session.
En postant le form, et en pointant sur le script, je la régénère forcément.
Faut que j'arrête le vin de table moi ... ça me réussit pas sur mes heures de boulot !