giangcui Posté 20 Avril 2004 Posté 20 Avril 2004 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
Dan Posté 20 Avril 2004 Posté 20 Avril 2004 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: RewriteRule fichier.html fichier.php [QSA,L] Dan
giangcui Posté 23 Avril 2004 Auteur Posté 23 Avril 2004 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!
Dan Posté 23 Avril 2004 Posté 23 Avril 2004 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(); }
giangcui Posté 3 Mai 2004 Auteur Posté 3 Mai 2004 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).
Dan Posté 4 Mai 2004 Posté 4 Mai 2004 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
giangcui Posté 4 Mai 2004 Auteur Posté 4 Mai 2004 (modifié) 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! Modifié 4 Mai 2004 par giangcui
Dan Posté 4 Mai 2004 Posté 4 Mai 2004 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.comRewriteRule (.*) 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!"
giangcui Posté 4 Mai 2004 Auteur Posté 4 Mai 2004 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!
Dan Posté 4 Mai 2004 Posté 4 Mai 2004 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
giangcui Posté 5 Mai 2004 Auteur Posté 5 Mai 2004 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_
Dan Posté 5 Mai 2004 Posté 5 Mai 2004 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
giangcui Posté 5 Mai 2004 Auteur Posté 5 Mai 2004 (modifié) Le code de la fiche config.php ne contient pas un echo pour ouverture de session et ni caracter "espace" (selement 28 ligne). Supprime' Modifié 6 Mai 2004 par giangcui
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant