Kommunauty
Connexion
Inscription

[FIX] Bug des candidatures des alliances


jeraii Messages : 88

Bonjour tout le monde, il y a quelques temps j'ai obtenu un gros bug, une erreur sql. (Ce fix est pour xnova revolution)

Ce bug est causé lorsqu'on veut accepté une candidature et que le nom de notre alliance contient une apostrophe.

Voici comment résoudre ce bug:

Ouvrer le fichier "class.ShowAlliancePage.php", dans "/includes/pages"

Aller à la ligne 922 ou rechercher ceci:

$text  	= makebr(request_var('text', '', true));

if ($action == $LNG['al_acept_request'])
                                {
                                    $db->multi_query("UPDATE ".ALLIANCE." SET `ally_members` = `ally_members` + 1 WHERE id='".$ally['id']."';UPDATE ".USERS." SET ally_name='".$ally['name']."', ally_request_text='', ally_request='0', ally_id='".$ally['id']."' WHERE id='".$db->sql_escape($id)."';UPDATE ".STATPOINTS." SET `id_ally` = '".$ally['id']."' WHERE `id_owner` = '".$id."';");

Et remplacer par cela:

$text  	= makebr(request_var('text', '', true));

if ($action == $LNG['al_acept_request'])
                                {
                                    $db->multi_query("UPDATE ".ALLIANCE." SET `ally_members` = `ally_members` + 1 WHERE id='".$ally['id']."';UPDATE ".USERS." SET ally_name='".$db->sql_escape($aname)."', ally_request_text='', ally_request='0', ally_id='".$ally['id']."' WHERE id='".$db->sql_escape($id)."';UPDATE ".STATPOINTS." SET `id_ally` = '".$ally['id']."' WHERE `id_owner` = '".$id."';");

Voila le problème est résolu,

N'oublier pas de dire merci

Note: vous auriez pu utiliser un "sql_escape_string" et la function addslahes, mais le sql_escape_string est maintenant un code obsolète qui ne fonctionne que sur le php 5.3.0. Tandis que ce fix est beaucoup plus simple

vendredi 10 mai 2013 (Dernière édition vendredi 10 mai 2013)

Homer Messages : 1828

En l'état je sais pas si ça fonctionne, si je me trompe pas, tu as résolu le bug avec ça -> $db->sql_escape($aname)

sauf que tu a oublier de définir $aname qui doit surment valoir $ally['name'] si me me trompe pas, donc pourquoi ne pas mettre directement $db->sql_escape($ally['name']) ?

dimanche 12 mai 2013

jeraii Messages : 88

Voila pourquoi: l'apostrophe de "['name']", ouvre, donc si tu a un nom d'alliance avec un apostrophe il va fermer la balise et le reste du nom de l'alliance va créer une erreur. Exemple: Le nom de l'alliance est "l'alliance test", hey bien avec la balise ça donne ça: ['l'alliance test'], donc la balise se ferme après le "L" et le reste est ignoré, alors on se retrouve avec un nom d'alliance appelé: " L " .

Cependant, ce patch fonctionne a moitié. On peut accepter un membre, mais il on verra pas dans quel alliance il est dans le classement. Il faut donc modifier le nom de l'alliance pour que les modifications s'appliquent.

Je travaille sur une autre solution.

dimanche 12 mai 2013 (Dernière édition dimanche 12 mai 2013)

Homer Messages : 1828

fait un str_replace tous simplement, j'ai résolu plusieurs bug comme ça

dimanche 12 mai 2013

jeraii Messages : 88

Tu le met où le str_replace ?

Je connais pas cette variable.

mardi 14 mai 2013 (Dernière édition mardi 14 mai 2013)

Homer Messages : 1828

c'est un fonction php qui permet de remplacer un caractère par un autre, donc tu pourrai remplacer le ' par un \' et le tour est joué

Va voir là

mardi 14 mai 2013

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !