使用短信代码验证时如何确定任何电话号码的短信网关地址的电子邮件

问题描述 投票:0回答:2

我正在构建一个用户可以创建帐户的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正在做类似的事情。请提出别的建议,而不是告诉我这是不可能的......

sms sms-gateway carrier
2个回答
0
投票

如何根据用户的电话号码确定运营商

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


0
投票

在我看来,你有两个可能的解决方案。

1)将电子邮件发送到每个运营商的短信网关。如果他们不拥有这个号码,他们会回复这样的话:

Error: Invalid user address

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.