comment détruire un cookie ?

Eléphant du PHP | 134 Messages

16 janv. 2007, 17:02

Bonjour,

il y a un site qui n'est pas de moi et sur lequel je ne peux modifier les sources qui créé un cookie.

pour des raisons qui me sont propres et dont je n'aurais aucun intérêt a expliquer, je dois me connecter a se site avec plusieurs nom d'utilisateurs différents.

Pour ce faire j'ai créer une page avec des frames sur mon serveur.

- Dans la première il y a une liste découlante de noms d'utilisateurs et de lieux faisant parti d'un fomulaire.
- Dans la deuxième, le site en question.

Quand je choisie l'utilisateur dans la liste découlante et que je valide mon formulaire, il y a bien une connexion dans la deuxième frame avec les identifiants choisis.

Mais si je veux changer de nom d'utilisateur c'est impossible car il garde le nom d'utilisateur choisi en premier.

En effet, c'est ce nom d'utilisateur qui est dans le cookie que je dois supprimer. Mais comment faire ?

Voici les source du site en question :

Les fonction Javascript :

Code : Tout sélectionner

function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function SaveName() { var username = document.FormDoor.nomUser.value; var largeExpDate = new Date (); largeExpDate.setTime(largeExpDate.getTime() + (365 * 24 * 3600 * 1000)); pathname = location.pathname; myDomain = pathname.substring(0,pathname.lastIndexOf('/')) +'/'; SetCookie('username',username,largeExpDate,myDomain); } function verifierSpecification() { <!-- tous les champs doivent etre remplis--> // champ utilisateur if (document.FormDoor.nomUser.value.length == 0) { alert("La saisie du champ 'Utilisateur' est obligatoire !") document.FormDoor.nomUser.focus() return false } // champ Password if (document.FormDoor.passWord.value.length == 0) { alert("La saisie du champ 'Mot de passe' est obligatoire !") document.FormDoor.passWord.focus() return false } return true; } function mySubmit() { if (verifierSpecification()==true) { SaveName(); document.FormDoor.javaWebStartInstalled.value=javawsInstalled; if (navigator.appName=="Netscape") document.FormDoor.javaWebStartInstalled.value=1; document.FormDoor.actionToDo.value=1; document.FormDoor.submit(); } } function submitFormBottom(){ document.FormBottom.submit() }
Le formulaire de connexion :

Code : Tout sélectionner

<table width="40%" align="center" border=0 cellpadding=5 cellspacing=0 bgcolor="#A0BAF0"> <tr> <td align="left"><b>Utilisateur</b></td> <td align="left"> <input type="text" name="nomUser" size="15" maxlength="20" value="adminALADIN" onKeyPress="isPressToucheEnter (event);" tabindex=3></td> </tr> <tr> <td align="left"><b>Mot de passe</b></td> <td align="left"><input type="password" name="passWord" size="15" maxlength="32" onKeyPress="isPressToucheEnter (event);" tabindex=4></td> </tr> <tr> <td colspan="2" align="center"> <A href="javascript:mySubmit()" onmouseover='message(""); return true' tabindex=5><img src="/portailService/imgs/b_valider_french.gif" border="0"></A> </td> </tr> </table>
Et dans la fin du fichier il y a ceci :

Code : Tout sélectionner

<script language="JavaScript" > var username = GetCookie('username'); if (username != null) { document.FormDoor.nomUser.value=username; document.FormDoor.passWord.focus(); } else document.FormDoor.nomUser.focus(); </script>
Merci d'avance pour votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 janv. 2007, 18:26

Et si tu configurais simplement ton navigateur pour refuser les cookies ? S'il n'est pas utilisé pour autre chose, faut pas se laisser embêter par un biscuit :)

Sinon tu peux tous les supprimer via le navigateur, voire essayer de mettre la main sur le cookie en question dans tes Temporary Internet Files (sous win) et le supprimer à la main ou en automatique
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
AB
ViPHP | 5818 Messages

16 janv. 2007, 18:37

Et si tu configurais simplement ton navigateur pour refuser les cookies ? S'il n'est pas utilisé pour autre chose, faut pas se laisser embêter par un biscuit :)
Dans ce cas ça m'étonnerait qu'il arrive à se connecter...à moins que le script d'authentification soit mal fait :wink:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 janv. 2007, 11:25

Vi c'est sur, mais dans le script qu'il donne, le cookie ne sert visiblement qu'à pré-renseigner le champ login du formulaire... donc s'il n'y a pas d'autre usage que "retient mes infos" par la suite, c'est peut être pas la peine de se prendre la tête a essayer de retrouver le cookie :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

17 janv. 2007, 12:27

Et si tu configurais simplement ton navigateur pour refuser les cookies ?
J'y ai bien pensé mais dès que je refuse les cookies sur FireFox j'ai un problème de connexion car je me suis rendu compte qu'il y avait un deuxième cookie de créé : "JSESSIONID". Et quand je désactive le cookies, j'obtiens le message suivant sur le site:
Error 500--Internal Server Error
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
10.5.1 500 Internal Server Error

The server encountered an unexpected condition which prevented it from fulfilling the request.
Le mieux je pense serait de supprimer les fichiers cookies mais je ne les trouve ni sous IE ni sous FF (enfin sous FF c'est un peu le bordel)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 janv. 2007, 13:17

Dans IE :
- pour le faire manuellement, tu vas dans "Outils > Options internet" et tu as un bouton "Supprimer les cookies".
- pour le faire depuis ton script, tu dois pouvoir trouver les fichiers dans "Documents and Settings\xxx\Local Settings\Temporary Internet Files\"

Tu dois pouvoir les trouver de la même manière avec FF, mais je ne l'ai pas au taf pour vérifier.... :(
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...