Note: Cette question est déjà résolu, finalement je trouve que ce n'est pas les cookies problème, le problème est sur fonction unserialize(). Le cookie sérialisé qui est le paramètre de cette fonction doit d'abord être striplash-ed en premier.PHP Cookies fonctionne bien sur localhost, mais il ne fonctionne pas sur le serveur en direct
Bonjour, j'ai un problème avec les cookies PHP. J'utilise des cookies PHP pour enregistrer les préférences de l'utilisateur. J'ai testé mon code sur ma machine locale (localhost en utilisant XAMPP). Tout fonctionne très bien, y compris les cookies. Mais quand je l'ai téléchargé sur le serveur live, les cookies ne fonctionnent pas du tout. Il semble que la fonction setcookie() n'écrit pas la valeur du cookie. J'ai testé en répercutant la valeur de cookie à la fois sur mon localhost et sur mon serveur live. La valeur $ _COOKIE [] sur localhost est affichée mais pas avec celle du serveur live.
Je pensais que c'est peut-être lié au fuseau horaire $ expire comme celui-ci dans ce poste http://anupraj.com.np/index.php/php-cookies-not-working-php-cookie-tutorial-and-scirpt/14. Mais ensuite j'ai réalisé que j'avais mis les cookies à expiration dans 1 mois, pas seulement dans une heure comme sur ce blog. Donc je pense que ce n'est pas le cas.
Ceci est le contenu de setting.php
<?php
$defaultSettings['default_post_to'] = 'both';
$defaultSettings['timesince_style'] = 'simplify';
...
$defaultSettings['display_geo_info'] = 'true';
$defaultSettings['enable_javascript'] = 'true';
if(!isset($_COOKIE['settings'])){
setcookie("settings", serialize($defaultSettings), time()+3600*24*30);
header('Location: index.php');
}
$setting = unserialize($_COOKIE['settings']);
?>
Et c'est le contenu de index.php
<?php
/*
ini_set ("display_errors", "1");
error_reporting(E_ALL);
*/
session_start();
require_once("settings.php"); // Settings files
require_once('varlib.php'); // Get all possible passed variable
require_once('auth.php'); // Check for channel login status
// If inputbar form submitted
if($_POST['inputbox']){
...
}
else{
echo "SETTING COOKIE: <br/><br/>";
// This print_r is only showing the $_COOKIE value (which is stored on $setting) on localhost but no on live server
print_r($setting);
switch($com){
...
}
}
?>
J'ai une recherche à ce sujet partout (Google, stackoverflow, demander à des amis sur twiiter/FB) toujours pas de solutions
J'espère que certains corps pourraient me donner la solution ici Merci :)
Avez-vous essayé les paramètres de chemin et domaine de setcookie()? – rik
Si vous activez error_reporting, vous n'obtenez aucun message d'erreur? –
@Kamal: comparez la sortie 'phpinfo()' du serveur local et local pour la partie 'session' (où les paramètres de cookie sont également affichés). – stealthyninja