0

我正在构建一个用户可以在其中创建帐户的 Web 应用程序。当用户创建他的帐户时,他提供了他的电话号码,应用程序需要通过发送短信验证码来验证号码。我使用以下代码发送短信。

<?php

if ( isset( $_REQUEST ) && !empty( $_REQUEST ) ) {
 if (
  isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'],  
  $_REQUEST['smsMessage'] ) &&
  !empty( $_REQUEST['phoneNumber'] ) &&
  !empty( $_REQUEST['carrier'] )
 ) {
   $message = wordwrap( $_REQUEST['smsMessage'], 70 );
   $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier'];
   $result = @mail( $to, '', $message );
   print 'Message was sent to ' . $to;
 } else {
   print 'Not all information was submitted.';
 }
}
?>

代码的问题是用户需要提供他的网络运营商。并且为了防止用户无法创建帐户的情况,因为他可能不知道他的运营商电子邮件到短信地址,我决定从提供的电话号码和/或国家/地区确定运营商地址。

我无法弄清楚如何从用户的电话号码中确定运营商。谁能帮我弄清楚?

我知道这是可能的,因为 Facebook 正在做类似的事情。请提出其他建议,而不是告诉我这是不可能的......

4

2 回答 2

0

如何从用户的电话号码中确定运营商

你真的不能。您可以通过电话前缀尝试,但在某些国家/地区,人们可以将他们的号码迁移到不同的运营商,这基本上意味着您将不知道它到底是哪个运营商。

于 2017-04-28T18:16:29.117 回答
0

在我看来,您有两个潜在的解决方案。

1) 将邮件发送到各运营商的短信网关。如果他们不拥有该号码,他们会回复如下内容:

Error: Invalid user address

Error message below:
550 - Requested action not taken: no such user here

保存有效的网关,如果它停止工作,则重复该过程。(他们改变了提供者)

2) 使用 SMS 提供商,如 Twilio,或订阅服务以查找网关。

于 2018-09-17T17:16:55.157 回答