그누채팅 욕설 걸러내는 기능좀 넣어주실분있으세요? 정보
그누채팅 욕설 걸러내는 기능좀 넣어주실분있으세요?
본문
그누채팅 아주 잘쓰고 있습니다 그런데 채팅창에서 욕하시는분들이 있어서요..
예) "18"이란숫자를 입력하면 화면에 "18"이 안나오고 "**"로 나왔으면 좋겠습니다.
그누채팅쓰시는분들이 나름대로 많은것같은데요.. 글씨 걸러내는 기능을 만들어주시면 정말 감사하겠습니다.
절실하게 필요합니다 ㅠㅠ
댓글 전체
**로 안나와도...
그누보드 자체에서 금지어를 입력가능합니다.
글을작성시 금지어가 있으면 금지어가 있어서 글을 등록 못한다고 나옵니다.
그누보드 자체에서 금지어를 입력가능합니다.
글을작성시 금지어가 있으면 금지어가 있어서 글을 등록 못한다고 나옵니다.
그누채팅 소스를 직접 수정하여 보았습니다.
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");
?>
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";
}
?>
<?
//추가하세요
$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이란 숫자는 그대로 나오는군요..
그래도 제가 원하는기능이여서 정말 기쁨니다. 그누채팅을 이용하는 다른분들도 열정님에게 고마움을 느낄것같네요^^
감사합니다!!
그래도 제가 원하는기능이여서 정말 기쁨니다. 그누채팅을 이용하는 다른분들도 열정님에게 고마움을 느낄것같네요^^
감사합니다!!
저도 그부분 안되어서 수정하려다가 시간도 그렇고. 실력도 그렇고..
그래서 그냥 같이 풀어보는 것도 괜찮다 싶어 남겨둬어요..
그래서 그냥 같이 풀어보는 것도 괜찮다 싶어 남겨둬어요..