Woocommerce注册-通过OTP验证电话号码

时间:2018-06-21 23:57:54

标签: php html wordpress woocommerce hook-woocommerce

我有一个自定义Woocommerce注册表格。我正在尝试通过注册之前发送OTP来验证客户的手机号码。我尝试了add_action('register_post','send_otp',10,1);但先注册然后发送OTP。 我也尝试了woocommerce验证功能,但是它给我带来了一些问题。所以任何人都可以帮助我实现此代码,以便我首先验证手机号码(如果已验证)。用户将被注册。

对不起,我的英语不好,谢谢。

代码:

function wooc_validate_extra_register_fields( $username, $email,$validation_errors ) { if(empty($_POST['terms'])) {throw new Exception( __( 'You must accept the terms and conditions in order to register.', 'text-domain' ) );
}

if ( isset( $_POST['billing_phone'] ) && empty( $_POST['billing_phone'] ) )
  {
      $getuser = $_POST['billing_first_name'];
      $getmobile = $_POST['billing_phone']; 

      if(!empty($getmobile))
      {

    session_set_cookie_params(10);

 //Send SMS To User

 global $smsgatewaycenter_com_user,$smsgatewaycenter_com_password,$smsgatewaycenter_com_url,$smsgatewaycenter_com_mask;

  $smsgatewaycenter_com_user = "XXXXX"; //Your SMS Gateway Center Account Username
  $smsgatewaycenter_com_password = "XXXXXX";  //Your SMS Gateway Center Account Password
  $smsgatewaycenter_com_url = "http://www.smsgateway.center/SMSApi/rest/send?";
//"http://www.smsgateway.center/SMSApi/rest/send?"; //SMS Gateway Center API URL
  $smsgatewaycenter_com_mask = "OTPEPL"; //Your Approved Sender Name / Mask

//$_SESSION['smsgatewaycenterotp']='';
  $sessiondata=smsgatewaycenter_com_OTP();
  $debug = true; //Set to true if you want to see the response
 // $_SESSION['smsgatewaycenterotp'] = smsgatewaycenter_com_OTP(); 

  echo "<input type='hidden' id='sessiondata' value='".$sessiondata."'";


  // echo '<pre>';print_r($_POST);
  $_SESSION['smsgatewaycenterotp'];  
  $to=$_POST['email'];

    //Send Email To User
  $frm='noreply@otpeople.com';

  $headers = 'From: '.$frm. "\r\n" .
  'Reply-To: '.$frm. "\r\n" .
  'X-Mailer: PHP/' . phpversion();

  $headers  .= 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
  //$to=$GetTempUsrInfo['email'];
  $subject="OTpeople - LOGIN OTP";

  $message.="
  <table width='100%'>
  <tr>
  <td align='left'><a href='http://www.otpeople.com/' target='_blank'><img src='assets/img/logo.png' width='150' /></a><br /><br /></td>
  </tr>
  </table>";
  $message.="
  <table width='80%'>
  <tr>
  <td width='30%' height='40' colspan='2'>Hello, ".$getuser."</td>
  </tr>
  <tr>
  <td width='30%' height='40' colspan='2'>Your Login verification OTP is : ".$sessiondata." <br />Please do not share your OTP with anyone. </td>
  </tr>
  <tr>
  <td colspan='2'><br /></td>
  </tr>
  <tr>
  <td colspan='2' height='auto'><strong>Ozamn Technologies</strong><br />www.otpeople.com<br><br /><br />*** This is an automatically generated email, please do not reply ***</td>
  </tr>
  </table>";
  $message.="</div><br /><br />";




if($_COOKIE["setcookie"]=='')
{

    $getsmsdata= smsgatewaycenter_com_Send($getmobile,'Dear '.$getuser.'! Please authenticate your One Time Password (OTP) For Registration With OTpeople. Your One Time password is: '.$sessiondata,$debug);
    mail($to,$subject,$message,$headers);
    $html = renderView();

    echo  $html;
     exit;
}
  setcookie('setcookie','');
  unset($_COOKIE['setcookie']);
    }
 return $validation_errors;

 }add_action('woocommerce_register_post','wooc_validate_extra_register_fields',10,5 );function renderView() {
 ob_start();

 $data= "<html><body style='margin-top:150px;    width: 700px;margin-left:350px;'><h1>Authenticate OTP (One Time Password)</h1><p>We have sent an SMS to your registered phone number and email address, please authenticate your one time password entering below.</p><form method='GET' id='formId' style='margin-left: 115px;'><table border=1> <div class='form-group'><tr><td style='padding: 12px;'>Your one time password (OTP):</td><td style='padding: 12px;'><input type='hidden' name='setvalue' id='setvalue' value=''><input type='text' class='form-control' name='getsmsgatewaycenterotp' id='getsmsgatewaycenterotp'></td></tr></div> <div class='form-group'><tr><td colspan='2' style='padding: 12px;'><input id='authotp' type='button' name='submitotp' style='width:100%;text-align:center;   padding: 6px 12px;    background-color: #00c0ef;' class='btn btn-info' value='Authenticate OTP' onclick='checkotp()'></td></tr></div></table> </form>
  <script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js' ></script>
 <script>
 function checkotp()
{
  var sessionotp=$('#sessiondata').val();
  var getotp=$('#getsmsgatewaycenterotp').val();
  if(sessionotp==getotp)
  {
    alert('Your Email id or Mobile Number Has been Successfully Verified You can Proceed With Registration');
    document.cookie = 'setcookie=testcookie';
    location.reload();

    return true;
  }
  else
  {
    alert('The OTP you have entered is Wrong. kindly check again for OTP or refresh the page to RESEND the OTP');
    return false;
  }
  return false;

  } </script></body></html>"; <?php return $data;}function smsgatewaycenter_com_Send($mobile, $sendmessage, $debug=true){
global $smsgatewaycenter_com_user,$smsgatewaycenter_com_password,$smsgatewaycenter_com_url,$smsgatewaycenter_com_mask;
  $parameters = '&userId='.$smsgatewaycenter_com_user;
$parameters.= '&password='.$smsgatewaycenter_com_password;
$parameters.= '&sendMethod=simpleMsg';
$parameters.= '&msgType=text';

$parameters.= '&Language=English';
$parameters.= '&senderId=OTPEPL';
$parameters.= '&mobile='.urlencode($mobile);
$parameters.= '&msg='.urlencode($sendmessage);
$apiurl =  $smsgatewaycenter_com_url.$parameters;
$ch = curl_init($apiurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

if ($debug) {
          //echo "Response: <br><pre>" . $curl_scraped_page . "</pre><br>";
}

return($curl_scraped_page);}function smsgatewaycenter_com_OTP($length = 4, $chars = '0123456789'){
$chars_length = (strlen($chars) - 1);
$string = $chars{rand(0, $chars_length)};
for ($i = 1; $i < $length; $i = strlen($string)){
  $r = $chars{rand(0, $chars_length)};
  if ($r != $string{$i - 1}) $string .=  $r;
}
return $string;}

对不起。该平台的新功能。试图正确地编辑代码。无法做到。

`

0 个答案:

没有答案
相关问题