2009-09-23 7 views
0

아이폰 앱은 사용자가 댓글을 올릴 수있는 chatroom이 있습니다. 최근에 사용자가 댓글에 그림 이모티콘을 추가하기 때문에 대화방에서 앱이 다운되고 있습니다. 나는 내 서버 PHP 스크립트에서 A-z0-9 범위에없는 문자를 허용하지 않았다 (약 30 자 길이의 문자를 허용한다). 이로 인해 app/feed가 손상되는 것을 막을 수 있기를 바란다. 그러나, 이모티콘은 여전히 ​​chatroom을 크래시하고 있습니다.아이모가 충돌을 일으키는 이모스

이 특수 문자로 의견을 허용하지 내 서버 스크립트 내 정규 표현식 필터입니다 :

$special = "/\W/"; 
$special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+\`\-\=\{\}\|\:\\\"\<\>\?\,\.\/\;\'\[\]]/"; 

if ((preg_match($special,$comment)) && (!preg_match($special2,$comment))) 

위 말한다 PHP의 문입니다 스크립트가 아닌 문자를 발견하면 [아즈] [0- 9]와 구두점 중 하나가 나열되지 않은 경우 주석을 거부합니다. 최근에 응용 프로그램을 부러 코멘트

은 다음과 같습니다 : 충돌에서 응용 프로그램을 방지하기 위해 무엇을해야하는지에

<comment>Exciting times&icirc;€Žits all about the &icirc;Â&sect; go Team!!</comment> 

어떤 제안?

+0

* 앱이 충돌하고있는 것을 알아내는 것이 더 합리적이지 않습니까? PHP에서 주위에 dinking 대신? 앱에 버그, 취약성이 있으며 _that_을 (를) 수정해야하며 Google에서 시도하고 도움을 줄 세부 정보가 필요하지 않습니다. –

+0

참. 대화방에 emojis를 입력 할 때 오류를 복제 할 수 없었습니다. 내 아이폰에 내 자신의 emojis 세트가 있고 그들은 chatroom을 충돌시키지 않습니다. 우리는 앱을 추락시킨 사용자에게 연락하여 충돌을 일으킨 정확한 정보를 얻을 수 있도록 노력하고 있습니다. –

+0

그러면 문제를 해결하는 데 어려움이 없습니다. :) –

답변

0

다음은 문제를 해결 한 방법입니다. 이제 프로그램은 주석을 데이터베이스에 삽입하기 전에 디코 드/인코딩합니다.

header('Content-type: text/html; charset=utf-8'); 

이모티콘을 표시하지 않는 미세이다

$comment = utf8_decode($comment); 
$comment = utf8_encode($comment); 

는 또한 동적 XML/PHP를 공급하는 UTF-8 헤더를 추가했다. 하지만 피드가 유효하며 앱이 다운되지 않습니다. 문제 해결됨.

0

내가 추측 할 위험이 있다면 여기에 제가 생각하는 바가 있습니다. 앱이 유니 코드를 제대로 처리하지 못할 가능성이 있습니다. (문자 수 == 바이트 수 등을 가정 할 때) 여러 가지 일이 있지만, 앱에 특정 유니 코드 문자열이 전송되면 충돌이 발생합니다.

iPhone Empoji는 (U + E001-U + E05A에서 비공개 코드 범위의 일부를 사용하여) 유니 코드로 구현됩니다. 즉 의도하지 않은 다른있을 수 있습니다 수행

$special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+\`\-\=\{\}\|\:\\\"\<\>\?\,\.\/\;\'\[\]]/u"; 

: 당신이 올바르게 필터링 할 수없는 이유는 문자열의 끝에 "U"를 추가하지 않는 한 PHP의 정규 표현식 엔진은 높은 유니 코드 범위를 사용하여 입력 문자열을 구문 분석하지 않습니다이다 결과는 정확히 어떻게 설정되는지에 달려 있으며, 장기간에 걸쳐 임의의 유니 코드 문자열을 올바르게 처리 할 수 ​​있는지 확인하는 것이 훨씬 낫습니다.

관련 문제