[RESOLU] Problème de création de cookie

Eléphanteau du PHP | 10 Messages

28 nov. 2019, 16:01

Bonjour à tous,

Je débute en Php et bien que le langage ne soit pas bien compliqué surtout avec tous les bons tuto qu'on trouve sur Internet je me retrouve avec une petite difficulté.

Je vous explique :
je demande à mon site de créer un cookie lorsque j'entre un mot de passer qui me permettra d’accéder a une partie privée.

En local, tout fonctionne parfaitement, mais dès que j'envoie mon code sur mon serveur en ligne : le cookie ne se crée plus :cry:

si besoin, je vous mettrais des screens de mon code.

Merci d'avance, passez une bonne journée.

ViPHP
ViPHP | 2576 Messages

28 nov. 2019, 16:52

A tout hasard tu peux tester le retour de la fonction setcookie : false ou true.
Il faudrait que tu montres au moins la ligne avec la fonction.

Pb possible :
- versions de php différentes
- non affichage des erreurs qui cache un problème (paramétrage de php.ini) => voir log et faire un test avec un script avec une erreur
- paramétrage de la bufferisation (ob_start()) => une ligne blanche bloque le cookies

Eléphanteau du PHP | 10 Messages

28 nov. 2019, 17:00

 <?php if (isset($_POST['Mdp']) AND $_POST['Mdp'] ==  "test") { ?>
            <?php setcookie('Autorisation', 'Vrai', time() + 365*24*3600, null, null, false, true); ?>
            <p>
            Accès autorisé à la zone privée<br>
            <?php echo $_COOKIE['Autorisation'] ?>
            <a href="index.php" class="bouton1">Accueil</a><br>
            </p>
       <?php } else {?>
            <form method="post" action="CreateCookie.php">
            <p>Veuillez entrer le mot de passe : <br> <input type="password" name="Mdp" /></p>
            <input type="submit" value="Valider" />
            </form>
            <a href="index.php" class="bouton1">Accueil</a><br>
        <?php } ?>
Voila comment je crée mon cookie.

ViPHP
ViPHP | 2576 Messages

29 nov. 2019, 13:56

<?php if (isset($_POST['Mdp']) AND $_POST['Mdp'] ==  "test") { ?>
            <?php setcookie('Autorisation', 'Vrai', time() + 365*24*3600, null, null, false, true); ?>
Entre ?> et <?php, il y a des caractères (return et blancs).

Si les sorties ne sont pas bufferisées, le setcookies plante. En local, ca doit être bufferisé mais pas dans l'hébergement.
Je suppose que le paramétrage du serveur fait que les messages d'erreur sont affichés dans une log et pas à l'écran (c'est normal en ligne et c'est le contraire qui est normal en local). Donc pas de message comme quoi tu a déjà envoyé des caractères.

Une solution :
<?php if (isset($_POST['Mdp']) AND $_POST['Mdp'] ==  "test") { 
              setcookie('Autorisation', 'Vrai', time() + 365*24*3600, null, null, false, true); ?>

Eléphanteau du PHP | 10 Messages

29 nov. 2019, 16:56

j'ai remplacé la ligne comme montrer mais rien ne change, je ne comprends pas

ViPHP
ViPHP | 2576 Messages

29 nov. 2019, 22:39

<?php if... est le contenu du fichier correspondant à l'url et il n'y a rien avant (pas de lignes blanche ni de blancs ?

A défaut de messages d'erreur à l'écran, il faut trouver les logs php pour voir ce qui se passe.

Est ce la même version php en local et en ligne ?