我有一个自定义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;}
对不起。该平台的新功能。试图正确地编辑代码。无法做到。
`