Aller directement au contenu | Aller directement au menu principal | Aller directement au menu de la rubrique
Lambo
Changer l'apparence du site

Worms School

Apprenez à compter vos victimes

Accueil > Forum
Imprimer cette page

Le Forum : échange, discussion et bonne humeur

Worms School Forum :p

Pour tous les joueurs de Worms

Nombre total de posts : 60316

Worms School - Autre chose à dire ?

Sujet : Besoin d'un avis d'expert

190 messages
Fermé
Le 24/06/2007 à 17h42
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
Questions paranos,
comment on sait si on s'est fais hacker?
Est-ce que un hackeur peut modifier un script php, est-ce qu'il peut le parasiter?

Parce que j'ai fais nu script il y a deux semaines qui marchait à merveille, je n'y ai pas touché, et maintenant il bug.:-?
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 24/06/2007 à 17h45
  • Pilier de bar
  • Modérateur
avatar de Ultra-Worm
47bis, rue Ste Grenade
Nb Posts : 4361
Un script pour ton site ? Peut-être est-il simplement parasité par un nouveau truc que tu as fait et qu'il a du mal à intégrer dans ses "ordres"...
Une petite bataille vaut mieux qu'un long discours.
Le 24/06/2007 à 18h57
  • Administrateur
avatar de Lambo
Quelquepart en France
Nb Posts : 5026
Un hackeur peut potentiellement modifier des scripts. Mais la plupart du temps il aura à coeur de montrer qu'il est passé par là. Il laissera donc une trace visible de son passage. Si un de tes scripts ne fonctionne plus correctement, cherche plutôt du côté d'un autre truc que tu aurais pu faire et qui pourrait interagir avec le premier.
Goodbye crual world, it's over
Walk on by
Waiting for the Worms to come
Le 25/06/2007 à 12h49
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
ok, ça me rassure;
En plus c'est pas la première fois que ça me le fait.
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 25/06/2007 à 22h08
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
Pfff, j'arrive pas à corriger ce bug.
le problème est que j'ai une requête SQL qui dépend du valeur changeante, que je met dans un tableau.

ex: "SELECT * FROM data WHERE id="$id"".

Ensuite je créé une boucle pour trier tout ça, et mettre dans le tableau.

ex: while($tri_prise = mysql_fetch_array($contenu_sql))
{
$array_hote[] = $tri_prise['nb'];
}


le problème, et c'est bien la première fois que ça me le fais, c'est qu'il cumule les valeurs, au fur et à mesure qu'apparaissent les sujets.

ex: je sélectionne le nb de message des sujets et leur id.

Donc, 1° sujet: 2messages, ça va.
2°sujet: 3messages, dans l'array, je trouve l'id des messages du sujet 1 plus ceux du sujet 2. Je me retrouve avec 5 messages pour le sujet 2.

Je ne comprend pas pourquoi!
Pour le compte des messages, ça marche, mais pas pour ça!8-|
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 26/06/2007 à 21h40
  • Administrateur
avatar de Lambo
Quelquepart en France
Nb Posts : 5026
Avec ce que tu donnes comme explication, je ne vois pas tellement d'où vient le pb. Désolé. Essaye de donner plus de détails.
Goodbye crual world, it's over
Walk on by
Waiting for the Worms to come
Le 26/06/2007 à 22h36
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
Bon ba, avec ton accord, je peux t'envoyer une partie de mon script.

Le problème, c'est que je sais pas trop quoi donner comme détails.
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 27/06/2007 à 09h16
  • Administrateur
avatar de Lambo
Quelquepart en France
Nb Posts : 5026
Tu peux toujours envoyer, mais c'est pas dit que j'ai le temps de regarder ça de près avant un petit bout de temps.
Goodbye crual world, it's over
Walk on by
Waiting for the Worms to come
Le 27/06/2007 à 16h45
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
Avant, je vais retenter une explication (je crois que je commence à cerner la chose.)

J'ai une requête SQL que je tri dans une boucle.

dans la boucle, j'insère les valeurs "id" dans un tableau:

$array_hote[] = $tri_prise['nb'];

Si je fais un echo de $tri_prise['nb'], ça m'affiche ce que je veux, C-A-D, les messages propres à leurs sujet.

Mais si je fais un echo de $array_hote, il me cumule les valeurs. Donc, pour le cinquième sujet, je retrouve les messages appartenant aux sujets 1, 2, 3, 4.

Le problème vient donc de $array_hote[] .

Mais il est indispensable, vu qu'après je fais diverses opération dessus. (je coupe, j'extrais, je remplace)

C'est mieux ?:)
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 27/06/2007 à 22h14
  • Administrateur
avatar de Lambo
Quelquepart en France
Nb Posts : 5026
Pour ajouter des valeurs à un tableau, j'utilise toujours la fonction array_push
Peut être essaye par ce biais.
Goodbye crual world, it's over
Walk on by
Waiting for the Worms to come
Le 27/06/2007 à 23h12
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
En fait, le but à atteindre est le suivant:

J'ai un tableau de départ qui comprend tous les id des messages du sujet.

Je prend en parallèle l'id d'un message précis. (pas au hasard.)

Je regarde où il est placé dans l'array1.
Je coupe l'array en conséquence.
j'obtiens une seconde chaine.
Et j'ai ce que je veux.

Pour cette partie que je viens de décrire, c'est du béton.

C'est seulement le passage de la requête SQL à un tableau qui coince.
Face à ça, j'ai deux solution, soit j'en fais une chaine (j'ai pas encore réussi), soit un tableau.

édit:
J'ai essayé non pas avec array_push, mais avec array_merge. le premier me cause plus de soucie.
Avec Array_merge, il ne cumule plus les valeurs. C'est un bon point. Mais le problème,c'est que toutes les clés du tableau sont à 0. Comment je peux y remédier?
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 28/06/2007 à 19h09
  • Administrateur
avatar de Lambo
Quelquepart en France
Nb Posts : 5026
Bon, même si je ne comprends pas bien à quoi ça va servir, j'ai du mal à saisir ce que tu as en entrée et ce que tu attends en sortie.

Tu as une requête SQL que tu veux appliquer à un certain nombre d'id pour mettre tout ça dans un deuxième tableau ?
Tu peux écrire un exemple de tes données d'entrée et de la sortie attendue ?
Goodbye crual world, it's over
Walk on by
Waiting for the Worms to come
Le 28/06/2007 à 23h07
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
Sa fonction est secrète (j'en suis trop fier.:-D).

Mais, en fait le problème que j'ai bien localisé maintenant, c'est que lorsque l'on fait une requête SQL trié dans une boucle. Si dans cette boucle je décide de mettre les valeurs de la requête dans un tableau, c'est normal que j'ai un array à une clé, 0, avec une valeur, et que cet array se répète autant de fois qu'il y a de valeur dans la requête (tu suis?).

Donc en toute logique (informatique bien sûr:p), je me retrouve avec:
array([0] => [25]) array([0] => [27]) array([0] =>[3])

Si j'ai dans ma requête: 25, 27, 3.
Ce que je cherche, c'est à mettre tous ces arrays dans un array.
Donc avec array_merge, j'ai le résultat ci-dessus;
Avec array_push, ba même résultat.

J'ai aussi essayé avec un implode, mais même problème. Tant que c'est dans la boucle j'ai toutes les valeurs en parallèle, mais jamais en même temps. j'aimerais savoir comment les regrouper.
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 29/06/2007 à 21h53
  • Administrateur
avatar de Lambo
Quelquepart en France
Nb Posts : 5026
A vrai dire, je n'ai rien compris.

Tu dis "Mais, en fait le problème que j'ai bien localisé maintenant, c'est que lorsque l'on fait une requête SQL trié dans une boucle."
T'as pas l'impression qu'il manque un morceau essentiel à la phrase ?

Sinon, en soit, ça veut dire quoi faire une requête SQL triée dans une boucle ?

Bref, euh, je nage...
Goodbye crual world, it's over
Walk on by
Waiting for the Worms to come
Le 29/06/2007 à 23h39
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
Je me disais aussi que c'était assez embigü.

Donc ce que j'appèle une rête trié dans une boucle, c'est :

"$prise_sql = mysql_query("SELECT * FROM data WHERE id='$id'");

while($tri_prise_sql = mysql_fetch_array($prise_sql))
{

}"


Et pour ma phrase Mais, en fait le problème que j'ai bien localisé maintenant, c'est que lorsque l'on fait une requête SQL trié dans une boucle.Si dans cette boucle ... (question de ponctuation. J'aurais du mettre : ou ,. Tu comprend mieux?
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 30/06/2007 à 13h52
  • Administrateur
avatar de Lambo
Quelquepart en France
Nb Posts : 5026
Bon ok je vois un peu mieux.

En revanche, avant de continuer, je te suggère de corriger un peu ton code :

Règle numéro 1 : ne jamais faire un "select *", il faut toujours limiter le nombre de colonne que tu vas chercher, d'une part pour une question de performance, d'autre part parce que cela implique que l'ordre des colonnes dans ta table ne changera plus jamais ou que tu n'ajoutera jamais d'information. En faisant cela, en plus, tu comprendras mieux ce qui entre dans ton tableau.

Deuxièmement, comme je suppose que tu stocke tes id au format numérique, il est inutile (voire dommage) de mettre des ' autour du $id. Parce que quand tu mets des ', mysql comprend que dedans il y a une chaine de caractères. Mais comme il va chercher dans une colonne numérique, il doit commencer par retransformer cette chaine en numérique. Donc 1, tu passes du temps à mettre tes ' et deux mysql en passe à les convertir.

Maintenant que j'ai mieux compris ce que tu voulais faire dis mi si ce qui suis est juste :

Dans ton while, tu récupères des tableaux du style array([0]->[25])

Si tu as 3 résultats, tu voudrais avoir un tableau qui donne :
1 /
array (
array([0]->[25]),
array([0]->[2]),
array([0]->[27])
)
ou
2/
array([0]->[25], [1]->[2], [2]->[27]) ?

(Merci de rayer la mention inutile.)

En fonction de ta réponse, la solution est légèrement différente.
Goodbye crual world, it's over
Walk on by
Waiting for the Worms to come
Le 30/06/2007 à 14h14
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
C'est bon, t'as compris ce que je voulais, (et moi aussi).
Pour la première règle: ça explique quelques bugs que j'ai rencontré. Je corrige dès mon retour.

Donc moi ce qui m'intéresse, c'est la solution n°2.
(J'ai juste? Je gagne quoi? lol ).
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 08/07/2007 à 18h07
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
Me revoilà!

J'ai corrigé ce qu'il n'allait pas.

alors, alors? C'est quoi la solution?:-?
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!
Le 08/07/2007 à 19h05
  • Modératrice
avatar de Asumbaa
Paris
Nb Posts : 2007
Alors...
Bon, tu initialises ton tableau final au début.

$tab_final = array();

Ensuite tu fais ta requête et tu boucles sur les résultats

$sql = "select toto from machin where truc";
$req = mysql_query($sql, $acces_base);
while ($ligne = mysql_fetch_array($req)) {
$tab_final[] = $ligne['toto'];
}

Et voilà.
"Le Jeu est un défi de l'Intelligence à la Raison"
Le 09/07/2007 à 14h30
Utilisateur
avatar de daftbug4
Dans les Landes! Oy!
Nb Posts : 1034
...En effet.
C'est bien ça.

Ah, j'ai compris, ce qui change avec mon premier script c'est $tab_final = array();!

D'accord. ça tombe bien parce que j'en ai besoin pour plusieurs scripts.

Au fait, pourquoi tu met pas la requête sql dans une variable, C'est plus rapide de la mettre directement dans mysql_query, non?
Tout est relativement absolu...
Tout est absolument relatif...
-----
http://delta14.daftbug4.free.fr/forum/ => rejoignez le projet Worms Kartmageddon vous aussi!

Worms School - Autre chose à dire ?

Sujet : Besoin d'un avis d'expert

190 messages
Fermé
Aller à la catégorie

Page valide XHTML1.0 strict Page valide CSS2 Get Firefox !