2017-03-12 52 views
0

我創建了註冊表單以及相應的控制器和後臺php代碼。 註冊數據正確存儲。但我不會在我的電子郵件ID中接收郵件。請幫我這個..如何使用angularjs和php發送電子郵件驗證?

我的HTML代碼

<div class="col-lg-6 col-lg-offset-3 well " style="margin-top:1em; background-color:black; "> 
 

 
    <h4 style="color:white; text-align:center;"> <strong> FILL UP REGISTRAION FORM </strong> </h4> 
 

 
</div> 
 

 

 
<div class="col-lg-6 col-lg-offset-3 well" style="margin-bottom:10em;"> 
 

 
    <form name="register" ng-app="TempleWebApp" ng-controller="RegisterCtrl" ng-submit="SignUp(register.$valid)" novalidate> 
 

 
    <!-- First Name --> 
 
    <div class="form-group col-lg-6" ng-class="{ 'has-error' : register.fname.$invalid && (register.fname.$dirty || submitted)}"> 
 
     <label>First Name</label> 
 
     <input class="form-control" type="text" name="fname" ng-model="fname" placeholder="First Name" ng-required="true"> 
 
     <span class="help-block" ng-show="register.fname.$invalid && register.fname.$error.required && (register.fname.$dirty || submitted)"> 
 
\t \t \t \t   First Name is required.</span> 
 
    </div> 
 

 
    <!-- Last Name --> 
 
    <div class="form-group col-lg-6" ng-class="{ 'has-error' : register.lname.$invalid && (register.lname.$dirty || submitted)}"> 
 
     <label>Last Name</label> 
 
     <input class="form-control" type="text" name="lname" ng-model="lname" placeholder="Last Name" ng-required="true"> 
 
     <span class="help-block" ng-show="register.lname.$invalid && register.lname.$error.required && (register.lname.$dirty || submitted)"> 
 
\t \t \t \t   Last Name is required.</span> 
 
    </div> 
 

 
    <!-- City --> 
 
    <div class="form-group col-lg-6" ng-class="{ 'has-error' : register.city.$invalid && (register.city.$dirty || submitted)}"> 
 
     <label>City</label> 
 
     <input class="form-control" type="text" name="city" ng-model="city" placeholder="City" ng-required="true"> 
 
     <span class="help-block" ng-show="register.city.$invalid && register.city.$error.required && (register.city.$dirty || submitted)"> 
 
\t \t \t \t   City is required.</span> 
 
    </div> 
 

 
    <!-- Gender --> 
 
    <div class="form-group col-lg-6" ng-class="{ 'has-error' : register.gender.$invalid && (register.gender.$dirty || submitted)}"> 
 
     <label>Gender</label> <br> 
 
     <input type="radio" name="gender" ng-model="gender" value="male" ng-required="true"> Male 
 
     <input type="radio" name="gender" ng-model="gender" value="female" ng-required="true" style="margin-left:5em;"> Female 
 
     <span class="help-block" ng-show="register.gender.$invalid && register.gender.$error.required && (register.gender.$dirty || submitted)"> 
 
\t \t \t \t   Gender is required.</span> 
 
    </div> 
 

 

 
    <!-- Email --> 
 
    <div class="form-group col-lg-12" ng-class="{ 'has-error' : register.email.$invalid && (register.email.$dirty || submitted)}"> 
 
     <label>Email</label> 
 
     <input class="form-control" type="text" name="email" ng-model="useremail" placeholder="Email" ng-pattern="/^[^\[email protected]][email protected][^\[email protected]]+\.[^\[email protected]]{2,}$/" ng-required="true"> 
 
     <span class="help-block" ng-show="register.email.$invalid && register.email.$error.required && (register.email.$dirty || submitted)"> 
 
\t \t \t \t   Email is required.</span> 
 
     <span class="help-block" ng-show="register.email.$error.pattern"> 
 
\t \t \t \t   Enter Valid Email .</span> 
 
    </div> 
 

 

 
    <!-- Password --> 
 
    <div class="form-group col-lg-6" ng-class="{ 'has-error' : register.password.$invalid && (register.password.$dirty || submitted)}"> 
 
     <label>Password</label> 
 
     <input class="form-control" type="password" name="password" ng-model="userpassword" placeholder="Password" ng-required="true"> 
 
     <span class="help-block" ng-show="register.password.$invalid && register.password.$error.required && (register.password.$dirty || submitted)"> 
 
\t \t \t \t   Password is required.</span> 
 
    </div> 
 

 
    <!-- CONFIRM PASSWORD --> 
 
    <div class="form-group col-lg-6" ng-class="{ 'has-error' : register.confirmPassword.$invalid && (register.confirmPassword.$dirty || submitted)}"> 
 
     <label>Confirm Password</label> 
 
     <input type="Password" name="confirmPassword" class="form-control" ng-model="confirmPassword" placeholder="Confirm Your Password" ng-compare="password" ng-required="true"> 
 
     <p ng-show="register.confirmPassword.$error.required && (register.confirmPassword.$dirty || submitted)" class="help-block">confirm password is required.</p> 
 
     <p ng-show="register.confirmPassword.$error.compare && (register.confirmPassword.$dirty || submitted)" class="help-block">Confirm password doesnot match.</p> 
 
    </div> 
 

 
    <div class="col-lg-12 well " ng-repeat="error in errors" style="background-color:red; margin-top:0.5em;"> {{ error}} </div> 
 
    <div class="col-lg-12 well" ng-repeat="msg in msgs" style="margin-top:0.5em;"> 
 
     <h5 style="color:green;">{{ msg}} </h5> 
 
    </div> 
 

 

 
    <button type="submit" class="btn btn-success col-lg-12"> 
 
\t \t \t \t <span ng-show="searchButtonText == 'REGISTERING'"><i class="glyphicon glyphicon-refresh spinning"></i></span> 
 
        {{ searchButtonText }} 
 
\t \t \t \t </button> 
 

 

 
    </form> 
 
</div>

我控制器

app.controller( 'RegisterCtrl',函數($範圍,$位置,$ http,$ timeout){

  $scope.gender = ''; 


      $scope.errors = []; 
      $scope.msgs = []; 
      $scope.searchButtonText = "REGISTER DETAILS"; 
      $scope.test = "false"; 


      $scope.SignUp = function(isValid) { 

       // Set the 'submitted' flag to true 
       $scope.submitted = true; 
       $scope.errors.splice(0, $scope.errors.length); // remove all error messages 
       $scope.msgs.splice(0, $scope.msgs.length); 



       if (isValid) { 

       $http.post('php/register.php', 
          { 'fname': $scope.fname, 
           'lname': $scope.lname, 
           'city': $scope.city, 
           'gender': $scope.gender, 
           'pswd' : $scope.userpassword, 
           'email': $scope.useremail 
          }) 
        .success(function(data, status, headers, config) { 
         if (data.msg != '') 
         { 
         $scope.msgs.push(data.msg); 
         $scope.test = "true"; 
         $scope.searchButtonText = "REGISTERING"; 
         //var goTopayment = function() { $scope.searchButtonText = "REGISTER DETAILS"; $location.path('/login'); }; 
         // $timeout(goTopayment, 3000); 
         } 
         else 
         { 
         $scope.errors.push(data.error); 
         } 
        }) 
        .error(function(data, status) { // called asynchronously if an error occurs or server returns response with an error status. 

        $scope.errors.push(status); 
        }); 
      } // closing bracket for IF(isvalid) 

     } // closing bracket for $scope.SIGNUP = function 

}); //閉架的寄存器

我的PHP代碼是

<?php 
 

 
$data = json_decode(file_get_contents("php://input")); 
 

 
$fname = mysql_real_escape_string($data->fname); 
 
$lname = mysql_real_escape_string($data->lname); 
 
$city = mysql_real_escape_string($data->city); 
 
$gender = mysql_real_escape_string($data->gender); 
 
$upswd = mysql_real_escape_string($data->pswd); 
 
$uemail = mysql_real_escape_string($data->email); 
 

 

 
$con = mysql_connect('localhost', 'root', ''); 
 
mysql_select_db('registraion', $con); 
 

 
$qry_em = 'select count(*) as cnt from users where Email ="' . $uemail . '"'; 
 
$qry_res = mysql_query($qry_em); 
 
$res = mysql_fetch_assoc($qry_res); 
 

 

 

 
if($res['cnt']==0){ 
 
$qry = 'INSERT INTO users (Firstname,Lastname,City,Gender,Password,Email) values 
 
       ("' . $fname . '","' . $lname . '","' . $city . '","' . $gender . '","' . $upswd . '","' . $uemail . '")'; 
 
\t \t \t  
 
$qry_res1 = mysql_query($qry); 
 

 
    if (!$qry_res1) { 
 
\t \t \t die('Invalid query: ' . mysql_error()); 
 
\t \t } else { 
 
\t \t \t return mysql_insert_id(); 
 
\t \t } 
 
\t 
 
\t 
 
\t $current_id = mysql_insert_id(); //last insert id \t \t \t  
 

 
    
 
    if(!empty($current_id)) { 
 
\t \t \t \t $actual_link = "http://localhost/angular/php/"."activate.php?uid=" . $current_id; 
 
\t \t \t \t 
 
\t \t \t \t $EmailTo = $uemail ; 
 
\t \t \t \t $Subject = "User Registration Activation Email"; 
 
\t \t \t \t $Content = "Click this link to activate your account. <a href='" . $actual_link . "'>" . $actual_link . "</a>"; 
 
\t \t \t \t $MailHeaders = "From: Admin\r\n"; 
 
\t \t \t \t $success = mail($EmailTo, $Subject, $Content, $MailHeaders); 
 
\t \t \t \t 
 
\t \t \t \t 
 
\t \t \t \t if($success) { 
 
\t \t \t \t \t 
 
\t \t \t   $arr = array('msg' => "You have registered and the activation mail is sent to your email. Click the activation link to activate you account.", 'error' => ''); 
 
        $jsn = json_encode($arr); 
 
        print_r($jsn); 
 
\t \t \t \t \t 
 
\t \t \t \t } 
 
\t \t \t \t } 
 
    
 
} 
 

 

 
else 
 
{ 
 
    $arr = array('msg' => "", 'error' => 'User Already exists with same email'); 
 
    $jsn = json_encode($arr); 
 
    print_r($jsn); 
 
} 
 
?>

+0

Sry基因現在更新... –

+0

你收到來自'mail'功能的錯誤? –

+0

沒有郵件功能沒有返回任何錯誤。 –

回答

0

最後我解決它。問題是找到$ current_id變量的最後插入的id值。因爲我沒有得到這個變量的正確值,所以$ Emailto變量的值沒有被分配給電子郵件ID。所以我將php代碼改爲以下方式。

<?php 
 

 
$data = json_decode(file_get_contents("php://input")); 
 

 
$fname = mysql_real_escape_string($data->fname); 
 
$lname = mysql_real_escape_string($data->lname); 
 
$city = mysql_real_escape_string($data->city); 
 
$gender = mysql_real_escape_string($data->gender); 
 
$upswd = mysql_real_escape_string($data->pswd); 
 
$uemail = mysql_real_escape_string($data->email); 
 

 

 
$con = mysql_connect('localhost', 'root', ''); 
 
mysql_select_db('registraion', $con); 
 

 
$qry_em = 'select count(*) as cnt from users where Email ="' . $uemail . '"'; 
 
$qry_res = mysql_query($qry_em); 
 
$res = mysql_fetch_assoc($qry_res); 
 

 

 

 
if($res['cnt']==0){ 
 
$qry = 'INSERT INTO users (Firstname,Lastname,City,Gender,Password,Email) values 
 
       ("' . $fname . '","' . $lname . '","' . $city . '","' . $gender . '","' . $upswd . '","' . $uemail . '")'; 
 
\t \t \t  
 
$qry_res1 = mysql_query($qry); 
 

 
\t 
 
\t //changed current_id value finding method. 
 
\t $current_id = mysql_query("select uid from users ORDER BY uid DESC LIMIT 1"); //last insert id \t \t \t  
 

 
    
 
    if(!empty($current_id)) { 
 
\t \t \t \t 
 
\t \t \t \t $actual_link = "http://localhost/angular/php/"."activate.php?uid=" . $current_id; 
 
\t \t \t \t 
 
\t \t \t \t $EmailTo = $uemail; 
 
\t \t \t \t $Subject = "User Registration Activation Email"; 
 
\t \t \t \t $Content = "Click this link to activate your account. <a href='" . $actual_link . "'>" . $actual_link . "</a>"; 
 
\t \t \t \t $MailHeaders = "From: Admin\r\n"; 
 
\t \t \t \t 
 
\t \t \t \t if(mail($EmailTo, $Subject, $Content, $MailHeaders)) { 
 
\t \t \t \t \t 
 
\t \t \t   $arr = array('msg' => "You have registered and the activation mail is sent to your email. Click the activation link to activate you account.", 'error' => ''); 
 
        $jsn = json_encode($arr); 
 
        print_r($jsn); 
 
\t \t \t \t \t 
 
\t \t \t \t } 
 
\t \t \t \t } 
 
    
 
} 
 

 

 
else 
 
{ 
 
    $arr = array('msg' => "", 'error' => 'User Already exists with same email'); 
 
    $jsn = json_encode($arr); 
 
    print_r($jsn); 
 
} 
 
?>