probleme start_session

Eléphanteau du PHP | 24 Messages

21 juin 2022, 18:45

Bonsoir

J'ai voulu héberger un site sur ionos en sachant qu'il fonctionné bien en local.
je ne peut pas récupérer la variable $user
<?php
session_start();
if ($_SESSION['username'] !== "") {
$user = $_SESSION['username'];
}

?>
pour l'utilisé plus tard comme ceci
<?php
echo "Bienvenue $user"; ?>
<?php echo '<img src="..\assets\img\faces\\'.$user.'.jpg"/>';
?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9350 Messages

21 juin 2022, 19:31

Bonjour,

Vérifie ce que contient ta variable $user et ta variable $_SESSION avec des var_dump() à différents endroits de ton script pour savoir à quel moment tu perds l'info et si elle est bien initialisée au début.

Par ailleurs, pour les chemins de fichiers, il faut impérativement utiliser des slashes / et non pas des antislashes \
echo '<img src="../assets/img/faces/'.$user.'.jpg"/>';
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 24 Messages

22 juin 2022, 14:17

Bonjour,

Vérifie ce que contient ta variable $user et ta variable $_SESSION avec des var_dump() à différents endroits de ton script pour savoir à quel moment tu perds l'info et si elle est bien initialisée au début.

Par ailleurs, pour les chemins de fichiers, il faut impérativement utiliser des slashes / et non pas des antislashes \
echo '<img src="../assets/img/faces/'.$user.'.jpg"/>';
avec les 2 var_dump ($user) et ($_SESSION) les 2 sont "NULL"

Mammouth du PHP | 2217 Messages

22 juin 2022, 14:24


Eléphanteau du PHP | 24 Messages

22 juin 2022, 19:52

merci j'ai deja lu le manuel et mes variables fonctionne bien en local, mais pas sur ionos.
c'est la même version php pourtant, mais la avec le var_dump elles sont vide.
j'ai même essayé un php.ini
session.auto_start = On
car il était sur off mais rien ne change.

Mammouth du PHP | 2217 Messages

22 juin 2022, 22:31

je ne demande pas seulement si la doc a été lu, mais si le code de l'exemple a été copié / collé dans un fichier, mis sur ionos et testé (code dans lequel le session_start(); commence au début du fichier, mais pas seulement au début de la première instruction php).

Eléphanteau du PHP | 24 Messages

23 juin 2022, 10:42

es que cela peut venir de ma page de vérification qui coupe ma session_start?

Code : Tout sélectionner

<?php session_start(); if(isset($_POST['pseudo']) && isset($_POST['password'])) { // connexion à la base de données $db_username = '*******'; $db_password = '*******'; $db_name = '*******'; $db_host = '*********'; $db = mysqli_connect($db_host, $db_username, $db_password,$db_name) or die('could not connect to database'); // on applique les deux fonctions mysqli_real_escape_string et htmlspecialchars // pour éliminer toute attaque de type injection SQL et XSS $username = mysqli_real_escape_string($db,htmlspecialchars($_POST['pseudo'])); $password = mysqli_real_escape_string($db,htmlspecialchars($_POST['password'])); if($username !== "" && $password !== "") { $requete = "SELECT count(*) FROM utilisateurs where pseudo = '".$username."' and password = '".$password."' "; $exec_requete = mysqli_query($db,$requete); $reponse = mysqli_fetch_array($exec_requete); $count = $reponse['count(*)']; if($count!=0) // nom d'utilisateur et mot de passe correctes { $_SESSION['username'] = $username; header('Location: pages/dashboard.php'); } else { header('Location: index.php?login_err'); // utilisateur ou mot de passe incorrect } } else { header('Location: index.php?login_err=2'); // utilisateur ou mot de passe vide } } else { header('Location: index.php'); } ?>
c'est ma page entre la page de connexion et le dashboard
et le début de ma page dashboard:

Code : Tout sélectionner

<? session_start(); if ($_SESSION['username'] !== "") { $user = $_SESSION['username']; } $titrepage = "Dashboard"; var_dump ($titrepage); //vérification si le membre est passé par la page de login : if (!isset($_SESSION['username'])) { $msg = 'Notconnect'; // si la variable de session login n'est pas enregistré : retour sur la page index.php header('location: ../index.php?doaction=' . $msg); } else { // si tu es bien connecté. $user = $_SESSION['username']; } ?>

Mammouth du PHP | 1782 Messages

23 juin 2022, 16:45

c'est peut être le copié collé ici mais dans ton deuxième code il y a un espace avant <? cela suffit à planter une session

Assure toi aussi que ton serveur gère les short tag <? ou utilise <?php tout le temps
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9350 Messages

24 juin 2022, 08:28

[...] utilise <?php tout le temps
+1 ça évite les erreurs et ça rend son code + facilement compatible quand on change de serveur
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 24 Messages

24 juin 2022, 09:27

j'ai essayé avec espace sans espace avec <?php rien ne change. en plus avec ce code la:

Code : Tout sélectionner

if (!isset($_SESSION['username'])) { $msg = 'Notconnect'; // si la variable de session login n'est pas enregistré : retour sur la page index.php header('location: ../index.php?doaction=' . $msg); } else { // si tu es bien connecté. $user = $_SESSION['username']; }

je ne devrais pas pouvoir accéder à la page sans être connecté et je peu comme même y accédé.
pourtant tous fonctionne bien avec wamp

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9350 Messages

24 juin 2022, 09:43

Après la fonction header('location...'), il faut toujours (toujours, toujours, pas d'exception) mettre un exit; Pour ne pas renvoyer de HTML afin que la redirection s'effectue correctement.
Quand tout le reste a échoué, lisez le mode d'emploi...