cohabiter $_session et $_post dans une meme page

anna70
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 11:49

Bonjour à tous,

j'essaye de faire une mise à jour de mon site par rapport à easyphp 1.8 alors mon problème est :

1- pageconnexion.php ==> connexion à un compte par formulaire post .

2- pagecompte.php ==> recuperation des variables par

Code : Tout sélectionner

$var1 = isset($_POST['var1'])? trim($_POST['var1']):""; $var2 = isset($_POST['var2'])? trim($_POST['var2']):"";
j'affiche les resultats et tout se passe bien .

si je décide de modifier le contenue de mon compte, j'envoie par lien les variables par session sur la pagemodifprofil.php .

Code : Tout sélectionner

$_SESSION['var1']="$var1"; $_SESSION['var2']="$va2"; <? echo "<a href='./pagemodifprofil.php?'.SID >Modifier </a>"; ?>
3- pagemodifprofil.php :

je récupère la session :

Code : Tout sélectionner

$session = isset($_GET['session'])? trim($_GET['session']):""; session_start($session); $var1 = isset($_SESSION['var1'])? trim($_SESSION['var1']):""; $var2 = isset($_SESSION['var2'])? trim($_SESSION['var2']):"";

tout se passe bien la récupération et la modif faite, je renvois les variables à nouveau sur la page compte pour reafficher les nouvelles données :

Code : Tout sélectionner

$_SESSION['var1']="$var1"; $_SESSION['var2']="$var2"; header("Location:pagecompte.php?".SID);

Et c'est la que se trouve le schmilblick:

dans ma pagecompte.php j'essaye de cohabiter les mêmes variables selon qu'elles soient récupérer par $_post ou $_session et le problème est que c'est toujours les variables qui sont en dernier qui sont pris en compte :

exemple :

Code : Tout sélectionner

$session = isset($_GET['session'])? trim($_GET['session']):""; session_start($session); $var1 = isset($_SESSION['var1'])? trim($_SESSION['var1']):""; $var2 = isset($_SESSION['var2'])? trim($_SESSION['var2']):""; $var1 = isset($_POST['var1'])? trim($_POST['var1']):""; $var2 = isset($_POST['var2'])? trim($_POST['var2']):"";

dans ce cas c'est toujours les variables $_POST qui seront pris en compte malgré que c'est c'est $_SESSION qui sont envoyées (je précise que les $_SESSION passent bien )==> erreur s'affiche variables $_POST sont vides.

Si je veux que ce soient les $_SESSION qui soient pris en compte je mets en dernier et la c'est bon :

Code : Tout sélectionner

$session = isset($_GET['session'])? trim($_GET['session']):""; session_start($session); $var1 = isset($_POST['var1'])? trim($_POST['var1']):""; $var2 = isset($_POST['var2'])? trim($_POST['var2']):""; $var1 = isset($_SESSION['var1'])? trim($_SESSION['var1']):""; $var2 = isset($_SESSION['var2'])? trim($_SESSION['var2']):"";
en revanche si dans cette page j'envoie les variables par $_POST elle ne seront pas prises en compte ==> erreur s'affiche variables $_SESSION sont vides .


Alors ma question est :

est-il possible de cohabiter les $_POST et $_SESSION pour les mêmes variables dans une même page ??

Si qq1 a été confronté à ce problème merci de me donner un coup de main, voila j'espère que mes explications étaient clairs :oops:

Mammouth du PHP | 1776 Messages

17 janv. 2006, 12:33

les get post et session peuvent tout à fait cohabiter !
post n'a rien à voir avec session !!!!
Néanmoins, je ne vois pas le but final de ton script...même au travers de ton code. Un peu plus de clarté et d'explication serait superbe !

Mammouth du PHP | 1311 Messages

17 janv. 2006, 12:36

salut

pour
$session = isset($_GET['session'])? trim($_GET['session']):"";
session_start($session);
$var1 = isset($_SESSION['var1'])? trim($_SESSION['var1']):"";
$var2 = isset($_SESSION['var2'])? trim($_SESSION['var2']):"";
$var1 = isset($_POST['var1'])? trim($_POST['var1']):"";
$var2 = isset($_POST['var2'])? trim($_POST['var2']):"";
c'est normale car tu ecrase ta variable
tu peut passer par un tableau par example
$session = isset($_GET['session'])? trim($_GET['session']):"";
session_start($session);
$var1['session'] = isset($_SESSION['var1'])? trim($_SESSION['var1']):"";
$var2 ['session']= isset($_SESSION['var2'])? trim($_SESSION['var2']):"";
$var1['post'] = isset($_POST['var1'])? trim($_POST['var1']):"";
$var2 ['post']= isset($_POST['var2'])? trim($_POST['var2']):"";
en revanche si dans cette page j'envoie les variables par $_POST elle ne seront pas prises en compte ==> erreur s'affiche variables $_SESSION sont vides .
comprend pas

Mammouth du PHP | 1776 Messages

17 janv. 2006, 12:40

Je souhaiterais que tu te rende compte du script que tu fais...

Code : Tout sélectionner

$var1 = isset($_POST['var1'])? trim($_POST['var1']):""; $var1 = isset($_SESSION['var1'])? trim($_SESSION['var1']):"";
Si envoi par post de var1, post var1 devient var1, sinon vide
Si envoi par session de var1, session var1 devient var1, sinon vide

Cela revient à dire que ta variable sera soit vide, soit equivalente a session...donc tu as deux trois lignes en trop
Il doit y avoir un énorme bug dans ton raisonnement. Que souhaite-tu faire ? Quel est ton pseudo code ?

anna70
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 12:40

salut

pour
$session = isset($_GET['session'])? trim($_GET['session']):"";
session_start($session);
$var1 = isset($_SESSION['var1'])? trim($_SESSION['var1']):"";
$var2 = isset($_SESSION['var2'])? trim($_SESSION['var2']):"";
$var1 = isset($_POST['var1'])? trim($_POST['var1']):"";
$var2 = isset($_POST['var2'])? trim($_POST['var2']):"";
c'est normale car tu ecrase ta variable
tu peut passer par un tableau par example
$session = isset($_GET['session'])? trim($_GET['session']):"";
session_start($session);
$var1['session'] = isset($_SESSION['var1'])? trim($_SESSION['var1']):"";
$var2 ['session']= isset($_SESSION['var2'])? trim($_SESSION['var2']):"";
$var1['post'] = isset($_POST['var1'])? trim($_POST['var1']):"";
$var2 ['post']= isset($_POST['var2'])? trim($_POST['var2']):"";
en revanche si dans cette page j'envoie les variables par $_POST elle ne seront pas prises en compte ==> erreur s'affiche variables $_SESSION sont vides .
comprend pas
merci pour vos reponses (PRoGRaFLaSH et Jeff ) ,

j'essaye ce que jeff a corrigé et je vous tiens au courant .

a+

Mammouth du PHP | 1776 Messages

17 janv. 2006, 12:48

Sérieux je pige plus rien là :lol:
Jeff, si elle passe par les memes variables, ce n'est apparemment pas anodin ! A mon avis elle veut incrementer une variable de differentes valeurs suivants le type d'envoi...donc me semble pas que ta réponse corresponde bien à sa recherch (qui est pas super clair). Je verrais plutot un if et elseif avec isset pour post et session:
if (isset($_SESSION['var1']))
{
$var1 = trim($_SESSION['var1']); 
}
elseif(isset($_POST['var1']))
{
$var1 = trim($_POST['var1']); 
}
else
{
$var1 = "";
}
Je cible plus sa demande sur cette soluce là...
Maintenant, si le demandeur pouvait apporter des précisions, ce ne serait pas de refus !

Mammouth du PHP | 1311 Messages

17 janv. 2006, 12:52

j'aijuste tenter d'apporté une solution :lol:
ni plus ni moins

Mammouth du PHP | 1776 Messages

17 janv. 2006, 12:55

j'aijuste tenter d'apporté une solution :lol:
ni plus ni moins
difficile dans ces conditions... :lol:
tjr pas compris le pkoi du comment de la question ^^

anna70
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 21:14

deja merci de votre collaboration et excusez moi de ne pas vous avoir donné suite de suite :oops: .

alors pour ettayer mon prob je dirai que la solution est plus proche de celle de PRoGRaFLaSH

c'est recuperer ces variables dans la page compte.php selon qu'elle soient envoyé en $_post ou $_SESSION sans que la session prenne le dessus à chaque fois . ( ces variables sont les memes qu'elles soient en post ou en session) .

shematiquement parlant c'est :

Code : Tout sélectionner

identification pageidentification.php ===============>pagecompte.php(recuperation $_POST['mail'] et $_POST['motdepasse']) et affichage . modification pagecompte.php================>pagemodification.php (recuperation $_SESSION['mail'] et $_SESSION['motdepasse']) modification et retour sur page compte pour reaffichage en par recuperation de session