그누채팅 욕설 걸러내는 기능좀 넣어주실분있으세요?

그누채팅 아주 잘쓰고 있습니다 그런데 채팅창에서 욕하시는분들이 있어서요..
 
예) "18"이란숫자를 입력하면 화면에 "18"이 안나오고 "**"로 나왔으면 좋겠습니다.
 
그누채팅쓰시는분들이 나름대로 많은것같은데요.. 글씨 걸러내는 기능을 만들어주시면 정말 감사하겠습니다.
 
절실하게 필요합니다 ㅠㅠ
|

댓글 5개

**로 안나와도...
그누보드 자체에서 금지어를 입력가능합니다.
글을작성시 금지어가 있으면 금지어가 있어서 글을 등록 못한다고 나옵니다.
그누채팅 소스를 직접 수정하여 보았습니다.
chat.php소스 파일 전부내용
참고로 유창화님의 소스 입니다...^^
**********************************************************************************************************

<?
include_once("_common.php");
include_once("../head.sub.php");
?>

<br>

<!----------------------------------------------------------------------------------->
<!-- 채팅 -->
<!----------------------------------------------------------------------------------->
<center>
<div id='chatting' style="width=750px;text-align:center;float:center;">
<span style='width:500px;padding:5px;font-size:9pt;font-family:굴림;line-height:130%;text-align:left;float:left;'><b>채팅창</b></span>
<span style='width:200px;padding:5px;font-size:9pt;font-family:굴림;line-height:130%;text-align:left;float:right;'><b>현재접속자</b></span>

<div id='chat' style='width:500px;height:300px;overflow-y:scroll;border:1px solid #000000;padding:5px;font-size:9pt;font-family:굴림;line-height:130%;text-align:left;float:left;' onmouseover='is_scroll=true;' onblur='is_scroll=false'></div>

<div id='chat_members' style='width:200px;height:300px;overflow-y:scroll;border:1px solid #000000;padding:5px;font-size:9pt;font-family:굴림;line-height:130%;text-align:left;float:right;' onmouseover='is_scroll=true;' onblur='is_scroll=false'></div>

<div style="clear:both; padding:5px 0 0 0;"></div>

<input type='hidden' id='last_id'>
<input type='hidden' id='chat_color' value='#000000'>
<input type='text' id='chat_name' size=11 readonly>
<input type='text' id='chat_msg' size=59>
<input type=button value=' 전송 ' onclick='chat_get(1);'>

<script>
var colorTable = [
"#5F9EA0", "#48D1CC", "#00FFFF", "#40E0D0", "#20B2AA", "#008B8B", "#008080", "#7FFFD4", "#66CDAA", "#8FBC8F",
"#3CB371", "#2E8B57", "#006400", "#008000", "#228B22", "#32CD32", "#00FF00", "#7FFF00", "#7CFC00", "#ADFF2F",
"#98FB98", "#90EE90", "#00FF7F", "#00FA9A", "#556B2F", "#6B8E23", "#808000", "#BDB76B", "#B8860B", "#DAA520",
"#FFD700", "#F0E68C", "#EEE8AA", "#FFEBCD", "#FFE4B5", "#F5DEB3", "#FFDEAD", "#DEB887", "#D2B48C", "#BC8F8F",
"#A0522D", "#8B4513", "#D2691E", "#CD853F", "#F4A460", "#8B0000", "#800000", "#A52A2A", "#B22222", "#CD5C5C",
"#F08080", "#FA8072", "#E9967A", "#FFA07A", "#FF7F50", "#FF6347", "#FF8C00", "#FFA500", "#FF4500", "#DC143C",
"#FF0000", "#FF1493", "#FF00FF", "#FF69B4", "#FFB6C1", "#FFC0CB", "#DB7093", "#C71585", "#800080", "#8B008B",
"#9370DB", "#8A2BE2", "#4B0082", "#9400D3", "#9932CC", "#BA55D3", "#DA70D6", "#EE82EE", "#DDA0DD", "#D8BFD8"
];
var k = 0;
var w = 4;
var h = 20;
document.write("<table>");
for (var i = 0; i < w; i++) {
document.write("<tr>");
for (var j = 0; j < h; j++) {
document.write("<td onclick=\"document.getElementById('chat_color').value='"+colorTable[k]+"';\" style='background-color:"+colorTable[k]+";cursor:pointer;' width=12px> </td>");
k++;
}
document.write("</tr>");
}
document.write("</table>");
</script>

</div>

<script>
var array_last_id = Array();
var chat_cnt = 0;
var req = null;

function sajax_init_object() {

var A;

var msxmlhttp = new Array(
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0',
'Msxml2.XMLHTTP',
'Microsoft.XMLHTTP');
for (var i = 0; i < msxmlhttp.length; i++) {

try {
A = new ActiveXObject(msxmlhttp[i]);
} catch (e) {
A = null;
}
}

if(!A && typeof XMLHttpRequest != "undefined")
A = new XMLHttpRequest();
if (!A)
alert("Error creating request object!");

return A;
}

function chat_get(mode) {

var chat_name = document.getElementById('chat_name').value;
var chat_msg = document.getElementById('chat_msg').value;
var chat_color = document.getElementById('chat_color').value;
var last_id = document.getElementById('last_id').value;

var url = 'chat_update.php';
var param = '';
param += 'name=' + encodeURIComponent(chat_name);
if (mode) param += '&msg=' + encodeURIComponent(chat_msg);
if (chat_color) param += '&color=' + encodeURIComponent(chat_color);
param += '&last_id=' + escape(last_id);
param += '&chat_ss=' + escape('<?=session_id()?>');

if (req == null) req = sajax_init_object();
if (req == null) {//원격 접속 실패시

location.href = '<?=$g4[bbs_path]?>/chat.php';
return false;
}

req.open("POST", url, true);
req.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

if (mode) req.onreadystatechange = chat_update_complete;
else req.onreadystatechange = chat_get_complete;

req.send(param);
}

function chat_get_complete() {

if (req.readyState == 4) {

if (req.status == 200) {

chat_result_display();
document.getElementById('chat').scrollTop = 100000;
return;
}
}
else {

return;
}
}

function chat_update_complete() {

if (req.readyState == 4) {

if (req.status == 200) {

document.getElementById('chat_msg').value = '';
document.getElementById('chat_msg').focus();
chat_result_display();
document.getElementById('chat').scrollTop = 100000;
return;
}
}
else {

return;
}
}

function chat_result_display() {

var chat = req.responseXML.getElementsByTagName("chat");
var chat_members = req.responseXML.getElementsByTagName("chat_members");
var last_id = '';
for (i=0; i<chat.length; i++) {

if (!chat[i].getElementsByTagName("ch_msg")[0]) continue;

last_id = chat[i].getElementsByTagName("ch_id")[0].firstChild.nodeValue;
if (array_last_id[last_id]) continue;

document.getElementById('last_id').value = last_id;
ch_name = chat[i].getElementsByTagName("ch_name")[0].firstChild.nodeValue;
ch_msg = chat[i].getElementsByTagName("ch_msg")[0].firstChild.nodeValue;
<?
$stop_word = array('욕', '18', '금지어가 작동됩니다.');
for ($i=0; $i<count($stop_word); $i++)
if (trim($stop_word[$i])) {
echo "ch_msg = ch_msg.replace(/\\".$stop_word[$i]."/g,\"<FONT COLOR='red'><B>こ,.ご; 금지</B></FONT>\");\r\n";
}
?>


ch_color = chat[i].getElementsByTagName("ch_color")[0].firstChild.nodeValue;
document.getElementById('chat').innerHTML += "<span style='color:"+ch_color+";'>" + ch_name + "</span> : <span style='color:"+ch_color+";'>" + ch_msg + "</span></br>";
chat_cnt++;

if (chat_cnt == 50) {

location.href = '<?=$g4[bbs_path]?>/chat.php';
return;
}
}

document.getElementById('chat_members').innerHTML = '';
for (i=0; i<chat_members.length; i++) {

if (!chat_members[i].getElementsByTagName("ch_name")[0].firstChild.nodeValue) continue;
document.getElementById('chat_members').innerHTML += chat_members[i].getElementsByTagName("ch_name")[0].firstChild.nodeValue + "(" + chat_members[i].getElementsByTagName("ch_ip")[0].firstChild.nodeValue + ")</br>";
}
}

if (g4_is_ie)
document.getElementById('chat_msg').onkeypress = function() { if (event.keyCode==13) chat_get(1); }
else
document.getElementById('chat_msg').onkeypress = function(event) { if (event.keyCode==13) chat_get(1); }

document.getElementById('chat_name').value = "<?=$member[mb_id]?$member[mb_nick]:'손님_'.rand(1,1000)?>";
document.getElementById('chat_msg').focus();

chat_get();
self.setInterval('chat_get()',1000);

</script>
<!----------------------------------------------------------------------------------->
</center>
<?
include_once("../tail.sub.php");
?>
이 게시판 자체에서 금지어를 단속하고 있어서 욕에 관한 내용을 올리지 않았습니다.

<?
//추가하세요
$stop_word = array('욕', '18', '금지어가 작동됩니다.');
for ($i=0; $i<count($stop_word); $i++)
if (trim($stop_word[$i])) {
echo "ch_msg = ch_msg.replace(/\\".$stop_word[$i]."/g,\"<FONT COLOR='red'><B>こ,.ご; 금지</B></FONT>\");\r\n";
}
?>
감사합니다. 열정님 그런데 "욕" "금지어가 작동됩니다." 이것은 잘 걸러내는데요 18이란 숫자는 그대로 나오는군요..
그래도 제가 원하는기능이여서 정말 기쁨니다. 그누채팅을 이용하는 다른분들도 열정님에게 고마움을 느낄것같네요^^
감사합니다!!
저도 그부분 안되어서 수정하려다가 시간도 그렇고. 실력도 그렇고..
그래서 그냥 같이 풀어보는 것도 괜찮다 싶어 남겨둬어요..
댓글을 작성하시려면 로그인이 필요합니다.

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기 기존 게시물은 열람만 가능합니다.

+
제목 글쓴이 날짜 조회
18년 전 조회 1,610
18년 전 조회 1,740
18년 전 조회 1,551
18년 전 조회 1,533
18년 전 조회 960
18년 전 조회 960
18년 전 조회 979
18년 전 조회 1,452
18년 전 조회 1,212
18년 전 조회 1,568
18년 전 조회 1,611
18년 전 조회 1,385
18년 전 조회 1,028
18년 전 조회 1,196
18년 전 조회 1,495
18년 전 조회 1,524
18년 전 조회 1,577
18년 전 조회 1,528
18년 전 조회 1,540
18년 전 조회 1,205