Page 1 sur 3

Redirection vers lien sécurisé

Posté : 23 janv. 2012, 02:49
par Mezixx
Bonsoir,

voici un autre problème concernant mes sessions sécurisées, je m'explique :

- Un client s'authentifie sur mon site et se voit attribuer un ID.
- Il accède donc à son espace personnel.
- Dans cet espace perso il peut envoyer des mails à l'administrateur et après l'envoi de ce mail il doit être redirigé sur l'accueil de sa page perso (page restant donc sécurisée par ID)...

Mon problème se situe donc à ce niveau là. Comment faire pour récupérer l'ID de la session dans mon script d'envoi email ? J'ai beau chercher sur votre forum ou sur des cours sur les Sessions...je ne comprend pas...

Après la redirection je me retrouve à la page d'accueil et mon identifiant/mot de pass m'est de nouveau demandé...

Voici mon formulaire d'envoi mail :

<?php

$msg .= "Nom :\t$nom\n";
$msg .= "Prenom :\t$prenom\n";

$recipient = "[email protected]";
$subject = "MODIFICATION PROFIL";

$mailheaders = "From: admin MAILER<> \n";
$mailheaders .= "Reply-To: $email\n\n";

mail($recipient, $subject, $msg, $mailheaders);

Header("Location: http://xxxxx.fr/index.php?page=Accueil&id='.$id.'");

?>

Le mail arrive bien mais la redirection me fait perdre mon ID de session et donc l'authentification...


Merci d'avance pour votre aide et désolé si cette question est idiote mais la je sèche... :oops:

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 09:47
par moogli
salut,

Si l'id est en session utilise simplement le tableau $_SESSION pour passer ta valeur ($_SESSION['id'] ou autre).

@+

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 13:54
par Mezixx
J'ai donc fait ça sur mon fichier "envoiProfil.php" (appelé pour traiter l'envoi du formulaire) :

<?php

session_start();

$msg .= "nom :\t$nom\n";
$msg .= "prenom :\t$prenom\n";

$recipient = "[email protected]";
$subject = "MODIFICATION PROFIL";

$mailheaders = "From: xxxxx MAILER<> \n";
$mailheaders .= "Reply-To: $email\n\n";

mail($recipient, $subject, $msg, $mailheaders);

$id = $_SESSION['id'];

Header("Location: http://xxxxx.fr/index.php?page=Profil3&id='.$id.'");

?>

Hélas cela ne marche pas...je dois mal m'y prendre... 8-|

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 13:57
par xTG
Pour utiliser le tableau $_SESSION il faut un session_start() en début de page.

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 14:09
par Mezixx
Oui oui autant pour moi !

J'avais bien mis le session_start(); en début de page juste après mon <?php ...

Mais mon id de session (session active au moment où l'utilisateur accède au formulaire sécurisé) n'est apparemment pas récupéré et je ne suis plus authentifié après la redirection !

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 16:20
par Ryle
Merci d'utiliser les balises
 pour mettre en forme tes messages... d'autant plus que cela te permettrait de repérer certaines erreurs grâce à la coloration syntaxique :)

En l'occurrence, l'id que tu transmet en get n'est pas correct... il faut soit délimiter ta chaines avec des guillemets, soit avec des apostrophes, mais faut rester cohérent :
[php]header("Location: http://xxxxx.fr/index.php?page=Profil3&id=" . $id);
devrait déjà mieux fonctionner :)

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 16:47
par Mezixx
Merci pour ta réponse et désolé pour mes post qui ne respectent pas la "charte"

Donc j'ai testé ta solution mais hélas toujours le même problème, je ne suis plus authentifié après la redirection et l'URL affichée est :
http://xxxxx.fr/index.php?page=Profil3&id=
Il manque donc mon ID . Je me demande si il est bien récupéré...

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 17:54
par Yosh
Merci d'utiliser les balises
 pour mettre en forme tes messages... d'autant plus que cela te permettrait de repérer certaines erreurs grâce à la coloration syntaxique :)

En l'occurrence, l'id que tu transmet en get n'est pas correct... il faut soit délimiter ta chaines avec des guillemets, soit avec des apostrophes, mais faut rester cohérent :
[php]header("Location: http://xxxxx.fr/index.php?page=Profil3&id=" . $id);
devrait déjà mieux fonctionner :)
Vérifie ta SESSION juste avant de rediriger.

Si celle-ci est vide, c'est soit que tu ne l’initialise pas (ou mal) soit que tu l'écrase quelque part.

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 18:49
par Mezixx
Alors je viens de vérifier le contenu de ma SESSION.

Sur ma page faisant appel à fichier "envoiProfil.php" la session est bien en mémoire...

Par contre impossible de faire la vérification (par un echo par exemple) sur la page "envoiProfil.php"...

Pour rappel ma page "envoiProfil.php" contient ceci :
<?php
	 
session_start();      //Ajouté suite aux conseils

$msg .= "nom :\t$nom\n";
$msg .= "prenom :\t$prenom\n";

$recipient = "[email protected]";
$subject = "MODIFICATION PROFIL";

$mailheaders = "From: xxxxx MAILER<> \n";
$mailheaders .= "Reply-To: $email\n\n";

mail($recipient, $subject, $msg, $mailheaders);

$id = $_SESSION['id'];       //Ajouté suite aux conseils

header("Location: http://xxxxx.fr/index.php?page=Profil3&id=". $id);

?> 

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 20:54
par Ryle
Et euh... y a bien un moment dans ton code (au login où ailleurs), où tu stockes ton id dans ta session ?
(avec un sessiont_start() et un $_SESSION['id'] = qqchose ?)

Re: Redirection vers lien sécurisé

Posté : 23 janv. 2012, 23:58
par Mezixx
Oui au login...mais je ne comprend pas au tu veux en venir ?

Re: Redirection vers lien sécurisé

Posté : 24 janv. 2012, 09:55
par xTG
Ajoutes ceci sur ta page appelant ton script et sur envoiProfil.php
var_dump($_SESSION);

Re: Redirection vers lien sécurisé

Posté : 24 janv. 2012, 14:13
par Mezixx
<?php var_dump($_SESSION);?>
Cela affiche un "NULL" sur ma page Profil, celle appelant "envoiProfil.php"

et un :

NULL
Warning: Cannot modify header information - headers already sent by (output started at /mnt/162/sdb/7/c/Scripts/envoiProfil.php:3) in /mnt/162/sdb/7/c/Scripts/envoiProfil.php on line 25

Après validation du formulaire...

PS : ligne 25 de envoiProfil.php : header("Location: http://xxxxx.fr/index.php?page=Profil&id=". $id);

Re: Redirection vers lien sécurisé

Posté : 24 janv. 2012, 14:30
par xTG
Si tu as NULL c'est que la session n'est pas démarrée...
Donc tu n'as pas de session_start() car même si aucune variable il devrait te retourner un array vide.
Ou bien la session n'est pas gardée d'une page à une autre, les cookies sont-ils activés sur ton navigateur ?

N.B : pour l'erreur cela vient du var_dump() que je t'ai fait ajouter, c'est normal.

Re: Redirection vers lien sécurisé

Posté : 24 janv. 2012, 15:09
par Mezixx
Merci de ton aide !

Alors oui les cookie sont activés, je n'ai pas de problème avec les autres pages sécurisées de mon site dans le sens ou une fois connecté je peux naviguer sur ces pages privées sans avoir à me relogger.

Sinon concernant ton code, j'ai ajouté sur ma page Profil.php et envoiProfil.php un session_start(); et un var_dump($_SESSION);

***Cela me donne sur la page Profil.php :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/162/sdb/7/c/index2.php:38) in /mnt/162/sdb/7/c/Profil.php on line 2
array(0) { }

---> ligne 2 : session_start();


***Cela me donne sur la page envoiProfil.php :

array(0) { }
Warning: Cannot modify header information - headers already sent by (output started at /mnt/162/sdb/7/c/Scripts/envoiProfil.php:3) in /mnt/162/sdb/7/c/Scripts/envoiProfil.php on line 26

---> ligne 26 : header("Location: http://xxxxx.fr/index2.php?page=Profil&id=". $id);