Page 1 sur 1
probleme start_session
Posté : 21 juin 2022, 18:45
par mije69
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"/>';
?>
Re: probleme start_session
Posté : 21 juin 2022, 19:31
par @rthur
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"/>';
Re: probleme start_session
Posté : 22 juin 2022, 14:17
par mije69
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"
Re: probleme start_session
Posté : 22 juin 2022, 14:24
par or 1
Re: probleme start_session
Posté : 22 juin 2022, 19:52
par mije69
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.
Re: probleme start_session
Posté : 22 juin 2022, 22:31
par or 1
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).
Re: probleme start_session
Posté : 23 juin 2022, 10:42
par mije69
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'];
}
?>
Re: probleme start_session
Posté : 23 juin 2022, 16:45
par Spols
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
Re: probleme start_session
Posté : 24 juin 2022, 08:28
par @rthur
[...] utilise <?php tout le temps
+1 ça évite les erreurs et ça rend son code + facilement compatible quand on change de serveur
Re: probleme start_session
Posté : 24 juin 2022, 09:27
par mije69
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
Re: probleme start_session
Posté : 24 juin 2022, 09:43
par @rthur
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.