Bonjour,

J'ai un problème étrange avec la gestion des sessions :

En fonction de l'emplacement de la fonction session_start(), les sessions sont bien enregistrées ou pas.

Voici ma structure et mon code (simplifié) :

index.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<?php
require 'includes/main.php';
[...]
?>

includes/main.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?php
require 'fonction.php';
 
$user = verifAuthentification();
[...]
?>

includes/fonction.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?php
session_start();
 
function verifAuthentification($login, $pass)
{
[...]
    $_SESSION['login'] = $login;
    $_SESSION['pass'] = $pass;
[...]
}
[...]
?>
Dans ce cas de figure tout fonctionne sur mon PC en local via WAMP.

Par contre si je déplace le session_start() au début du includes/main.php...
includes/main.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<?php
session_start();
require 'fonction.php';
 
$user = verifAuthentification();
[...]
?>
includes/fonction.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<?php
function verifAuthentification($sLogin = null, $sPassword = null)
{
[...]
    $_SESSION['login']    = $sLogin;
    $_SESSION['password'] = $sPassword;
[...]
}
[...]
?>
...les infos de sessions ne sont plus enregistrées

Pourtant la fonction session_start() retour TRUE dans tous les cas !
Et je n'ai aucun code envoyé avant <?php (pas de caractere ou espace...)
Tous les fichiers sont encodés en UTF8 sans BOM.
Je n'ai aucune erreur dans les logs PHP.

J'aimerais justement que le session_start() soit dans le main.php et plus dans le fichier de fonctions, pour des raisons d'organisation de code, et aussi parce que cela génère une erreur sur mon hébergeur (O2Switch).

Qq'un aurait-il une idée ou une piste pour régler ce problème ?
Merci.