[Socket] recuperation d'information [Résolu]

Messages postés
16
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
22 janvier 2008
- - Dernière réponse : laxpo
Messages postés
2
Date d'inscription
mercredi 18 août 2010
Statut
Membre
Dernière intervention
18 août 2010
- 18 août 2010 à 03:04
Bien le bonjour/soir,

Ma requête concerne comme cité au-dessus la recherche d'information precise dans un document html/xhtml.

Mon maigre niveau de connaissance dans l'histoire du socket ne me permet que de récupéré la page en question, mes lacunes son au fait que je ne sache pas comment extraire de ce document uniquement ce qui m'intéresse.

En ayant explorer plusieurs source j'ai trouver (je suppose) qu'il faut utiliser la fonction $remove()

je poste la page en question, les informations que je veut récupéré sont celle-ci :
- X joueur connectés
- X GM connextée
- total X comptes sur le serveur
- total X personnages sur le serveur
- total X GM sur le serveur



Informations sur le serveur

Bakacraft Status est En ligne

[index.php?module= connectes Il y a 28 joueurs de connectés]
Il y a 2 GM de connectés
Il y au total 15580 comptes sur le serveur
Il y au total 14191 personnages sur le serveur
Il y au total 67 GM sur le serveur

Heure du serveur
19:58:17 21-janvier-2008

Serveur en ligne depuis :
00h20m01s



La page complette


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Bienvenue sur Bakacraft</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="http://www.lootup.com/inc/popup.js" type="text/javascript"></script>
<script src="scripts/sorttable.js"></script>
<link rel="stylesheet" type="text/css" href="http://www.lootup.com/styles/default.css" />
<link rel="stylesheet" href="style/ff.css" type="text/css" />
<!--[if lt IE 7]>
<link rel="stylesheet" href="style/ie6.css" type="text/css" />
<script src="scripts/menu.js" type="text/javascript"></script>
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" href="style/ie7.css" type="text/css" />
<![endif]-->
<link rel="SHORTCUT ICON" href="images/icon/wow.ico" />
<link rel="stylesheet" href="style/menu.css" type="text/css" />
</head>



<center></center>



<comment>

</comment>
<!--[if IE 7]>

<![endif]-->





Bienvenue sur Bakacraft


























<li>[index.php Accueil]</li>
<li>[ Interactif]

<li>[index.php?module=armurerie L'armurerie]</li>
<li>[index.php?module=vente L'hôtel des ventes]</li>
<li>[index.php?module=gamers Les persos du serveur]</li>
<li>[index.php?module=info Information sur le serveur]</li>
<li>[map/map.php La carte des joueurs]</li>
<li>[index.php?module=connectes Les joueurs connectés]</li>
<li>[index.php?module=honneur Les points d'honneur]</li>
<li>[index.php?module=skill Talents des personnages]</li>
<li>[index.php?module=guildes Les guildes du serveur]</li>
<li>[index.php?module=teamspeak Notre serveur teamspeak]</li>

</li>
<li>[ Communauté]

<li>[ Forum]</li>

</li>
<li>[ Compte]

<li>[index.php?module=compte Créer un compte]</li>

</li>











































Informations sur le serveur

Bakacraft Status est En ligne

[index.php?module =connectes Il y a 28 joueurs de connectés]
Il y a 2 GM de connectés
Il y au total 15580 comptes sur le serveur
Il y au total 14191 personnages sur le serveur
Il y au total 67 GM sur le serveur

Heure du serveur
19:58:17 21-janvier-2008

Serveur en ligne depuis :
00h20m01s





























Warning: require(footer.php) [function.require]: failed to open stream: No such file or directory in C:\wamp\www\test\index.php on line 80



Fatal error: require() [function.require]: Failed opening required 'footer.php' (include_path='.;C:\php5\pear') in C:\wamp\www\test\index.php on line 80




Merci de votre aide
Afficher la suite 

13 réponses

Meilleure réponse
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
3
Merci
Tu aurais du donner le code que tu as déja actuelement pour qu'on puisse t'aidé..
Ici, un $remove, c'est franchement bourrin, le mieux c'est d'utiliser, sois un alias qui te supprime tout ce qui est contenu entre les balises (trouvable sur scriptsdb.org)  et ensuite d'utiliser les token genre $gettok, sois un $regex :) :

en assumant que tu rempli le buffer avec une %var :

on *:sockread:nom:{
var %s | sockread %s
if ($regex(%s,/il y a (\d+) joueur/) echo -a \1 joueurs
elseif ($regex(%s,/il y a (\d+) GM/) echo -a \1 GM
elseif ($regex(%s,/il y au total (\d+) comptes/) echo -a \1 comptes total
elseif ($regex(%s,/il y au total (\d+) personnages/) echo -a \1 personnages total
elseif ($regex(%s,/il y au total (\d+) GM/) echo -a \1 GM total
}

ça devrait fonctionner :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 219 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_wims
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
1
3
Merci
Son code capture déjà ce qu'il faut, rendant inutiles les aliases que tu cites...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 219 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_PaDa
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
1
3
Merci
Il suffit de regarder la ligne 11
if ($regex(%s,/il y a (\d+) joueur/) echo -a \1 joueurs

Et de compter attentivement les parenthèses ...

:-)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 219 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_PaDa
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
1
3
Merci
Aucun souci ;)
Ton quote me parait correct à première vue (sans avoir testé donc), peut-être que mIRC gauffre à cause de la parenthèse qui suit "personnages total". Mais là on entre dans le côté sombre du parsing mIRC comme disait sax :-)
Bon courage !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 219 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_PaDa
Messages postés
16
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
22 janvier 2008
0
Merci
oui pardon j'ai oublier de montré le début du code :


alias ssu {
sockclose ssu
sockopen ssu 82.243.193.106 60
}

on *:sockopen:ssu:{
sockwrite -n ssu GET http://82.243.193.106:60/test/index.php?module=info
}



Si je suis ce que tu a écrit cela devrai donner :



alias ssu {
sockclose ssu
sockopen ssu 82.243.193.106 60
}

on *:sockopen:ssu:{
sockwrite -n ssu GET http://82.243.193.106:60/test/index.php?module=info
}
on *:sockread:ssu:{
var %s | sockread %s
if ($regex(%s,/il y a (\d+) joueur/) echo -a \1 joueurs
elseif ($regex(%s,/il y a (\d+) GM/) echo -a \1 GM
elseif ($regex(%s,/il y au total (\d+) comptes/) echo -a \1 comptes total
elseif ($regex(%s,/il y au total (\d+) personnages/) echo -a \1 personnages total
elseif ($regex(%s,/il y au total (\d+) GM/) echo -a \1 GM total
}


ici j'obtien une erreur


* /if: format erroné (ligne 11, script.mrc)
Commenter la réponse de UnderCore
Messages postés
16
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
22 janvier 2008
0
Merci
Ah manque l'alias j'ai est trouver deux qui paraissent intéressent

le 1er

alias rembalise {
var %a, %tmp = $regsub($$1-,/(<.+>)/Ug,$null,%a)
if (!$prop) return %a
if ($prop == num) return %tmp
}


et le 2nd

alias regb {
; Si un paramêtre est manquant
if !$2 { halt }
; Savoir s'il y a du texte entre les-dites balises...
var %a = $regex($1,/< $+ $2 $+ >([^*]+)/i))
; Si l'on veut connaître le texte qui il y a entre les-dites balises...
if $prop text { var %a $regml(%a) }
; Retour du texte...
return %a }


comment je les places dans ton code?
Commenter la réponse de UnderCore
Messages postés
16
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
22 janvier 2008
0
Merci
oui c'est vrai j'ai remarquer cela plus tard dans la soiré, mais ceci n'explique pas :


* /if: format erroné (ligne 11, script.mrc)
Commenter la réponse de UnderCore
Messages postés
16
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
22 janvier 2008
0
Merci
oui j'ai remarquer qu'un parenthèse était manquante, j'ai essayer de la mètre a la fin.


var %s | sockread %s
if ($regex(%s,/il y a (\d+) joueur/)) echo -a \1 joueurs
elseif ($regex(%s,/il y a (\d+) GM/)) echo -a \1 GM
elseif ($regex(%s,/il y au total (\d+) comptes/)) echo -a \1 comptes total
elseif ($regex(%s,/il y au total (\d+) personnages/)) echo -a \1 personnages total )
elseif ($regex(%s,/il y au total (\d+) GM/)) echo -a \1 GM total



cela ne fonctionne pas, j'ai bien essayer ailleurs. Je ne connaissais pas la fonction $regex avent hier soir
Commenter la réponse de UnderCore
Messages postés
16
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
22 janvier 2008
0
Merci
Bien merci a vous deux pour votre aides en fait le code de Wims étrangement ne fonctionnai pas je me suis donc servi de son début de code avec ce que j'ai pu trouver sur le net.

Apres mes modification cela donne :


on *:sockread:ssu:{
var %s | sockread %s
if ($regex(%s,/Il y a (\d+) joueurs/i)) { set %jonline $regml(1) }
if ($regex(%s,/Il y a (\d+) GM/i)) { set %gmonline $regml(1) }
if ($regex(%s,/Il y a au total (\d+) comptes/i)) { set %comptetotal $regml(1) }
if ($regex(%s,/il y a au total (\d+) personnages/i)) { set %joueurtotal $regml(1) }
if ($regex(%s,/(\d+)h(\d+)m(\d+)s/)) { set %servup $regml(1) | set %servup1 $regml(2) | set %servup2 $regml(3) }
}


Bon évidement ce n'est pas parfait mais ça ma permis de remarquer que si la page contient un espace en trop le $regex ne fonctionne plus ( a mon point de vu d'amateur) et donc de corriger cette espace après quoi le code cité ci dessus fonctionne très bien pour son utilisation


Merci encore a vous
Commenter la réponse de UnderCore
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
0
Merci
Le regex choper ce que tu lui dis de chopper donc c'est normal (pour l'espace).
Et pour expliquer le pourquoi du comment, si tu regardes ton premier post, on remarque des fautes dans la page elle même (plusieurs "il y au total" au lieu de "il y a au total") donc moi j'ai fait le regex en fonction des fautes, hormis les parenthèses de fin manquante,mon code étais juste je pense.
Si on regarde le nouveau code que tu donnes étant juste, tu as a corrigé la fautes dans le code, donc je suppose que dans la page elle même aussi...
A ce sujet, je sais pas si c'est un cas possible mais si tu n'as qu'un joueur et si la page renvoi "1 joueur" ton regex ne marchera plus car tu demandes de choppé "joueurs", cela est valable pour chaque infos que tu veux récupéré ^^
Commenter la réponse de cs_wims
Messages postés
16
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
22 janvier 2008
0
Merci
pour le moment de 0 à 82 pas d'erreur on ne va pas s'en plaindre, merci pour tes lumière ça m'a vraiment aider
Commenter la réponse de UnderCore
Messages postés
2
Date d'inscription
mercredi 18 août 2010
Statut
Membre
Dernière intervention
18 août 2010
0
Merci
bonjour je susi nouveau
j'ai un lv 39 s5 rolreia .je dit mon problème un joueur vien de me passer lfr+9 il a fait accepter et moij'ai fait pas mais lfr avec moi et autre joueur ma dit qu'il est un hackeur alo je deco pour me faire pas hacker et je con au ch4 j'etait en ch1 et il ma dit donne moi lfr ou je dit GM alor je deco encor j'ai changée mot de passe pour sécurité et quand je passe 2minute je veu con a mein2.fr me dit passe incorrecte et quand je veux avoir mot de passe par msn me dit ce compte et désactivé??
alor stp je veux rendre j'ai perdu un perso lv 45 et mnt je veu pas perdre ce compte stp du l'aide vite urgent je t'attend votre repponse stp..
Commenter la réponse de laxpo
Messages postés
2
Date d'inscription
mercredi 18 août 2010
Statut
Membre
Dernière intervention
18 août 2010
0
Merci
c'est uregent ça j'ai perdu mnt 18/08/2010 stp je veux rendre
Commenter la réponse de laxpo