문제

우리는 응용 프로그램에서 새로운 사용자를 등록하기 위해 초장 해시를 사용합니다. 문제는 이러한 해시가 일부 이메일 클라이언트에서 파손되어 링크를 사용할 수 없다는 것입니다.

간단한 호출로 Tinyurl -API를 구현하려고 시도했지만 때로는 시간이 걸린다고 생각합니다 ... 때로는 메일이 사용자에게 도달하지 않습니다.

코드를 업데이트했지만 이제 URL은 변환되지 않습니다. Tinyurl이 정말로 느리게합니까, 아니면 내가 뭔가 잘못하고 있습니까? (이시기에 5 초가 많다)

아무도 나에게 더 안정적인 서비스를 추천 할 수 있습니까?

내 잘못, fopen에서 거짓을 잊어 버렸습니다. 그러나 나는이 코드 샘플을 여기에 남겨 둘 것입니다. 왜냐하면 나는 종종이 샘플을 볼 수 있기 때문에, 나는 매우 신뢰할 수 없다고 생각합니다.

return file_get_contents('http://tinyurl.com/api-create.php?url='.$u);

이것은 - 완전히 작동하는 샘플이라고 생각합니다. 개선에 대해 듣고 싶습니다.

static function gettinyurl( $url ) {

    $context =
        stream_context_create(
            array(
                'http' => array(
                    'timeout' => 5  // 5 Seconds should be enough
                )
            )
        );

    // get tiny url via api-create.php
    $fp = fopen( 'http://tinyurl.com/api-create.php?url='.$url, 'r', $context); // open (read) api-create.php with long url as get parameter

    if( $fp ) { // check if open was ok
        $tinyurl = fgets( $fp ); // read response

        if( $tinyurl && !empty($tinyurl) ) // check if response is ok
            $url = $tinyurl; // set response as url

        fclose( $fp ); // close connection
    }

    // return
    return $url; // return (tiny) url

}

도움이 되었습니까?

해결책

사용하고 싶을 수도 있습니다 urlencode ()url 매개 변수.

확인하는 것이 좋습니다 fgets() 에 맞서 false. 그런 다음, 당신은 그것을 저장할 수 있습니다 empty() 응답을 빈 문자열과 비교하여 다음과 같은 기능을 호출합니다.

$line = fgets($fp);

if ($line !== false && $line !== '') {
    // ...
}

일반적으로 모든 것을 확인하는 것이 좋습니다 false 첫째, 함수가 다른 유형의 값을 반환하는 경우 integer 또는 boolean. 이것은 중요 할 수 있습니다 0 그리고 false 비교의 의미. PHP의 유형 안전성 부족으로 인해 항상 유형 평등을 확인하는 것이 좋습니다. 문서가이를 명시 적으로 추천하는 경우도 있습니다. strpos (). 한편, 나는 스스로 사용하도록 강요했다 === 위로 ==,`! = '등에 대해 동일합니다. 더 많은 타이핑이 필요하지만 가능한 함정을 제거하기 때문에 노력할 가치가 있습니다.

나머지 코드는 나에게 좋아 보인다.

다른 팁

당신은 시도 할 수 있습니다 Bit.ly 서비스. 내가 아는대로 Google이 지원합니다.

API

해시가 얼마나 오래 걸리는지는 모르겠지만 모든 서비스 (브라우저, 서버 등)가 255 숯보다 URL을 처리 할 수는 없습니다. 당신은 조사 할 수 있습니다 PHP의 팩 ()

좋은 해결책, 첫 번째는 정말로 공포입니다 : D

"초장 해시"를 사용하는 요점은 무엇입니까?

아무도 긴 해시를 추측하는 데 귀찮게하지 않았으며 대신 작은 일을 깨뜨릴 것입니다.

10 자 해시를 직접 사용하십시오 지금보다 안전합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top