Cookies et PHP : Ok en local
rockelite
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
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!
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:
- Cookies et PHP : Ok en local
- Supprimer les cookies - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- La cause de ce problème peut être la désactivation ou le refus des cookies. ✓ - Forum PHP
- Cookies manager - Télécharger - Confidentialité
1 réponse
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.
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.