如何通过 php/ajax/javascript 动态检测蜂窝运营商? [关闭]
Posted
技术标签:
【中文标题】如何通过 php/ajax/javascript 动态检测蜂窝运营商? [关闭]【英文标题】:How do I detect a cellular carrier dynamically through php/ajax/javascript? [closed] 【发布时间】:2013-04-08 19:02:54 【问题描述】:我之所以这么问,是因为我一天中的大部分时间都在忙,似乎无法得到/找到答案。
这就是我想要做的(不使用付费网关):
-首先我要建立一个包含各种信息和日期的数据库。
-使用 cron 我将运行一个脚本,在该日期通过电子邮件向 SMS php 脚本发送各种信息(用户提供)给用户。
-避免维护准确的蜂窝运营商列表。我想以某种方式 ping 号码并返回运营商和适当的“@carrier-email-extension”以发送消息。 (我不想在注册期间询问用户;简化注册 - 因为不是 PIA 并获得更多用户) - 我目前有一个下拉列表,列出了大约 50 家运营商(我知道我可能忘记或不小心遗漏了一些),但我不想维护列表。我想删除这部分表格。理想情况下,我想在输入时通过 ajax/javascript 检查号码,并在提交期间将运营商信息发送到 mysql。
-用户已经同意从我的服务中获取 SMS 消息/更新/文本,因此没有恶意行为。他们会在设置另一条消息时同意:
您将在 date向您的手机号码 mobile number 发送包含以下信息 listed information 的 SMS 消息。
有什么建议吗?
【问题讨论】:
为什么要将用户提供的数据发送到外部源?这不是数据保护方面的错误吗? @DarylGill 他们正在为他们的手机号码设置提醒和警报,以备日后使用,或者当其他用户在类似的信息集中标记他们时。 如果您有用户的电话号码,那么您可以通过NPA/NXX 查找运营商。 @Sammitch 你知道这是否准确吗?通过我的研究 fonefinder.net 做到了这一点(我知道基于它吐出的 url)。我输入了我的号码,我以前的运营商出现了。 (我的运营商被另一家运营商购买)。你知道我需要做什么吗? 我同意@Sammitch。你会得到你所支付的。如果您找到免费服务,它的准确性可能会大大降低。 【参考方案1】:如果您想确定电话号码的实际运营商,您应该执行所谓的 HLR(Home Location Register)查找。许多消息传递服务都提供这样的服务,并且它们通常有一个 HTTP API。然而,它会花费你 - 每次查找都有一个价格,虽然很小,但它会加起来。
此外,如果您在特定国家/地区需要此功能,负责电话号码的监管机构可能有也可能没有某种可以查询号码数据的数据库服务。这些通常具有固定成本,因此如果您对该国家/地区的数字进行了足够多的查找,那么您应该进行数学计算,以便获得回报。
【讨论】:
您好,感谢您的回答,但我正在根据我的问题寻找免费选项。谢谢 遗憾的是,对于已实施手机号码可携性的国家/地区,没有免费选项。【参考方案2】:它的两步过程。
查找手机的国家/地区代码..您可以使用 Google API...Google 免费提供(Google:libphonenumber - Google 的电话号码处理库)
Wikipedia 上提供了网络代码列表...对于每个国家/地区,您必须通过选择前几位国家/地区代码来实施该列表。 (谷歌:移动国家代码 - ***)
您将找到每个国家/地区的网络代码列表,您将看到运营商名称和 MC /C MNC 列表。当您从手机号码中找出一个国家/地区的国家代码时,每个运营商都有一个唯一的 MCC MNC 。然后对于每个国家,您必须编写一个查找表;选择手机号码的前 3 位,并为他分配网络代码……为您所在国家/地区的运营商做这个练习,您会明白的。
因为我为text API 实现了它,这就是为什么我可以告诉你这个.. 它的工作量很大。祝你好运!
【讨论】:
@Ehtesham Haque 感谢您的回答。你能详细解释一下吗? @rcpilotp51 我更新了响应...我在 excel 中有一个查找表..不知道如何发送它..如果您正在编程,它将对您有所帮助。有所有国家代码和网络代码反对它.. 虽然价值一百万:) libphonenumber 不允许您确定号码的运营商,只能确定国家/地区、号码类型、固定电话的地理位置等。 此外,您没有考虑手机号码的可移植性,即在保留号码的同时在运营商之间迁移,并且对于许多国家/地区,编号范围可以细分为比 3 号码前缀更小的部分你提到的会允许。 @pilsetnieks 是的!号码携带是个大问题!有没有办法用这个号码 ping 所有运营商,如果我得到肯定的回复,请发送消息?【参考方案3】:我也遇到了这个问题 - 这里有一个快速的解决方案,它会为您提供手机运营商的电子邮件到 SMS 功能,只需提供手机号码:
<?php
// leave this blank - we may never implement an authentication key
$smsarc_API_key = '';
// enter the user's 10 digit cell phone number.
// example format: $smsarc_to = '5556667777';
$smsarc_number = '3123094991';
// lookup carrier
$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, 'http://www.smsarc.com/api-carrier-lookup.php?sa_number='.$smsarc_number); $AskApache_result = curl_exec ($ch); $smsarc_message_status = $AskApache_result; curl_close($ch);
// print the carrier lookup results
echo $smsarc_carrier;
?>
来自他们网站的开发者 API: http://www.smsarc.com/free-php-cell-phone-carrier-lookup/
【讨论】:
截至今天,这似乎处于离线状态(smsarc.com 的 DNS 错误):( 此服务似乎不再存在。以上是关于如何通过 php/ajax/javascript 动态检测蜂窝运营商? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何理解“不要通过共享内存来通信,而应该通过通信来共享内存”?
如何通过 DBLINK 通过 DBLINK 调用 SELECT?