아이코드 문자 전송 sql문 문의드려요~

아이코드 문자 전송 sql문 문의드려요~

QA

아이코드 문자 전송 sql문 문의드려요~

답변 4

본문

아이코드문자 sms  1회 전송 성공 후  DB 에 아래처럼 정보 잘 들어갑니다. 

 

sql_query("insert into sms5_history  set  hs_datetime=now(), sms_ip='".$_SERVER['REMOTE_ADDR']."'");

 

문제는 동일 전송 IP 에서 2회 연속 전송못하도록 아래처럼 2번 전송시에 값 체크 했어요.

 

$sms_ip = $_SERVER['REMOTE_ADDR'];
$check = sql_result(sql_query("select   count(*)     from   sms5_history   where     UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(hs_datetime) < 1800   and   sms_ip = '".$sms_ip."' "),0);

 

 

//여기서 위 $check  값을 받아오질 못하고 있습니다.

  조언 부탁합니다.

 

 

if ($check >= 2) {
?>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <script>
    alert('동일 전송 IP로 30분간 1회만 문자 발송이 가능합니다.잠시 후에 시도해 주십시오.');  
   </script>
<?
   exit; 
 }
 

이 질문에 댓글 쓰기 :

답변 4

쿼리문이 참 희한하네요.

sms5_history  테이블에 sms_ip 필드는 별도로 추가하신 건가요?

 

그렇다고 쳐도

sql_result 함수는 어디서 나온 것인지요?

이것도 님께서 별도로 만드신 함수인가요?

 

위 내용들은 그누보드5 기본에는 없는 것 같아서요.... 

sms5_history 테이블에 sms_ip 필드는 추가 되어있습니다.

 

상기 코드는 아는 지인한테서 도움을 받은건데요  sql_result 함수는 mysql내장 함수 아닌가요?

 

그런데 sql_query 함수는  실행은 잘 되요.

 

현재코드는 영카트 쇼핑몰에서 사용할려고 해요. 도움 좀주시면 감사하겟습니다. 

예상은 했었지만, 님의 말씀대로 sql_result 함수가 mysql_result 함수를 재구성한 사용자 함수라면,
님이 제시해 주신 쿼리문 자체는 문제가 없는 것같습니다.
다만, "니사누"님께서 사용하시는 서버 환경이 어떤지는 알 수 없지만 mysql_result 함수는 MySQLi 환경에서는 작동을 하지 않는 다는 것입니다.
지인께 받으셨다는 sql_result 함수가 다양한 DB 환경에서도 대응될 수 있도록 구성되었는지, 아니면 단순히 mysql_result 함수를 치환한 것에 불과한 것인지 알 수 없기 때문에 sql_result 함수를 사용해서 문제를 해결하는 조언을 드릴 수가 없습니다.

되도록이면 그누보드5에서 제공하고 있는 기본 함수를 이용해 보세요.
이번 사례와 같은 경우라면 속도면에서도 빠를 겁니다.


$sms_ip = $_SERVER['REMOTE_ADDR'];
$check = sql_fetch(" select count(*) as cnt from sms5_history where UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(hs_datetime) < 1800 and sms_ip = '".$sms_ip."' ");

//echo $check['cnt'];

if($check['cnt']){ //1회로 제한할 경우
if($check['cnt'] >= 2){ //2회로 제한할 경우

선우님 친절한 답변 너무 감사합니다^^;끝없는 공부가 필요할것 같군요..

 

cnt 라는 필드를 db에 추가 한 후 배열로 받아오는군요. 시도 해보고 한번더 여쭤도 되는지요?

 

감사의 마음을 전합니다.

  

cnt 라는 필드는 DB에 별도로 추가하실 필요가 없습니다.
select count(*) as cnt from <-- 이 구문은 cnt 라는 필드를 추가하라는 의미가 아니라 count(*) 했을 때 데이터 값을 받아오기 위한 가상 필드명을 cnt 로 설정한 것입니다.

cnt 는 쿼리문 작성자가 임의로 설정하는 것이기 때문에 꼭 cnt 라는 문자가 아니어도 됩니다.
예를 들어 select count(*) as num from <-- 이런식으로 하면 데이터 값을 변수로 출력할 때
echo $check['num']; 이렇게 됩니다.

그러니 cnt 라는 필드는 추가하지 마시고
그냥 제가 제시해 드린 소스로 테스트해 보세요.

아~ 선우님..다음에 의뢰 할일 있으면 꼭 할게요.정말루요~

 

많이 배웠어요.알려주신 소스대로 하니 너무 잘 됩니다.

 

친절한 마인드 닮고 시포요~~고마워요~~

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 2,432
© SIRSOFT
현재 페이지 제일 처음으로