작성자(이름)에 특수문자를 못쓰게 하려합니다
본문
안녕하세요?
작성자(이름)에 특수문자 ? 등을 못쓰게 하려합니다.
어디를 수정해야 하는 지요?
특수문자를 넣으니까 검색이 되지 않는 문제가 있습니다.
$str_content
= cut_str(str_replace('?', '',
strip_tags
(
$list
[
$i
][
'wr_content'
])),46);
이렇게 하면 ?가 삭제가 된다고 하는데...
아니면 다음의 것을 응용해서 어디에다 넣어야 하는지요?
write.skin.php에 넣어봤더니 문제가 생기네요...ㅜㅜ
if (preg_match('/[ \{\}\[\]\/?.,;:|\)*~`!^\-_+┼<>@\#$%&\'\"\\\(\=]/gi', $변수)){
alert("특수문자는 입력하실 수 없습니다.");
}
문법이 너무 약헤서...좋은 방법 좀 알려 주십시오~
감사합니다.
좋은 밤 되십시오~^^)
답변 5
저거는 bbs/write_update.php 안에서 처리가능
if ($w == '' || $w == 'r') {
if ($member['mb_id']) {
$mb_id = $member['mb_id'];
$wr_name = addslashes(clean_xss_tags($board['bo_use_name'] ? $member['mb_name'] : $member['mb_nick']));
$wr_password = $member['mb_password'];
$wr_email = addslashes($member['mb_email']);
$wr_homepage = addslashes(clean_xss_tags($member['mb_homepage']));
} else {
$mb_id = '';
// 비회원의 경우 이름이 누락되는 경우가 있음
$wr_name = clean_xss_tags(trim($_POST['wr_name']));
if (!$wr_name)
alert('이름은 필히 입력하셔야 합니다.');
$wr_password = get_encrypt_string($wr_password);
$wr_email = get_email_address(trim($_POST['wr_email']));
$wr_homepage = clean_xss_tags($wr_homepage);
}
이소스 다음이나 전에 넣어야 이상적이라 생각되네요
작성자명에 영문자,한글,숫자,언더스코어(_) 외 특수문자,공백 등을 허용하지 않을 경우
아래 처럼 간단히 처리할 수도 있겠습니다 ㅎ
<?php
$a = "abc한글";
if(preg_match("/[^a-zA-Z0-9ㄱ-ㅎ가-힣_]/",$a))
echo "There are special characters";
else echo "OK!";
?>
저 나 네이비칼라님이 써주신소스는 참고하라는것이지 저걸 넣어서 작동된다는 보장은 없써요
말하자면 질문하시는분이 원하시는 것은 답변자가 어떤소스를 딱주면 그걸 어느곳에 넣으면
작동되는걸 원하시는거 같은데요
그거는 질문자의 환경을 알아야 만들수잇는거구요
이런일을 하려면 최소한 ftp 정보 를 알아야 만들어드릴수있는 내용입니다
지금 여기에 질문을 하신거는 다변자가 어떤 힌트를 주면 그걸 가지구 적용하는거자나요
제가 위치를 알려드려고 네이비칼라님이 소스를 주셔지만 그걸 가지구 변형을 해야하는거죠
에를 들면
1 홈페이지에 게시판이 한개가 아니자나요 제가 말하는 위치에 소스를 집어넣으면
되지만 여기서 문제점이 발생핮 모든 게시판에 적용이된다는 문제점
2 그리고 네이비칼라님이 주신소스는 적확한 소스지만 질무하신분이 저소스를 가져다가 가공을 하셔야되요
if
(preg_match(
"/[^a-zA-Z0-9ㄱ-ㅎ가-힣_]/"
,
$name
)){
alert("특수문자는 입력하실 수 없습니다.");
}
이런식으로
bbs/write_update.php 안에서 처리가능 안에
안에서
echo $bo_table;
exit;
이러게 하면 게시판 table 정보가 나오는데요
101 정도에 아래와 같은 소스가있는데요
@include_once($board_skin_path.'/write_update.head.skin.php');
이거 및에 이러게 넣으면 될거같아요
if($table=='테이블명'){
if
(preg_match(
"/[^a-zA-Z0-9ㄱ-ㅎ가-힣_]/"
,
$name
)){
alert("특수문자는 입력하실 수 없습니다.");
}
}
이런식으로 하면 될듯하네요
해당 스킨 write.skin.php 에 다음과 같이 해서 글자수 제한 위로 놓으니까 작동을 합니다.
//특수문자 사용금지
$(document).ready(function(){
$("#wr_name").on("keyup", function(){//작성자 이면 wr_name으로 내용이면 wr_content
reg = /[~!@\#$%^&*\()\-=+_']/gi;
var temp=$(this).val();
if(reg.test(temp)){
alert("특수문자는 입력할 수 없습니다.");
$(this).val(temp.replace(re,""));
}
});
});
<?php if($write_min || $write_max) { ?>
// 글자수 제한