Cookies et PHP : Ok en local

Fermé
rockelite Messages postés 4 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 28 décembre 2008 - 16 sept. 2008 à 19:20
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 17 sept. 2008 à 09:17
Bonsoir,

Je suis entrain d'essayer de mettre en place un espace membre sur mon site avec un mécanisme d'identification (login + mdp) basé sur les cookies. Cela marche très bien en local sur mon PC (environnement easy php 2.0.0.0), mais pas sur le serveur (PHP5).

Ma page de connexion se compose d'un formulaire html qui récupère les données de l'utilisateur, puis les teste (caractères etc.) et, si une entrée de ma base de données mysql correspond au login et mot de passe, je crée un cookie avec le nom de l'utilisateur.

Nous avons donc au début de ma page de connexion:

********************************************

<?php

if(isset($_COOKIE["NOM_UTILISATEUR"]))
{
header("Location: Membres.php");
}
else
{

// Tous les tests ... puis si je reconnais le login et mot de passe
setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");

// Fermeture de la connexion à la base de données
mysql_close();

// Redirection de l'utilisateur
header("Location: Membres.php");
}

?>

***************************************************

Puis en gros en dessous il y a le formulaire:

<form action="http://<?php print ($_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]); ?>" method="post">

// Le formulaire...

</form>

***************************************************

Si je consulte mes cookies après un login correct, je retrouve sous 127.0.0.1 deux noms de cookies que je ne retrouve pas lorsque je tente l'expérience sur le site en production. Ces cookies portent étonnement les noms:

"NOM_UTILISATEUR" et "ID_UTILISATEUR"

J'ai activé les messages d'erreurs php sur mon site et lorsque je soumets un bon login + mdp j'obtiens les warnings suivants:


Warning: Cannot modify header information - headers already sent by (output started at
BLABLA....www/Connexion.php:4) in BLABLA....www/Connexion.php on line 75

Warning: Cannot modify header information - headers already sent by (output started at
BLABLA....www/Connexion.php:4) in BLABLA....www/Connexion.php on line 76

Warning: Cannot modify header information - headers already sent by (output started at
BLABLA....www/Connexion.php:4) in BLABLA....www/Connexion.php on line 82

Warning: mysql_close(): no MySQL-Link resource supplied in BLABLA....www/Connexion.php on line 87



Les lignes 75, 76 et 82 correspondent à:

LIGNE 75 setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
LIGNE 76 setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");

LIGNE 82 header("Location: Membres.php");


******************************************************

Voila, si quelqu'un sait pourquoi ça marche en local mais pas sur le serveur ce serait gentil de m'orienter.

Merci!
A voir également:

1 réponse

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
17 sept. 2008 à 09:17
Salut,

Il faut que le set cookie soit le premier élément envoyé au navigateur, et header location aussi

Ces cookies portent étonnement les noms:

"NOM_UTILISATEUR" et "ID_UTILISATEUR"

quoi de plus normal puisque c'est le nom que tu leur as donné.

Utilises plutot la methode des "sessions php" c'est beaucoup plus sécurisé.

Vas voir sur Google comment faire.
0