[PHP] petit soucis avec les sessions [Resolu]

Bijour,bijour…

Voila, jfais une ptite page d’authentification avec enregistrement d’une variable de session… Le truc assez basic que j’ai déja fait plusieurs fois. Et pourtant, y’a vraiment un truc qui m’echappe… soit je sature et je suis devenu aveugle, soit il y a encore une “fantaisie” de php que j’ignore.

Voici le code de la page accueil.php:


<?php
require_once('../connections/objemploi.php');  
//session_start() est fait dans le index.php
echo "name : ". session_name(); //ca fonctionne
if(isset($_POST["login"]) && isset($_POST["pwd"]))
{
	if( !emptyt(trim($_POST["login"])) && !empty(trim($_POST["pwd"])))// on regarde si champ d'authentification ne sont pas vides
	{
  $login = mysql_real_escape_string($_POST["login"]);
  $lepass = mysql_real_escape_string($_POST["pwd"]);
  $pass = md5($lepass);
  
  $verif= mysql_query("select * from admin where Login = '$login' and Pass='$pass'");
  $existe = mysql_num_rows($verif);
  if ($existe)
  {
  	$_SESSION["login"]= $login;
  	
  	echo  '<h5> Connection effectuée avec succès.</h5>
    	<br><br><a href=index.php>retour</a>
    	<META http-equiv=refresh content="2;url=index.php">';
    	echo "log :".$_SESSION["login"]; //ca fonctionne
  }
  else
  {
  	echo  '<h5> Authentification incorrecte. Veuillez reéssayer svp.</h5>
    	<br><br><a href=javascript:history.back()>retour</a>
    	<META http-equiv=refresh content="2;url=javascript:history.back()">';
  }
	}
	else
	{
  echo  '<h5> Un des champs n\'est pas rempli. Veuillez reéssayer svp.</h5>
    <br><br><a href=javascript:history.back()>retour</a>
    <META http-equiv=refresh content="2;url=javascript:history.back()">';
	}
}
else
{
	echo "log :".$_SESSION["login"]; //erreur , normale au début, mais plus ensuite
	
if(isset($_SESSION["login"])) // ne rentre jamais ici
	{
  echo'<h5 align=center>Bienvenue sur la page d\'administration.</h5>';
	}
	else
	{

?>
  <div align="center">
  <br><br>
  <form action="accueil.php" method="post">
    <h5>
    Login 
    <input type="text" name="login">
  	</h5>
    <h5>
    Mot de passe :
    <input type="password" name="pwd">
  	</h5>
  	<input type="submit" value="Valider">
  </form>
  </div>
<?php 

	}
} 
  
?>

Voila, j’ai affiche $_POST[“login”] histoire de voir quelle est l’erreur :[quote=""]
Undefined index: login
[/quote]

Pourtant, apres la validation du formulaire, j’affecte bien une valeur à $_POST[“login”].

LE session_start() est fait dans l’index. Cette page est inclu dans l’index via un include().$

Yé né comprend pas pkoi $_POST[“login”] n’existe pas :pt1cable:

Merci :jap:
Mais ça, je l’ai rajouté apres (à tort certe edit: et je le retire tout de suite)… Le pb ne vient pas de la :non:

gasp.

Tu es bien sûr d’avoir lu le lien que je t’ai filé?

Réellement sûr?

Genre si je quote ça :

Tu sais me dire d’où ça vient?

+1 pour l’utilisation de la fonction trim, chez moi j’ai des erreurs si j’execute ton code tel quel par contre

if( !empty($_POST["login"]) && !empty($_POST["pwd"]))// on regarde si champ d'authentification ne sont pas vides

c’est ok

D’autre part j’ai l’impression que le session_start() via un include ne fonctionne pas correctement, chez moi si je rajoute la ligne

@session_start

dans accueil.php à la ligne 3 ça fonctionne correctement sinon il me ramène sur index.php et me redemande le login et mot de passe… En d’autres termes, il perd les infos de session…

sans_nom -> Oui j’ai bien lu le lien, et comme je l’ai dit précédamment, j’ai retiré les TRIM que j’avais rajouté à tort. Mais il y avait toujours le même comportement.

Bon J’ai eu un ptit soucis de connection, donc pas pu vous donner suite (9TEL powa^^)

J’ai trouvé la solution, apres une bonne nuit de sommeil lol:

C’est tout simple, je fait le session_start() dans l’index.
J’include la page que j’ai cite dans le post (accueil.php).
Dans cette page, je fais ca:

<form action="accueil.php" method="post">

Donc je rappelle la meme page. Le problème, c’est que je ne repasse plus par l’index, donc plus de session_start, donc plus de variable de session :ane: :ane: :ane:

Bon je sors ->> :MDR

Edit : Dugommier : Voila, c’est exactement ça :D. Enfin, ca marche très via le include, mais le truc, c’est qu’il faut toujours repasser par l’index.php :slight_smile:

ex :

 <form action=index.php?page=accueil

>

et dans l’index:

include ($HTTP_GET_VAR["page"])

(enfin la j’ai résumé)

En tout cas merci à vous :jap:

salut
alors je déterre ce topic qui n’était pas profond que ça, pasque j’ai un peu le même pb :

je suis parti sur un truc tout bidon :
a.php:

<?php

session_start();
$_SESSION['user']="admin";

header("location:b.php");

?>

b:.php;

<?php

session_start();
echo $_SESSION['user'];

?>

et là évidemment : undefined index ‘user’ :grrr:

ça doit encore etre un truc tellement évident que je le vois pas
un pb de config ?

session.use_trans_sid = 1
register_globals = 0 // mais c’est normal …

pourtant ça marche en local sur le serveur, mais depuis un lcient : non

Ca passe par cookie? Ou variable GET? Si c’est variable GET, cherche pas: faut passer la variable de session dans chaque url que tu utilises… regarde dans la doc php, y a un truc qui te donne son contenu, et qui te facilite la tâche.

alors pour le moment je suis config comme ça:

session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid On On

effectivment il me passse PHPSESSID=cab54blablalbla dans l’url pour les scripts qui appellent session_start

à priori, ma syntaxe doit être bonne ? non?
comment je dois config les param de session?

; session.use_only_cookies = 0

là que je mette 0 ou 1 ne devrait rien changer, vu que la ligne est commentée
enfin, je veux bien essayer