IE ne veut pas créer le cookie

IE ne veut pas créer le cookie - PHP - Programmation

Marsh Posté le 27-08-2004 à 17:57:04    

Hello,  
 
J'essaie un cookie pour un site qui est dans une frame. Mozilla crée le cookie sans problème et IE ne veut pas le créer. Pourtant j'ai vu d'autres sites où il n'y a pas de problème donc jcomprends pas :??:
 
En PHP ca donne:
setcookie("$nom", "$value", $expire, "/", "" );
 
j'imagine que le problème a qqchose à voir avec les deux dernièrs paramètres:
http://fr3.php.net/manual/en/function.setcookie.php
 

path  The path on the server in which the cookie will be available on.   If set to '/', the cookie will be available within the entire domain. If set to '/foo/', the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain. The default value is the current directory that the cookie is being set in.


domain  The domain that the cookie is available.   To make the cookie available on all subdomains of example.com then you'd set it to '.example.com'. The . is not required but makes it compatible with more browsers. Setting it to www.example.com  will make the cookie only available in the www  subdomain. Refer to tail matching in the spec for details.


 
PS: pas de rapport avec un buffer, sans frame le cookie est crée.


Message édité par Limit le 27-08-2004 à 18:06:14
Reply

Marsh Posté le 27-08-2004 à 17:57:04   

Reply

Marsh Posté le 27-08-2004 à 19:03:36    

la page en question: http://stegri.free.fr/frame.htm
 
vous pouvez essayer avec ce compte
pseudo: cyril
mot de passe: azerty
 
ca marche avec mozilla mais pas avec internet explorer :/


Message édité par Limit le 28-08-2004 à 00:41:09
Reply

Marsh Posté le 27-08-2004 à 20:46:22    

sur www.phphdebutant.org il me semble qu'il te file la liste des paramètres qui peux poser pb avec IE pour les cookies... je ne rapelle plus par coeur mais dans ton cas il me semble que c'est le domaine...
 
Vire ton dernier paramètre et vois ce que ça donne

Code :
  1. setcookie("$nom", "$value", $expire, "/" );

Reply

Marsh Posté le 28-08-2004 à 00:36:51    

Je viens d'essayer et toujours le meme problème :'(
 
Rien sur un problème de frame ici: http://phpdebutant.org/article40.php

Reply

Marsh Posté le 28-08-2004 à 13:53:02    

Ca marche sous Opera, pas sous IE. Poste tes lignes de code setcookie...
 
PS : Par contre sous Opera j'ai des problème pour ajouter une balise G I S... mais bizarement pas avec les fonts & smileys.

Reply

Marsh Posté le 28-08-2004 à 16:27:04    

comme indiqué au dessus c'est un bête  
setcookie("$nom", "$value", $expire); que j'ai mis.

Reply

Marsh Posté le 29-08-2004 à 11:47:42    

$expire vaut quoi ?

Reply

Marsh Posté le 29-08-2004 à 11:53:41    

Il faut préciser qu'il ne faut pas de sortie html avant un setcookie
aussi, vu que ton forum est d'aceboard, faut peut etre spécifier aceboard.net en tant que domaine


Message édité par Profil supprimé le 29-08-2004 à 11:55:37
Reply

Marsh Posté le 29-08-2004 à 12:36:33    

Xam_Orpheus a écrit :

$expire vaut quoi ?

time()+365*...;  
Ca marche sans frame ;)

Reply

Marsh Posté le 29-08-2004 à 12:37:04    

spike a écrit :

Il faut préciser qu'il ne faut pas de sortie html avant un setcookie
aussi, vu que ton forum est d'aceboard, faut peut etre spécifier aceboard.net en tant que domaine

Il n'y a pas pas de problème de html vu que je fais une bufferisation de sortie.

Reply

Marsh Posté le 29-08-2004 à 12:37:04   

Reply

Marsh Posté le 12-09-2004 à 00:38:12    

Bonsoir,
 
Il y a deux règles pour les cookies :
 
- La fct "setcooki()" doit être appélée avant d'envoyer le header de la page.
 
- Seul les deux premier parametre sont indispensables.
 
$cookie_name = "prenom";
$cookie_var = "julie";
$expire = time()+3600*24*30; // Cookie de 30 jours
 
setcookie ($cookie_name, $cookie_var, $expire);

 
(si on ne met pas le param "expire", il détruit le cookie par défaut dès qu'on ferme le browser).
 
Moi j'utilise ça sur IE 6 et ca marche très bien.
 
....
 
Jusqu'à ce que...
 
J'ai rajouté un 'include ("compteur_user.php" );' en debut de page et depuis il me dit ke mon cookie ne peut pas etre écrit parce qu'un header
à déjà été envoyé avec le fichier "compteur_user.php", or dedans il n'y a que des variables et quelques fonction.., mais aucun affichage.
Je ne comprend pas.  
 
Contenu du fichier "compteur_user.php":
 
<?
require("conf.php" );
 
function get_ip()
{
    if($_SERVER)
    {
        if($_SERVER['HTTP_X_FORWARDED_FOR'])
            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        elseif($_SERVER['HTTP_CLIENT_IP'])
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        else
            $ip = $_SERVER['REMOTE_ADDR'];
    }
    else
    {
        if(getenv('HTTP_X_FORWARDED_FOR'))
            $ip = getenv('HTTP_X_FORWARDED_FOR');
        elseif(getenv('HTTP_CLIENT_IP'))
            $ip = getenv('HTTP_CLIENT_IP');
        else
            $ip = getenv( 'REMOTE_ADDR');
    }
    return $ip;
}
 
 
$client_id = get_ip();
$client_delay = 300;
$time = time();
mysql_select_db($sql_bdd, mysql_connect($sql_serveur, $sql_user, $sql_passwd));
 
if(!mysql_query("DELETE FROM clients WHERE client_time_request < $time - $client_delay" ))
 
// En cas d'échec, crée la table
mysql_query("CREATE table clients(client_id VARCHAR(64) NOT NULL, client_location VARCHAR(128) NOT NULL, client_time_request INT NOT NULL)" );
 
mysql_query("INSERT INTO clients VALUES('$client_id', '$REQUEST_URI', '$time')" );
 
$current_num_clients = mysql_num_rows(mysql_query("SELECT DISTINCT client_id FROM clients WHERE client_location = '$REQUEST_URI'" ));
$global_num_clients = mysql_num_rows(mysql_query("SELECT DISTINCT client_id FROM clients" ));
mysql_close();
 
?>  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed