Variables $_SESSION non transmises d'une page à l'autre

Baudouin Paul partagé ce idée il y a 19 mois
En analyse

Bonjour la communauté !

Mon site tourne très bien en local, mais depuis que je l'ai mis en ligne je rencontre quelques difficultés, en particulier avec les sessions qui ne se transmettent pas hors de la page de connexion.

Les utilisateurs s'identifient sur la page /index.php dont voici les premières lignes :


<html lang="fr">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<?php
session_start();
include'./fonctions.php';
?>
<?php
if(isset($_POST['connect'])){
if(isset($_POST['club']) && isset($_POST['password'])){
connexion($_POST['club'], $_POST['password']);
} else {
echo "<center><p style='color:green'>Merci de remplir tous les champs.</p></center>";
}
}
?>


Cette page fait appel à la fonction connexion() présente dans le fichier /fonctions.php (inclus) :


<?php
session_start();
//Fonction permettant de se connecter à la BDD
function connexionbdd() {
$bdd_user='comphexf_awzxecfdsq';
$bdd_password='KMpy!o~,Q_nqVo(98)';
$bdd_host='localhost';
$db='comphexf_cj44';
return mysqli_connect($bdd_host, $bdd_user, $bdd_password, $db);
}

//fonction permettant la connexion des utilisateurs
function connexion($user, $password){
$conn = connexionbdd();
$query = mysqli_query($conn,"SELECT * FROM clubs WHERE club_nom = '".$user."' AND club_pw = '".$password."'");
if(mysqli_num_rows($query) != 0) { // si il y a un résultat, mysqli_num_rows() nous donnera alors 1. Si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat
session_start(); //Ouverture d'une session, dans laquelle on stock des variables de session
$_SESSION['club'] = $user;
header('Location: ./index.php');
} else {
echo "<center><p style='color:green'>Désolé, nous ne sommes pas parvenu à vous identifier.</p></center>";
}
}

La connexion se passe bien, une session est créée et la variable $_SESSION['club'] fonctionne sur la page /index.php où l'utilisateur est redirigé. Cependant, lorsque je change de page, cette variable de session n'existe plus. Exemple avec la plage ./competition.php dont voici les premières lignes :

<html lang="fr">
<?php
session_start();
include'./fonctions.php';
?>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?> 

Erreur retournée : Undefined variable: _SESSION ......

Pourtant, session_start(); et bien placé avant affichage ? Je sèche ...

Je ne sais pas si ça peut avoir un lien, mais les accents ne s'affichent pas sur le site (pourtant UTF8 ?).

--> https://competcdck44.yo.fr/

Merci par avance,

Paul