HTML : test2.php
<?php
session_start(); // On démarre la session AVANT toute chose
setcookie('pseudo', '', time() + 365*24*3600, null, null, false, true);
?>
<form method="POST" action="test.php">
<p>
<label for="pseudo">Pseudo</label><br />
<input name="pseudo" id="pseudo" type="text" /><br />
</p>
<p>
<input value="Envoyer" type="submit" />
</p>
</form>
PHP : test.php
<?php
session_start(); // On démarre la session AVANT toute chose
setcookie('pseudo', '', time() + 365*24*3600, null, null, false, true);
?>
<?php
if (isset($_POST['pseudo']))
{
$_SESSION['pseudo']= $_POST['pseudo'];
setcookie('pseudo', $_SESSION['pseudo'], time() + 365*24*3600, null, null, false, true);
echo $_POST['pseudo'];
echo $_SESSION['pseudo'];
echo $_COOKIE['pseudo'];
}
else
{
echo "ERREUR";
}
?>
echo $_POST['pseudo']; fonctionne
echo $_SESSION['pseudo']; fonctionne
echo $_COOKIE['pseudo']; ne fonctionne pas la 1ere fois seulement.
Il n'y a jamais rien pour rien OU je pourrais avoir réponse à tout.
Cordialement Allen.

Lorsque le navigateur demande au serveur une page Web ou n'importe quel type de fichier, il envoie une requête dans le protocole HTTP (on dit une requête HTTP). Dans cette requête, le navigateur indique des données comme le fichier désiré, la méthode (GET ou POST le plus fréquemment) et d'autres données, dont les cookies accessibles par le fichier demandé.
Lorsque tu envoies le formulaire, tu tombes sur la page teste.php.
Mais le navigateur ne connaissant pas encore le cookie, il ne le transmet pas, et donc, ton script PHP ne peut pas récupérer $_COOKIE['pseudo']
Quand tu utilises setcookie(), le serveur va indiquer le cookie au navigateur à l'aide des entêtes HTTP. Ces entêtes précèdent le contenu du fichier demandé. Elles contiennent par exemple le code du résultat (200=Ok, 404=Not Found, etc), la longueur du fichier, l'encodage, ET les cookies qui ont été créé.
C'est parce que les cookies sont indiqués dans les entêtes qu'il faut les définir avec qu'elles (les entêtes) ne soient envoyées au navigateur.
Pour en revenir à ton code, sur la page teste2.php, le cookie n'existe pas.
Lorsqu'on soumet le formulaire, on tombe sur teste.php
Le navigateur ne connait pas le cookie, donc il ne l'envoie pas au serveur.
Le script s'exécute, et là, un cookie est créé : il est envoyé au navigateur
Mais temps que tu ne recharges pas la page, le serveur ne pourra pas accèder au cookie : c'est le navigateur qui va le retransmettre après, au deuxième chargement de teste.php, et seulement là, tu pourras y accèder en PHP, via $_COOKIE.
Donc, lorsque je charge mon formulaire dans la page test2.php, le cookie devrait se créer.
Alors, j'envoie le formulaire, le cookie pseudo devrait quand même exister.
Seulement sa valeur est "".
Peut-tu m'expliquer ça SVP
PS : Désolé si je comprends rien XD
Donc, quand tu fais setcookie('pseudo',''), tu ne crées rien du tout.
C'est d'ailleur de cette manière qu'il faut supprimer un cookie en PHP.