[ASP] Lecture d'un fichier texte

Résolu
Signaler
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008
-
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008
-
Bonjour tout le monde,

Voila j'ai un soucis assez simple : dans un script que j'ai réalisé en ASP, j'ai soucis concernant la lecture d'un fichier texte (et même p'tete lors de la définition du chemin :s)

Mon fichier texte se compose ainsi

login1 passw1
login2 passw2
.... vous avez compris chaque est composée de 6 caractères, un espace, 6 caractères et un retour charriot.

Le soucis c'est que j'utilise inF.Read, mais je suis pas du tout sûr que ça fonctionne comme je le pense. Pour preuve, j'ai réalisé le même script en C (langage que je connais/maîtrise beaucoup mieux), et celui-ci fonctionne.

Si quelqu'un pouvait donc m'aider, voici mon script ASP:

<%
'Vérification des logs dans un fichier !

'On commence par récupérer ce qui a été tapé !
login_user=Request.Form("login")
passwd_user=Request.Form("passwd")

'Et ceux qui vont accueillir les log du fichier
dim taille : taille=6
dim login : redim login(taille)
dim passwd : redim passwd(taille)
dim poubelle : redim poubelle(taille)
login=""
passwd=""

'Petite variable qui permet de sortir de la boucle quand authentifié
dim a : a=0

'On récupère le chemin absolu du fichier dans l'arborescence du serveur
Set FSO=Server.CreateObject("Scripting.FileSystemObject")
mon_fich="\log.txt"
repertoire="/admin/"
chemin_fichier=Server.MapPath(repertoire & nom_fich) 'le chemin du fichier depuis la racine

'On teste si le fichier existe ou non
if FSO.FileExists(chemin_fichier) then
'On commence le traitement
'En ouvrant le fichier
set inF=FSO.OpenTextFile(chemin_fichier, 1, false)

'On lit toutes les lignes tant qu'on a pas tout lu, ou tant que a est différent de 1
While not inF.atEndOfStream or a<>1

login=inF.Read(6) 'Les logins présent dans le fichier
poubelle=inF.Read(1) 'L'espace
passwd=inF.Read(6) 'Les password présents dans le fichier
poubelle=inF.Read(1) 'Le retour chariot
'Et on teste si c'est correct ou pas
if login_user=login and passwd_user=passwd then
rep="OK"
a=1
else 'Ca correspond pas, on met la variable rep à ERREUR, au cas où c'est le dernier tour de boucle
rep="ERREUR"
end if 'On remonte dans la boucle, et on lit la ligne suivante voir si ce coup-ci c'est bon

Wend 'On a lu tout le fichier
'On renvoi donc la variable pour le suite du traitement
Response.Write("rep="&rep)
inF.close
else 'Le fichier n'existe pas
Response.Write("Authentification impossible, veuillez contacter votre Administrateur pour plus d'informations")
end if
%>

Merci par avance

18 réponses

Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

voila un exemple concret

le xml

<?xml version="1.0" encoding="utf-8" ?>

 
    <login>gilles</login>
    test

 
 
    <login>tom</login>
    test2

 

le code

            XmlTextReader reader = new XmlTextReader("users.xml");
            XmlDocument doc = new XmlDocument();

            doc.Load(reader);
            reader.Close();

            XmlNode myUser;
            XmlElement root = doc.DocumentElement;
            myUser = root.SelectSingleNode("/users/user[login='" + "gilles" + "'][password='" + "test" + "']");

si myUser est null, ca veut dire que la correspondance login password n'est pas bonne

si tu fais donc

myUser = root.SelectSingleNode("/users/user[login='" + "gilles" + "'][password='" + "test123" + "']");

myUser sera null

voilà

gl
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

c'est pas super propre ...

pq pas utiliser un xml pour storer les credentials, c'est bcp plus simple à parcourir.
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

genre
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

Désolé pour la propreté, comme je disais l'ASP ya encore 1 semaine j'avais jamais entendu :s, donc je débute navré :(

Par contre ton histoire de XML heu, c'est un autre fichier en fait, c'est ça ? Désolé je ne connais pas non plus
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

oui

c'est comme un fichier texte mais structuré d'une certaine manière et qui peut être utilisé comme une petite base de données

ce sera bcp plus facile pour toi de faire des requetes dessus

parce que tu feras un truc du genre

dans tous les users , prendre celui qui a le nom users1, et comparer son password ac celui entré par le user
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

Donc je change le contenu de mon fichier log.txt pour ceci admettons






Dans mon ASP va certainement falloir que je change quelque chose non ?
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

oui évidemment

tu dois changer la partie pour aller chercher le password d'un user
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

juste une question

pourquoi de l'asp ? et pas de l'asp.net ?
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

Bah l'admin de la boîte m'a dit que le serveur tournait sous ASP, point barre. ASP.net ya de grosses différences ?

Sinon oui je me doutais un peu que j'allais devoir changer cela, mais comment on parcourt un fichier xml ? Et puis déjà comment on créer un fichier xml ? j'ai beau être en train de lire http://xml.developpez.com/cours/ ça à l'air d'être le gros bazard :( c'est même flou en fait
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

D'ailleurs l'admin il ne connaît pas ASP.net apparemment ... enfin comme je demandais ya de grosses différences ?
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

asp.net c'est l'évolution de asp

tu peux un peu regarder sur le net, ca vaut la peine. ASP est vieux, il vaut mieux pas utiliser cette techno pour des nouveaux devs.

ton admin veut pê dire par asp -> asp.net

tu dois regarder ce que tu as comme framework d'installer dessus !

pour creer un xml c'est tout bête

<?xmlversion="1.0"encoding="UTF-8"?>
   

          

          

  

et tu l'enregistre en nomdefichier.xml
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

:o J'viens de lire le tuto du site du zéro http://www.siteduzero.com/tuto-3-2882-1-le-point-sur-xml.html à propos de xml, bon c'est un peu plus clair désormais. Néanmoins j'ai pas du tout saisie comment utiliser ce genre de fichier. Pour que mon script ASP (ou ASP.net alors, j'en sais rien -_-) récupère des infos de mon fichier xml, comment je dois procéder ? Dans le totoriel il parle de DOM pour gérer les données, mais si j'ai bien compris c'est pour gérer un fichier xml depuis un fichier xml, donc pas bon...
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

en gros

toi ton fichier, tu vas le crééer à la main

user.xml

ac le code que j'ai mis au dessus

et ensuite toi tu vas lire le xml dans ton asp

tu peux regarder ici , un peu de code

http://www.4guysfromrolla.com/webtech/101200-1.shtml
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

Ok merci pour le liens, après une tite lecture j'ai donc créé un document pour récupérer les données xml qui m'intéressent, mais c'est là le soucis, comment faire pour les récupérées et les traitées ??
Faudrait faire un truc du genre

Dim mydoc
Set mydoc=Server.CreateObject("Microsoft.XMLDOM")

Dim a
a=0

login_user=Request.Form("login")
passwd-user=Request.Form("passwd)

for cpt=0 to nb_lignes or a<>1 avec nb_lignes nombre de ligne du type


if login_user=mydoc.name and passwd_user=mydoc.password then
rep="OK"
a=1
else
rep="ERREUR"
end if
next
Response.Write("rep="&rep)

A la base tu l'as compris le for permet de faire défiler les différentes lignes, mais là je vois pas comment le faire. D'autant que mydoc.login est surrement faux :s
Si tu pouvais m'éclairer, merci d'avance
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

non c'est pas du tout ca

je t'exlpique

tu dois créer un object xml lui donné un fichier à ouvrir

et ensuite tu parcours le xml ac des functions propre à l 'exploration d 'un xml

docn en gros

set objXml = createobject("msxml2.DOMdocument")

objXml.loadXML(tonfichierxml)

et ensuite

tu peux faire des choses genre

 Set objMessage = objXml.selectSingleNode("//users")

// disant qu'il cherche à partir de la racine
/ disant qu'il cherche à partir de la position actuelle dans le dom xml
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

Oula ouais ok... j'étais vraiment à côté de la plaque... :(

Set objMessage = objXml.selectSingleNode("//users")

objMessage va avoir pour valeur la valeur du name du 1er user c'est ça ?





Dans cet exemple objMessage il vaudra donc user1 ?
Et comment faire pour récupérer blabla ? et user2 ?

Merci pour tes réponses en tout cas :)
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

Je sais toujours pas comment ça marche :(
Messages postés
32
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

Ok merci :)

Par contre tite question par rapport au typage des variables en ASP que j'ai pas compris :
Je déclare 3 tableaux comme ceci

dim taille : taille=15
dim tab : redim tab(taille)

login=tab
passwd=tab


Et à l'execution, ça me sort ça

Microsoft VBScript runtime error '800a000d'

Type mismatch

Normal ??