编程语言
首页 > 编程语言> > php – Tinyurl API示例 – 我做得对:D

php – Tinyurl API示例 – 我做得对:D

作者:互联网

我们使用超长哈希来为我们的应用程序中的新用户注册.问题是这些哈希在一些电子邮件客户端中断 – 使链接无法使用.

我尝试使用简单的呼叫实现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.这可能是至关重要的,因为0和false意味着比较相同.由于PHP缺乏类型安全性,强烈建议始终检查类型是否相等.甚至有些文档明确建议这样做,例如同时,我强迫自己使用=== over ==,同样适用于`!=’等等.它需要更多打字,但绝对值得努力,因为你消除了可能的陷阱.

其余的代码对我来说很好.

标签:php,api,tinyurl
来源: https://codeday.me/bug/20190701/1343815.html