2011-04-24 8 views
1

저는 WordPress 설치용 사용자 정의 로그인 스크립트를 사용하고 있습니다. 모든 활성화 키는 다음과 같은 형식으로 등록 된 사용자에게 전송 될 때를 제외하고 잘 작동 : 사용자 그러나 위의 링크를 클릭하면PHP를 사용하는 활성화 키의 문제

http://mydomain.com/?page_id=1278&[email protected]&activate_key=7edbad 

는이 '@'이메일에 따라서 사라지고 없다는 오류를주는 활성화 키가 유효하지 않습니다.

누군가 나를 안내 할 수 있습니까?

$link=get_option('home').'/?page_id='.$pageid.'&mail='.$user_email.'&activate_key='.$key; 
+0

P .: 브라우저에 수동으로 링크를 복사/붙여 넣기하면 정상적으로 작동합니다. – Sledge81

+0

나는 작은 테스트를 수행하고 정품 인증 링크를 나의 전망에 전달했습니다 (단지 gmail 일 수있는 문제를 제거하기 위해). 링크가 어떻게 든 클릭되면 URL이 변경되고 활성화 오류를 나타내는 '@'이 사라집니다. – Sledge81

+0

@Sledge는 브라우저의 위치 표시 줄에있는 @ 기호입니까? 또는 최소한 URL로 인코딩 된 % 40? – Charles

답변

0

가 GET의 PARAMS에 urlencode()을 시도해보십시오

이 함께 활성화 링크를두고 코드의 조각이다. 당신은 또한 전체 쿼리를 구축, 한 번 http_build_query()를 사용할 수, 대안으로

$link=get_option('home') 
      .'/?page_id='.urlencode($pageid) 
      .'&mail='.urlencode($user_email) 
      .'&activate_key='.urlencode($key); 


:

+0

안녕하세요 알렉스, 좀 더 자세히 설명해 주실 수 있습니까 .. 나는 PHP에서 유능한 사람이 아닙니다 ... 단지 몇 가지를 관리 할 수 ​​있습니다. – Sledge81

1

당신은 아마 각 매개 변수의 값에 urlencode() 기능을 사용하여, 해당 URL의 매개 변수를 인코딩해야 문자열 :

$params = array(
    'page_id' => $pageid, 
    'mail' => $user_email, 
    'activate_key' => $key, 
); 
$query_string = http_build_query($params); 

$link=get_option('home') . '/?' . $query_string; 
+0

urlencode()를 사용해 보았습니다. 이제 활성화 링크는 http://mydomain.com/?page_id=1278&mail=user%40email.com&activate_key=7edbad와 같지만 클릭하면 같은 오류가 발생합니다. 지금 http_build_query 옵션을 시도하고 다시 연락 할 것입니다. – Sledge81

+0

Ok .. http_build_query를 사용했지만 변경하지 않았습니다. 여전히 같은 오류가 발생했습니다. 활성화 링크의 전자 메일 주소 섹션은 @ – Sledge81

0

는 URL 친화적 값으로 변환 할 $user_email 주위 urlencode()을보십시오.

+0

대신 % 40입니다! 나는 서둘러야한다는 것을 알았다. – Ethan

+0

전혀 도움이 안된다. 문제의 범위를 좁혔습니다. 활성화 링크를 클릭하면 어떻게 든 '@'가 URL에서 제거됩니다. – Sledge81