Webmaster Hub: URL Rewriting - faute ==> Cookie issue - header=.. - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

URL Rewriting - faute ==> Cookie issue - header=.. Bug de Rewriting URL and Cookie Noter : -----

#1 L'utilisateur est hors-ligne   giangcui 

  • Groupe : Membre
  • Messages : 26
  • Inscrit(e) : 20-avril 04
  • Localisation:http://top.com.vn
  • Société:Wedo,.jsc

Posté 20 avril 2004 - 16:00

J'ai réecrit URL. Ça marche. Mais au premier d'entre, il y a un cookie header=kh4kéh4é34é3é3 (changer chaque fois de l'entre) apres les address

Par Ex: www.monweb.com/monaddress.htmlheader=43854jfsdjhfg34534.

Mais si vous cliquez sur un address (un url ). Le cookie (header=...) est disparu.

Aide-moi. Qu'est ce que je dois faire pour éviter ce cookie.

URL ==> http://www.wedonow.com/news/

Je pense que c'est la faute de session dans le fiche session.php
Code de fiche session.php
<?php 
$nowtime = time(); 
$time_update = $nowtime - 1800; 
session_name("sid"); 
session_name("header"); 
session_start(); 
if ( !isset($_SESSION["login"]) ) 
{ 
session_name("sid"); 

session_register("login"); 
session_register("user_id"); 
session_register("name"); 
session_register("email"); 
session_register("timezone"); 
session_register("start_time"); 
session_register("poll_time"); 
session_register("header"); 

$_SESSION["login"] = "not_login"; 
$_SESSION["user_id"] = -1; 
$_SESSION["name"] = ""; 
$_SESSION["email"] = ""; 
$_SESSION["timezone"] = "+7"; 
$_SESSION["start_time"] = $nowtime - 1300; 
$_SESSION["poll_time"] = $nowtime - 3700; 
$_SESSION["header"] = -1;; 
} 

if ($_SESSION["start_time"]<$time_update) 
{ 
$_SESSION["start_time"] = $nowtime; 

$sess_id = session_id(); 
$prevtime = $nowtime - 1800; 

$dbsql = new db_mysql; 
$dbsql->connect(); 
$dbsql->selectdb(); 
//----------------------------------------------------- 
$sql_delete = "DELETE FROM sessions WHERE start_time<".$prevtime; 
$dbsql->query($sql_delete); 

$sql_select = "SELECT * FROM sessions WHERE session_id='".$sess_id."'"; 
$dbsql->query($sql_select); 
if ($dbsql->num_rows()==0) 
{ 
$sql_insert = "INSERT INTO sessions(session_id,start_time) VALUES('".$sess_id."',".$nowtime.")"; 
$dbsql->query($sql_insert); 
} 
//----------------------------------------------------- 
$dbsql->close(); 
} 

$user_id = isset($_SESSION["user_id"]) ? intval($_SESSION["user_id"]) : -1; 
$user_name = isset($_SESSION["name"]) ? $_SESSION["name"] : ""; 
$user_email = isset($_SESSION["email"]) ? $_SESSION["email"] : ""; 
$timezone = isset($_SESSION["timezone"])? $_SESSION["timezone"]: "+7"; 
$header = isset($_SESSION["header"]) ? $_SESSION["header"] : "-1"; 
?>

Merci d'avant
0

#2 L'utilisateur est hors-ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 945
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 20 avril 2004 - 18:10

giangcui, bonjour et bienvenue à bord du Hub !

Les sessions sont probablement inévitables pour le bon fonctionnement de ton site. Vu la langue de celui-ci, je n'y ai pas traîné longtemps ;)

Si tu fais de la réécriture, tu peux rajouter le flag QSA en fin de règle pour que la variable de session soit rajoutée si nécessaire.

Exemple:

Citation

RewriteRule fichier.html  fichier.php [QSA,L]

Dan
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#3 L'utilisateur est hors-ligne   giangcui 

  • Groupe : Membre
  • Messages : 26
  • Inscrit(e) : 20-avril 04
  • Localisation:http://top.com.vn
  • Société:Wedo,.jsc

  Posté 23 avril 2004 - 08:35

Merci votre répond.

Mais j'ai déjà changé
RewriteRule fichier.html fichier.php ==> RewriteRule fichier.html fichier.php [QSA,L]

et même
RewriteRule /fichier.html /fichier.php => RewriteRule /fichier.html /fichier.php [QSA,L]

Mais il y a eucore cookie header=fdkgh354fhj3f4jhfd3h apère les URL

Et allor, qu'est ce que je dois faire pour supprimer le cookie header=.... au premier d'entre? Maintenant c'est pas bon, les search engine va trouver les address avec cookie???

Aide les gens génie! :whistling:
0

#4 L'utilisateur est hors-ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 945
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 23 avril 2004 - 08:43

Les sessions sont inévitables, mais probablement pas nécessaires pour tout le monde.

Une manière d'éviter les problèmes d'indexation est de ne pas activer les sessions en cas de visite de robot.

Par exemple:
// Spider/Bot pour référencement 

$spiders = array("Googlebot",  "crawler", "Slurp", "Fast","ia_archiver","Scooter","Robot",
"VoilaBot","W3C","ZyBorg","D*****","xecho"); 
$from_spider = false; 
foreach($spiders as $Val) { 
      if (eregi($Val, $_SERVER["HTTP_USER_AGENT"])) {  
            $from_spider = true;
             break; 
      } 
}

ini_set("session.use_trans_sid", "0");
if(!$from_spider) {
// ici le code de démarrage de sessions....
      session_start();  
}

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#5 L'utilisateur est hors-ligne   giangcui 

  • Groupe : Membre
  • Messages : 26
  • Inscrit(e) : 20-avril 04
  • Localisation:http://top.com.vn
  • Société:Wedo,.jsc

Posté 03 mai 2004 - 20:21

Bonjour,
J'ai déjà fixer cet faute par changer l'order des inslude file. Je laisse le code ob_start(); au debout. Donc. il marche.

Mais un grand problème, Avec les URL j'ai essayer. http://www.wedocoder.com/news/ or http://www.thuonghieuvn.com/new/ il marche bien. Mais à website pricipale http://www.wedo.com.vn (or www.wedonow.com ) il ne marche pas. Il change le cookie header=sgfg38gf4538... par PHPSESSID=d7b1259df....

Donc aidez_moi. Quelles sont les problème ici.

Merci d'avant.
(j'ai essayé avec le code ini_set("session.use_trans_sid", "0"); mais il y a encore le cookie).
0

#6 L'utilisateur est hors-ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 945
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 04 mai 2004 - 07:28

Bonjour Giangcui,

L'identifiant de session est rajouté par php sur la première page vue, pour toutes les URL non absolues.
C'est pour cette raison qu'on voit cet identifiant lors d'un clic sur un de ces liens.
Pour l'éviter, passes toutes tes URLs en absolu (avec http://....)

Dan
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#7 L'utilisateur est hors-ligne   giangcui 

  • Groupe : Membre
  • Messages : 26
  • Inscrit(e) : 20-avril 04
  • Localisation:http://top.com.vn
  • Société:Wedo,.jsc

Posté 04 mai 2004 - 10:54

Bonjour Dan,
Tu es vraiment Administrateur. Tous sont comme tu a dit.

je change to URLs en absolu dang le replace_for_mod_rewrite avec http://.... et il fonctionne bien.
Mais je utilise é domain pour ce website. Et je sais pas comment faire pour creer URLs en absolu qui dépend le domain qu'on entre mon website. Par exempl: Si on entre par www.wedonow.com donc dans les URLs dans la function replace_for_mod_rewrite est changer vers http://wedonow.com et on entre par www.wedo.com.vn les URLs dans replace_for_mod_rewrite est changer vers http://wedo.com.vn.

Merci bc,
http://www.webmaster-hub.com - Number one!

Ce message a été modifié par giangcui - 04 mai 2004 - 10:54.

0

#8 L'utilisateur est hors-ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 945
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 04 mai 2004 - 14:08

Hi Gianqcui,

Je continue en Français mais si tu ne comprends pas tout envoies moi un MP et je te donnerai l'explication en Anglais...
(if you don't understand the following, drop me a private message and I'll switch to english)

Pour faire une réécriture d'URL dépendant du nom de domaine , c'est simple.. il suffit d'utiliser les réécritures conditionnelles.

RewriteCond %{HTTP_HOST} www.wedo.com.vn 
RewriteRule  (.*) http://wedo.com.vn$1 [R=301,L]

RewriteCond %{HTTP_HOST} www.wedonow.com
RewriteRule  (.*) http://wedonow.com$1 [R=301,L]

RewriteRule ....

Ceci force tout le trafic de www.wedo.com.vn vers wedo.com.vn, en retournant une entête 301 (Moved permanently) qui forcera les moteurs à mettre les liens à jour. Idem pour www.wedonow.com, redirigé sur wedonow.com

Assures-toi d'avoir une ligne vide entre chaque condition.

Dan

PS: thanks for the "number one!" ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#9 L'utilisateur est hors-ligne   giangcui 

  • Groupe : Membre
  • Messages : 26
  • Inscrit(e) : 20-avril 04
  • Localisation:http://top.com.vn
  • Société:Wedo,.jsc

Posté 04 mai 2004 - 14:23

Hello,
j'ai deja ecrire le code RewriteCond et RewriteRule dans le fiche .htaccess.
Mais je veux changer dans le function replace_for_mod_rewrite:
Par Ex:

<?php
ob_start();
function replace_for_mod_rewrite(&$s) {
$urlin = array(
"'(?<!/)index.php\?act=view&code=par&pid=1'",
"'(?<!/)index.php\?act=wedo'"
);
$urlout = array(
"DOMAIN_ENTRER/tuvan.html",
"DOMAIN_ENTRER/wedo.html"
);
$s = preg_replace($urlin, $urlout, $s);
return $s;
}
?>

Ici, domain_entrer sont www.wedonow.com ou www.wedo.com.vn

Merci! :shake:
:shake: :shake:
0

#10 L'utilisateur est hors-ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 945
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 04 mai 2004 - 15:07

Giangcui,

Je n'avais pas vu ces RewriteCond dans le fichier .htaccess comme j'avais édité ton post original :(

Dans un programme php, la variable $server['HTTP_HOST'] contient le nom du host demandé. Il suffit sonc de faire un test sur celui-ci.

Pour enlever le "www." , il suffit de mettre une ligne telle que:
$domain=ereg_replace("www.","",$server['HTTP_HOST']
 );

et ensuite utiliser $domain, éventuellement précédé de "http://" dans le reste du code.

Dan
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#11 L'utilisateur est hors-ligne   giangcui 

  • Groupe : Membre
  • Messages : 26
  • Inscrit(e) : 20-avril 04
  • Localisation:http://top.com.vn
  • Société:Wedo,.jsc

Posté 05 mai 2004 - 11:05

Merci,
J'ai trouvé cette variable $server['HTTP_HOST'].
Mais quand les URL marchent bien, je ne peut pas entrer dans la zone de administrater. Quand je login (connecte) dans la zone de l'administrater. Il est toujours annoncé

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/wedo/public_html/config.php:30) in /home/wedo/public_html/includes/sessions.php on line 6

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/wedo/public_html/config.php:30) in /home/wedo/public_html/includes/sessions.php on line 6

Et il s'arrete. Je peux pas entrer.
Le code de la fiche session.php comme le premier post.

Giangcui_AT_
0

#12 L'utilisateur est hors-ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 945
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 05 mai 2004 - 11:11

Bonjour,

Dans le fichier /home/wedo/public_html/config.php, tu dois avoir uen echo ou un print avant l'ouverture de session, ce qui empêche l'envoi des entêtes. Regardes vers la ligne 30, ca peut être même un caractère "espace" qui échappe à l'examen.

Dan
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#13 L'utilisateur est hors-ligne   giangcui 

  • Groupe : Membre
  • Messages : 26
  • Inscrit(e) : 20-avril 04
  • Localisation:http://top.com.vn
  • Société:Wedo,.jsc

Posté 05 mai 2004 - 20:43

Le code de la fiche config.php ne contient pas un echo pour ouverture de session et ni caracter "espace" (selement 28 ligne).
Supprime'

Ce message a été modifié par giangcui - 06 mai 2004 - 14:11.

0

#14 L'utilisateur est hors-ligne   giangcui 

  • Groupe : Membre
  • Messages : 26
  • Inscrit(e) : 20-avril 04
  • Localisation:http://top.com.vn
  • Société:Wedo,.jsc

Posté 06 mai 2004 - 14:10

Merci, j'ai deja fixe'.

Thanks Dan :up:

Giang cui_AT_
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)