Alors là... J'hésitais à poser ma question ici ou à des experts en phénomènes inexpliqués... O.o

Voyez plutôt... Voici un extrait du code de ma page connexion.php

<?php
session_start();
require_once 'bdd.php';

$select = $bdd->prepare('SELECT * FROM User WHERE pseudo = ?'); /* retirer le * */
$select->execute([$_POST['pseudo']]);

if ($user = $select->fetch(PDO::FETCH_ASSOC))
{
}
else
{
    $_SESSION['flash']['erreur'] = "Tes identifiants sont incorrects... Prends une profonde inspiration et essaye à nouveau.";
    header('Location: index.php'); /* à changer en page_precedente */
    exit;
}

Quand j’exécute ce script en tapant de mauvais identifiants lors de ma connexion, la page index.php n'affiche pas correctement l'accent "à" (contenu dans le message flash d'erreur). Pourtant, avec le script qui suit, l'accent est correctement affiché (il s'agit d'une page test.php)

<?php
session_start();
require_once 'bdd.php';

$_POST['pseudo'] = 'fake';

$select = $bdd->prepare('SELECT * FROM User WHERE pseudo = ?'); /* retirer le * */
$select->execute([$_POST['pseudo']]);

if ($user = $select->fetch(PDO::FETCH_ASSOC))
{
}
else
{
    $_SESSION['flash']['erreur'] = "Tes identifiants sont incorrects... Prends une profonde inspiration et essaye à nouveau.";
    header('Location: index.php');
    exit;
}

Bref, les deux scripts sont identiques, mais sur l'un l'accent s'affiche correctement, sur l'autre non... Quelqu'un pourrait m'expliquer ? Je suis désarmé ! Merci :)

Vous pouvez observer ce phénomène étrange de vos propres yeux à ces adresses : http://ouistiteach.com et http://ouistiteach.com/test.php

5 réponses


Lartak
Réponse acceptée

Bonjour.
Vérifies que tu utilises bien l'encodage UTF-8 losque tu sauvegardes tes fichiers depuis ton éditeur/IDE.

Salut ! Je pense que tu devrais encoder ton $_SESSION par du utf8

utf8_encode($_SESSION['flash']['erreur'] = "Tes identifiants sont incorrects... Prends une profonde inspiration et essaye à nouveau.");

oui regarde l'encodage de ton fichier.

En effet, ma page connexion.php était encodée en ANSI... je ne sais pas pourquoi. Un grand merci !! j'aurais continué à chercher vainement dans mon code sans votre aide ;)

De rien, avec plaisir.
Il arrive que la solution soit toute simple et qu'on y pense pas sur le moment, d'où l'utilité de demander à d'autres personnes.