2010-07-29 4 views
1

PHP를 통해 Active Directory 레코드를 추가하려고합니다. CN 아포스트로피 (작은 따옴표) 포함되어 있으며 그것을 탈출 할 수있는 올바른 방법을 찾으려고 노력하고있어.ldap_add : 구문이 잘못되었습니다.

것들 나는 시도했다 :

$dn = "CN=Conan O'Brien,OU=test,DC=test"; 
ldap_add($link_id, $dn, $attributes); 
ldap_add($link_id, addslashes($dn), $attributes); 
ldap_add($link_id, str_replace("'", "\\39", $dn), $attributes); 

각각 같은 오류를 제공합니다. 분명히이 코드는 DN에 아포스트로피없이 작동하는지 확인했습니다.

ldap_add(): Add: Invalid syntax 
+0

나는 평범한 옛날 \\과 \\을 모두 성공하지 못했다고 가정한다. – Charles

+0

일반적으로 LDAP에서 그것은 필요한 이스케이프 처리를 수행하는'\ ''입니다. – geoffc

+0

addslashes는 '를 a \로 변환합니다. printf를 사용하여 이것을 확인했습니다. 그래, 나는 그것을 시도했다. 그게 내 중간 사건이야. 나는 또한 성공하지 않고 \\ '시도했다. –

답변

0

하나가 아닌 두 개의 아포스트로피를 사용해야합니다. 그것은 하나가 다른 하나를 벗어나기 때문입니다.

\ escaping은 값에 문자열 표현이없는 경우 사용되는 특수 문자 ("," ""= "etc ...) 및 16 진수로 인코딩 된 문자에 사용됩니다.

관련 문제