2010-04-14 2 views
1

jquery/ajax와 PHP를 백엔드에서 사용하여 데이터를 게시하고 있습니다. 문제는, 'Jack & Jill이 언덕 위로 올라 갔다'와 같은 것을 입력 할 때, 나는 그것이 백엔드에 도착했을 때만 'Jack'을받는 것입니다.PHP가 - '&'가 데이터에있을 때 데이터가 끝납니다

'& Jill이 언덕 위로 올라 갔다.'라는 경고 메시지가 전송되기 전에 프론트 엔드에서 오류가 발생했습니다. 내 인덱스 페이지의 맨 위에 die(print_r($_POST));을 넣었을 때 나는 데이터가 손실 될 수있는 방법

난 단지

[key] => Jack 받고 있어요?

내 필터 일 수도 있다고 생각했습니다.

<?php 

function filter($data) { 
    $data = trim(htmlentities(strip_tags(mb_convert_encoding($data, 'HTML-ENTITIES', "UTF-8")))); 
    if (get_magic_quotes_gpc()) { 
     $data = stripslashes($data); 
    } 
    //$data = mysql_real_escape_string($data); 
    return $data; 
} 

echo "<xmp>" . filter("you & me") . "</xmp>"; 

?> 

하지만 내가 die(print_r($_POST));을 추가 한 후 제자리에 you & me 위의 테스트에서 잘 돌아갑니다.

누구나 어떻게 이런 일이 일어날 지 생각할 수 있습니까?

도움을 주시면 감사하겠습니다.

답변

2

에서() 탈출. & 문자는 제출 된 양식 데이터에서 키 - 값 쌍을 구분합니다. 이

+0

감사합니다. 자바 스크립트/jquery를 배우는 중입니다. 감사합니다. –

0

사용 중 인 코드() 또는 당신은 가능성이 가장 높은 데이터를 인코딩 URL에 실패 자바 스크립트 끝

+0

escape()는 특수 문자를 이스케이프 처리하는 데 적합한 함수입니다. – Aurril

+1

아니요, 아닙니다. 비 ASCII 문자에 대해서는 제대로 작동하지 않으며 더 이상 사용되지 않습니다. – Quentin

1

POST 데이터에 대한

사용 encodeURIComponent 단지 URL에 GET 데이터 같다 형태의 HTTP 헤더를 통해 전송됩니다. 예를 들어, 데이터는 var1=value1&var2=value2&var3=value3처럼 보일 수 있습니다. 상상할 수 있듯이 데이터에 앰퍼샌드 자체가 포함되어 있으면 해당 형식에서 너무 잘 작동하지 않습니다. 정확하게 말하면 데이터를 제출하는 방법에 문제가 있습니다.

게시 데이터 (또는 URL에서 URL)에 앰퍼샌드를 사용하려면 "urlencoded"여야합니다. 즉, 을 & 문자로 사용해야합니다. 그래서 문제가있는 PHP는 아니지만 데이터를 보내는 것은 무엇이든간에. 값을 올바르게 인코딩하지 않습니다.

0

자바 스크립트 끝에서 escape()을 사용해야합니다.

PHP에서이 함수의 이름은 urlencode()입니다.

관련 문제