Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Ba j'apprend doucement le php sur le site du zéro et je test.
Tu ne peux PAS faire de modifs sur ton forum SI tu ne COMPRENDS pas ce que tu fais.
Humm... Si je peux faire des modifs pour tester. Et c'est pas en démoralisant les débutants qu'on va progresser.
Hors ligne
Non, en effet.
Ce n'est PAS l'objectif de mon message. DÉSOLÉ si tu l'as pris comme cela, c'est ma faute. 
Bien sûr, on peut apprendre en testant… 
À condition cependant d'avoir un minimum de bases, et de réflexion, sinon le débutant va passer son temps à maugréer, et les 'aideurs' vont passer leur temps à lui expliquer les bases.
Bref, c'est juste un curseur à positionner, qui satisfasse les deux parties…
Hors ligne
Bon revenons à nos moutons. J'ai un problème au niveau du titre dans les topics. Il s'affiche de la manière suivant:
<font color="green"> Admin </ font> </ b>Faut-il refaire les même changement que pour la chatbox ? ou c'est tout autre chose.
Merci et bonne soirée .
Je pense qu'il faudrai modifier ceci:
$result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.use_pm, u.num_posts, u.registered, u.admin_note,u.nb_avertissement, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], true) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());Mais sans être sur et je en veux pas me planter et faire planter tout .
Hors ligne
Ce que j'voulais dire c'est que si tu tape /clear (sans aucun espace là ou tu tape ton message normalement) ca effacera absolument tous les message de la chatbox.
Bon par contre, ca suffit pas, car là tous les membres pourront taper /clear et effacer la chatbox.
Il faudrait c'est ajouter une condition sur le grade comme ca :
$message = pun_linebreaks(pun_trim($_POST['req_message']));
if(preg_match('#^\/clean$#',$message) && $pun_user['group_id'] == 1){
// Ta fonction clean
$db->query('DELETE FROM '.$db->prefix.'chatbox_msg');
}Vouala, là c'est complet et sécurisé 
Hors ligne
Bon revenons à nos moutons. J'ai un problème au niveau du titre dans les topics. Il s'affiche de la manière suivant:
<font color="green"> Admin </ font> </ b>Faut-il refaire les même changement que pour la chatbox ? ou c'est tout autre chose.
Merci et bonne soirée .
Je pense qu'il faudrai modifier ceci:
$result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.use_pm, u.num_posts, u.registered, u.admin_note,u.nb_avertissement, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], true) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());Mais sans être sur et je en veux pas me planter et faire planter tout .
On ne peut pas mettre de couleur dans les titres des topics 
On ne peut mettre aucune balise html, sinon t'aurais une belle faille xss 
On pourrait gérer le bbcode, mais c'est trop de galere pour rien 
EDIT: sorry du double post
Dernière modification par WinuX (20-05-2011 21:09:41)
Hors ligne
Ce que j'voulais dire c'est que si tu tape /clear (sans aucun espace là ou tu tape ton message normalement) ca effacera absolument tous les message de la chatbox.
Bon par contre, ca suffit pas, car là tous les membres pourront taper /clear et effacer la chatbox.
Il faudrait c'est ajouter une condition sur le grade comme ca :
$message = pun_linebreaks(pun_trim($_POST['req_message'])); if(preg_match('#^\/clean$#',$message) && $pun_user['group_id'] == 1){ // Ta fonction clean $db->query('DELETE FROM '.$db->prefix.'chatbox_msg'); }Vouala, là c'est complet et sécurisé
merci mais ça ne fonctionne pas. j'ai du zapper un truc. Donc j'ai ma fonction:
$message = pun_linebreaks(pun_trim($_POST['req_message']));
if(preg_match('#^\/clean$#',$message) && $pun_user['group_id'] == 1){
// Ta fonction clean
$db->query('DELETE FROM '.$db->prefix.'chatbox_msg');
}
if ($message == '')
$errors[] = $lang_chatbox['Error No message'];
else if (strlen($message) > $pun_config['cb_msg_maxlength'])
$errors[] = $lang_chatbox['Error Too long message'];
else if ($pun_config['p_message_all_caps'] == '0' && strtoupper($message) == $message && $pun_user['g_id'] > PUN_MOD)
$message = ucwords(strtolower($message));
situé dans //chatbox.php
Esce exacte ?
Hors ligne
N'oublies pas qu'il faut le rentrer 2 fois ce code dans le chatbox.php (voire mes post precedant pour les lignes
) et il faut entrer ce code là 
Hors ligne
Bien je l'ai mit deux fois et rien se passe .
Edit: Non sa se vide mais il reste le "/clean" dans le chat, normal ?
Dernière modification par jokerz (20-05-2011 21:48:46)
Hors ligne
Si tu fais remplace le code par ca :
$message = pun_linebreaks(pun_trim($_POST['req_message']));
if(preg_match('#^\/clean$#',$message) && $pun_user['group_id'] == 1){
// Ta fonction clean
$message = 'Message modifié';
$db->query('DELETE FROM '.$db->prefix.'chatbox_msg') or die ('LA REQUETE EST FAUSSE !!!!!!');
}Si ton /clean n'est pas remplacé par "Message modifié" alors le preg-match est faux, si t'as juste une alert mysql avec ecrit "LA REQUETE EST FAUSSE !!!! alors la requete est pas bonne.
EDIT : Oui c'est normal, pour l'enlever aussi il faut faire ceci :
$message = pun_linebreaks(pun_trim($_POST['req_message']));
if(preg_match('#^\/clean$#',$message) && $pun_user['group_id'] == 1){
// Ta fonction clean
preg_replace('#^\/clean$#', '', $message);
$db->query('DELETE FROM '.$db->prefix.'chatbox_msg');
}T'auras surement un message d'erreur qui te dira qu'il faut entrer un message, ou sinon tu remplace le '' par ton message comme par exemple :
$message = pun_linebreaks(pun_trim($_POST['req_message']));
if(preg_match('#^\/clean$#',$message) && $pun_user['group_id'] == 1){
// Ta fonction clean
preg_replace('#^\/clean$#', 'La Chatbox a été vidé.', $message);
$db->query('DELETE FROM '.$db->prefix.'chatbox_msg');
}Dernière modification par WinuX (20-05-2011 22:00:08)
Hors ligne
Parfait, merci de ton aide même si je ne peux pas afficher le rang que je veux aux admin, pg.
Bonne soirée.
Hors ligne
Tu voudrais afficher le rang des admin, ou un rang prédéfini?
Car ca peut se faire 
Tout est possible en php 
Hors ligne
Bien enfait, tu m'as dit qu'il y avait possibilité de changer le rang d'un admin sur la chatbox grace donc a par exemple
<strong><font color="green">Administrateur </font color></b></strong>Mais les topics ne prennent pas en comptes ces commandes donc tu m'as répondu que sa pouvais se faire un bbcode mais c'était se compliquer pour rien,
C'est sa ?
Hors ligne
On peut changer sur la chatbox oui, mais pas dans le titre des topics qui est une chose totalement différentes 
De plus, dans le titre des topics, il n'est mentionné nulle part le grade (et titre).
Si dans la chatbox tu veux faire en sorte que les admin soit de couleur vertes ecrit comme ceci :
<strong><font color="green">Administrateur </font color></b></strong>Alors dans ton chatbox.php, il faudrait ajouter une condition ici :
A la place de :
if(!is_null($cur_msg['title'])){
$title = '<strong><span style="color:'.$cur_msg['g_color'].'">['.$cur_msg['title'].']</span></strong>';
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}else
$cur_msg_txt = $pun_config['cb_space'].$cur_msg['g_title_chatbox'].$pun_config['cb_disposition'];Tu aurais :
if(!is_null($cur_msg['title']) && $cur_msg['group_id'] !=1){
$title = '<strong><span style="color:'.$cur_msg['g_color'].'">['.$cur_msg['title'].']</span></strong>';
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}elseif($cur_msg['group_id'] ==1){
$title = '<strong><font color="green">Administrateur </font color></b></strong>';
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}else
$cur_msg_txt = $pun_config['cb_space'].$cur_msg['g_title_chatbox'].$pun_config['cb_disposition'];C'est un exemple, le group_id == 1 veut dire si le posteur est un admin.
Si c'est ca que tu voulais faire pour ta chatbox bien entendu. Par contre j'vois pas du tout le rapport avec les titre des topics.
Hors ligne
Oui mais ce que je veux dire c'est que par exemple j'ai 3 admins, et 'jaimerai leur atribuer un titre différent. c'est possible sa ?
Hors ligne
Sans modifier leur titre personnelle?
Oui, il suffit de remplacer le group_id par poster_id et de mettre l'id de tes admin un à un.
Concretement ca donne ca :
if(!is_null($cur_msg['title']) && $cur_msg['group_id'] !=1){
$title = '<strong><span style="color:'.$cur_msg['g_color'].'">['.$cur_msg['title'].']</span></strong>';
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}elseif($cur_msg['group_id'] ==1){
if($cur_msg['poster_id'] == 1){
$title = '<strong><font color="green">Administrateur N°1</font color></b></strong>';
}else if($cur_msg['poster_id'] == 3){
$title = '<strong><font color="green">Administrateur N°2</font color></b></strong>';
}else if ($cur_msg['poster_id'] == 4){
$title = '<strong><font color="green">Administrateur N°4</font color></b></strong>';
}
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}else
$cur_msg_txt = $pun_config['cb_space'].$cur_msg['g_title_chatbox'].$pun_config['cb_disposition'];Le poster_id correspond en fait à l'id du membre (id que l'on retrouve dans le profile ou la table users de la bdd) 
Hors ligne
Merci, je verrai sa demain et je te tiendrai au courant.
Encore merci et bonne nuit 
Hors ligne
Bonne nuit à toi aussi et de rien 
Hors ligne
Il existe une fonction FluxBB pour récupérer le bon "rang", il suffit de l'utiliser je pense (voir le fichier viewtopic)
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Ah je ne savais pas
, mais de toute façon, ce n'est pas ce qu'il veut 
Il veut mettre un rang perso sur la chatbox différent du rang du membre sur les forums.
Par exemple, si t'étais un de ces administrateurs, il ne voudrait pas que ton rang soit "Wik-wiki" mais plutôt un autre personnalisé unique à la chatbox genre "Admin Number one"
Hors ligne
Sans modifier leur titre personnelle?
Oui, il suffit de remplacer le group_id par poster_id et de mettre l'id de tes admin un à un.Concretement ca donne ca :
if(!is_null($cur_msg['title']) && $cur_msg['group_id'] !=1){ $title = '<strong><span style="color:'.$cur_msg['g_color'].'">['.$cur_msg['title'].']</span></strong>'; $cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition']; }elseif($cur_msg['group_id'] ==1){ if($cur_msg['poster_id'] == 1){ $title = '<strong><font color="green">Administrateur N°1</font color></b></strong>'; }else if($cur_msg['poster_id'] == 3){ $title = '<strong><font color="green">Administrateur N°2</font color></b></strong>'; }else if ($cur_msg['poster_id'] == 4){ $title = '<strong><font color="green">Administrateur N°4</font color></b></strong>'; } $cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition']; }else $cur_msg_txt = $pun_config['cb_space'].$cur_msg['g_title_chatbox'].$pun_config['cb_disposition'];Le poster_id correspond en fait à l'id du membre (id que l'on retrouve dans le profile ou la table users de la bdd)
Merci, mais je dois le mettre à la place duquel ?
car j'ai deux fois
if(!is_null($cur_msg['title']) Hors ligne
Les 2
Faut remplacer les 2.
Hors ligne
Ok mais je rempalce quoi ? j'ai ceci:
if(!is_null($cur_msg['title'])){
$title = '<span style="color:'.$cur_msg['g_color'].'">'.$cur_msg['title'].'</span>';
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}else
$cur_msg_txt = $pun_config['cb_space'].$cur_msg['g_title_chatbox'].$pun_config['cb_disposition'];
// Define last message timestamp
$last_msg_time = intval($cur_msg['posted']);
// Replace <pun_username>
if ($cur_msg['g_id'] != PUN_GUEST)
$cur_msg_txt = str_replace('<pun_username>', '<a href="profile.php?id='.$cur_msg['id'].'">'.pun_htmlspecialchars($cur_msg['poster']).'</a>', $cur_msg_txt);
else
$cur_msg_txt = str_replace('<pun_username>', pun_htmlspecialchars($cur_msg['poster']), $cur_msg_txt);
// Replace <pun_date>
$cur_msg_txt = str_replace('<pun_date>', format_time($cur_msg['posted']), $cur_msg_txt);
// Replace <pun_nbpost>
if ($cur_msg['g_id'] != PUN_GUEST)
$cur_msg_txt = str_replace('<pun_nbpost>', $cur_msg['num_posts_chatbox'], $cur_msg_txt);
else {
if (!isset($count_id[$cur_msg['poster']])) {
$like_command = ($db_type == 'pgsql') ? 'ILIKE' : 'LIKE';
$count = $db->query('SELECT COUNT(id) FROM '.$db->prefix.'chatbox_msg WHERE poster '.$like_command.' \''.$db->escape(str_replace('*', '%', $cur_msg['poster'])).'\'') or error_ajax('Unable to fetch user chatbox post count', __FILE__, __LINE__, $db->error());
$num_post = $db->result($count);
$count_id[$cur_msg['poster']] = $num_post;
}
else
$num_post = $count_id[$cur_msg['poster']];
$cur_msg_txt = str_replace('<pun_nbpost>', $num_post, $cur_msg_txt);
}
et ceci:
if(!is_null($cur_msg['title'])){
$title = '<span style="color:'.$cur_msg['g_color'].'">'.$cur_msg['title'].'</span>';
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}else
$cur_msg_txt = $pun_config['cb_space'].$cur_msg['g_title_chatbox'].$pun_config['cb_disposition'];
if ($cur_msg['g_id'] != PUN_GUEST)
$cur_msg_txt = str_replace('<pun_username>', '<a href="profile.php?id='.$cur_msg['id'].'">'.pun_htmlspecialchars($cur_msg['poster']).'</a>', $cur_msg_txt);
else
$cur_msg_txt = str_replace('<pun_username>', pun_htmlspecialchars($cur_msg['poster']), $cur_msg_txt);
$cur_msg_txt = str_replace('<pun_date>', format_time($cur_msg['posted']), $cur_msg_txt);
if ($cur_msg['g_id'] != PUN_GUEST)
$cur_msg_txt = str_replace('<pun_nbpost>', $cur_msg['num_posts_chatbox'], $cur_msg_txt);
else {
if (!isset($count_id[$cur_msg['poster']])) {
$like_command = ($db_type == 'pgsql') ? 'ILIKE' : 'LIKE';
$count = $db->query('SELECT COUNT(id) FROM '.$db->prefix.'chatbox_msg WHERE poster '.$like_command.' \''.$db->escape(str_replace('*', '%', $cur_msg['poster'])).'\'') or error('Unable to fetch user chatbox post count', __FILE__, __LINE__, $db->error());
$num_post = $db->result($count);
$count_id[$cur_msg['poster']] = $num_post;
}
else
$num_post = $count_id[$cur_msg['poster']];
$cur_msg_txt = str_replace('<pun_nbpost>', $num_post, $cur_msg_txt);
}
$cur_msg_txt = str_replace('<pun_nbpost_txt>', $lang_chatbox['Posts'], $cur_msg_txt);Merci
Hors ligne
Ceci :
if(!is_null($cur_msg['title'])){
$title = '<span style="color:'.$cur_msg['g_color'].'">'.$cur_msg['title'].'</span>';
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}else
$cur_msg_txt = $pun_config['cb_space'].$cur_msg['g_title_chatbox'].$pun_config['cb_disposition'];
if ($cur_msg['g_id'] != PUN_GUEST)
$cur_msg_txt = str_replace('<pun_username>', '<a href="profile.php?id='.$cur_msg['id'].'">'.pun_htmlspecialchars($cur_msg['poster']).'</a>', $cur_msg_txt);
else
$cur_msg_txt = str_replace('<pun_username>', pun_htmlspecialchars($cur_msg['poster']), $cur_msg_txt);
$cur_msg_txt = str_replace('<pun_date>', format_time($cur_msg['posted']), $cur_msg_txt);
if ($cur_msg['g_id'] != PUN_GUEST)
$cur_msg_txt = str_replace('<pun_nbpost>', $cur_msg['num_posts_chatbox'], $cur_msg_txt);
else {
if (!isset($count_id[$cur_msg['poster']])) {
$like_command = ($db_type == 'pgsql') ? 'ILIKE' : 'LIKE';
$count = $db->query('SELECT COUNT(id) FROM '.$db->prefix.'chatbox_msg WHERE poster '.$like_command.' \''.$db->escape(str_replace('*', '%', $cur_msg['poster'])).'\'') or error('Unable to fetch user chatbox post count', __FILE__, __LINE__, $db->error());
$num_post = $db->result($count);
$count_id[$cur_msg['poster']] = $num_post;
}
else
$num_post = $count_id[$cur_msg['poster']];
$cur_msg_txt = str_replace('<pun_nbpost>', $num_post, $cur_msg_txt);
}
$cur_msg_txt = str_replace('<pun_nbpost_txt>', $lang_chatbox['Posts'], $cur_msg_txt);Deviendra ceci :
if(!is_null($cur_msg['title']) && $cur_msg['group_id'] !=1){
$title = '<strong><span style="color:'.$cur_msg['g_color'].'">['.$cur_msg['title'].']</span></strong>';
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}elseif($cur_msg['group_id'] ==1){
if($cur_msg['poster_id'] == 1){
$title = '<strong><font color="green">Administrateur N°1</font color></b></strong>';
}else if($cur_msg['poster_id'] == 3){
$title = '<strong><font color="green">Administrateur N°2</font color></b></strong>';
}else if ($cur_msg['poster_id'] == 4){
$title = '<strong><font color="green">Administrateur N°4</font color></b></strong>';
}
$cur_msg_txt = $pun_config['cb_space'].$title.$pun_config['cb_disposition'];
}else
$cur_msg_txt = $pun_config['cb_space'].$cur_msg['g_title_chatbox'].$pun_config['cb_disposition'];
if ($cur_msg['g_id'] != PUN_GUEST)
$cur_msg_txt = str_replace('<pun_username>', '<a href="profile.php?id='.$cur_msg['id'].'">'.pun_htmlspecialchars($cur_msg['poster']).'</a>', $cur_msg_txt);
else
$cur_msg_txt = str_replace('<pun_username>', pun_htmlspecialchars($cur_msg['poster']), $cur_msg_txt);
$cur_msg_txt = str_replace('<pun_date>', format_time($cur_msg['posted']), $cur_msg_txt);
if ($cur_msg['g_id'] != PUN_GUEST)
$cur_msg_txt = str_replace('<pun_nbpost>', $cur_msg['num_posts_chatbox'], $cur_msg_txt);
else {
if (!isset($count_id[$cur_msg['poster']])) {
$like_command = ($db_type == 'pgsql') ? 'ILIKE' : 'LIKE';
$count = $db->query('SELECT COUNT(id) FROM '.$db->prefix.'chatbox_msg WHERE poster '.$like_command.' \''.$db->escape(str_replace('*', '%', $cur_msg['poster'])).'\'') or error('Unable to fetch user chatbox post count', __FILE__, __LINE__, $db->error());
$num_post = $db->result($count);
$count_id[$cur_msg['poster']] = $num_post;
}
else
$num_post = $count_id[$cur_msg['poster']];
$cur_msg_txt = str_replace('<pun_nbpost>', $num_post, $cur_msg_txt);
}
$cur_msg_txt = str_replace('<pun_nbpost_txt>', $lang_chatbox['Posts'], $cur_msg_txt);Sachant que les 2 codes que t'as proposé juste avant sont identique donc ce code là remplace les 2.
Hors ligne
. Edit : Fonctionne normalement mais j'ai toujours pas les grades personnels . Pas grace. Merci de ton aide
Dernière modification par jokerz (23-05-2011 11:39:07)
Hors ligne
Edit2: Lorsque je change le chatbox.php avec le code ci dessus, certe sa marche mais on doit actualiser pour voir les messages, normal ?
Hors ligne