2016-12-03 19 views
-1

解決方法は簡単だと思っていましたが、見つけられませんでした。私は自分の登録フォームをデータベースに提出し、フォームデータを確認メールとして同じ送信ボタンを使用してユーザーの電子メールに送信します。フォームには2つのアクションがあると論理的に思われますが、私はそのような事例は見つけていません。おそらく、成功した投稿を認識し、データがデータベーステーブルに挿入されると同時に電子メールを処理するPHPファイルに送信する登録ページのPHPコードでしょうか?データベースに送信し、その情報でユーザーに確認メールを送信する登録フォーム

register.php、HTML

<?php 
session_start(); 
if (!isset($_SESSION['usr_id']) && empty($_SESSION['usr_id'])) { 
} else { 
    header('Location: mustlogout.php'); #redirect URL 
} 
?> 

<?php 

include_once 'db.php'; 

//set validation error flag as false 
$error = false; 

//check if form is submitted 
if (isset($_POST['signup'])) { 
    $name = mysqli_real_escape_string($con, $_POST['name']); 
    $user_name = mysqli_real_escape_string($con, $_POST['user_name']); 
    $email = mysqli_real_escape_string($con, $_POST['email']); 
    $password = mysqli_real_escape_string($con, $_POST['password']); 
    $cpassword = mysqli_real_escape_string($con, $_POST['cpassword']); 

$name = stripslashes($name); 
$user_name = stripslashes($user_name); 
$email = stripslashes($email); 
$password = stripslashes($password); 
$cpassword = stripslashes($cpassword); 

    if (!preg_match("/^[a-zA-Z ]+$/",$name)) { /* name can contain only alpha characters and space */ 
     $error = true; 
     $name_error = "Name must contain only letters"; 
    } 
    if (!preg_match("/^[a-zA-Z-0-9 ]+$/",$user_name)) { /* letters and numbers */ 
     $error = true; 
     $user_name_error = "User name can contain only letters and numbers"; 
    } 
    if(!filter_var($email,FILTER_VALIDATE_EMAIL)) { /* will accept only email addresses */ 
     $error = true; 
     $email_error = "Please Enter Valid Email ID"; 
    } 
    if(strlen($password) <6) { /* must be 6 or more characters */ 
     $error = true; 
     $password_error = "Password must be minimum of 6 characters"; 
    } 
    if($password != $cpassword) { /* must match the first password entry */ 
     $error = true; 
     $cpassword_error = "Password and Confirm Password doesn't match"; 
    } 
    if (!$error) { 
     if(mysqli_query($con, "INSERT INTO forumusers(name,user_name,email,password) VALUES('" . $name . "', '" . $user_name . "', '" . $email . "', '" . md5($password) . "')")) { 
      $successmsg = "Successfully Registered! <a href='login.php'>Click here to Login</a>"; /* if register is successful */ 
     } else { 
      $errormsg = "Error in registering...Please try again later!"; /* if register is not successful */ 
     } 
    } 
} 
?> 
<!doctype html> 
<html><!-- InstanceBegin template="/Templates/index.dwt" codeOutsideHTMLIsLocked="false" --> 
<head> 

register.php上記のPHPは、フォームはHTML

<!-- InstanceBeginEditable name="EditRegion3" --> 
<div class="title-bar"><n6>Forum Registration</n6></div> 
    <div class="main-content"> 
<div class="form-reg" style="margin-bottom: 4em;"><!-- Begin div to contain form --> 
      <table width="50%" style="padding-left: 20px;"> 

<form role="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="signupform"> 
    <fieldset> 
    <tr> 
     <td> 
     <div style="margin-top: 0px; margin-bottom: 5px;"> 
      <label for="name" class="formfield-names">Name</label> 
      <input type="text" name="name" placeholder="Enter Your Full Name" required value="<?php if($error) echo $name; ?>" class="form-control" /> 
      <span class="text-danger"><?php if (isset($name_error)) echo $name_error; ?></span> 
     </div> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <div style="margin-top: 0px; margin-bottom: 5px;"> 
      <label for="name" class="formfield-names">User Name</label> 
      <input type="text" name="user_name" minlength="5" maxlength="15" placeholder="5 to 15 Letters/Numbers" required value="<?php if($error) echo $user_name; ?>" class="form-control" /> 
      <span class="text-danger"><?php if (isset($user_name_error)) echo $user_name_error; ?></span> 
     </div> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <div style="margin-top: 10px; margin-bottom: 5px;"> 
      <label for="name" class="formfield-names">Email</label> 
      <input type="text" name="email" placeholder="Enter a Valid Email" required value="<?php if($error) echo $email; ?>" class="form-control" /> 
      <span class="text-danger"><?php if (isset($email_error)) echo $email_error; ?></span> 
     </div> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <div style="margin-top: 10px; margin-bottom: 5px;"> 
      <label for="name" class="formfield-names">Password</label> 
      <input type="password" name="password" minlength="6" maxlength="16" placeholder="6 to 16 Chracters" required class="form-control" /> 
      <span class="text-danger"><?php if (isset($password_error)) echo $password_error; ?></span> 
     </div> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <div style="margin-top: 10px; margin-bottom: 5px;"> 
      <label for="name" class="formfield-names">Confirm Password</label> 
      <input type="password" name="cpassword" placeholder="Confirm Password" required class="form-control" /> 
      <span class="text-danger"><?php if (isset($cpassword_error)) echo $cpassword_error; ?></span> 
     </div> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <div style="margin-top: 10px; margin-bottom: 5px;"> 
      <input type="submit" name="signup" value="Register" class="button" /> 
     </div> 
    </fieldset> 
</form> 
     </td> 
    </tr> 
    <tr><td><div style="margin-top: 10px; margin-bottom: 5px;" class="formfield-names">Already Registered? <a href="login.php">Login Here</a></div></td></tr> 
</table> 
<span class="formfield-names"><?php if (isset($successmsg)) { echo $successmsg; } ?></span> 
<span class="formfield-names"><?php if (isset($errormsg)) { echo $errormsg; } ?></span> 

</div><!-- End div to contain form --> 
</div> 
<!-- InstanceEndEditable --> 

に私がどのように「 "二つのボタンを持つフォーム" の多くを発見し、様々な「データベースにフォームを送信する」、「フォームでメールを送信する方法」、さまざまな確認メッセージが表示され、2つのアクションで見つかったメッセージが不完全であるように見えます。ヘルプは非常に高く評価されます。

+0

登録が処理されるスクリプトと同じスクリプトから電子メールを送信できませんか? – bugfroggy

+0

挿入が成功したときに電子メールを送信するだけですか?それは本当にロケット科学ではありませんか? '$ successmsg'変数の直下に' mail(// info goes here) 'を追加してください – junkfoodjunkie

+0

来なさい!データベースのクエリが成功したことを確認したら、電子メールを送信してください。大したことではないし、第二の行動は必要ありません。1つのPHPファイルで複数のことができます –

答えて

0

これはかなり簡単な質問です。コードを作成する前にプロセスを考えてみる必要があります。

some code .... 

     if(mysqli_query($con, "INSERT INTO forumusers(name,user_name,email,password) VALUES('" . $name . "', '" . $user_name . "', '" . $email . "', '" . md5($password) . "')")) { 
      $successmsg = "Successfully Registered! <a href='login.php'>Click here to Login</a>"; /* if register is successful */ 

// add email here. 

     } 

some code .... 
0

フォームが2つのアクション

action属性は、データが送られる先のURLを決定しなければならないこと論理的なようです。 HTMLは複数の場所にデータを送信するようには設計されていません(一度に1ページずつ表示するように調整されているため)。

データで複数のことを行う場合は、そのURLのプログラムを複数のことを行うだけで済みます。

既存のPHPはすでに二つのことを行います。データベース

  • プットバック
  • はあなただけ送信するためにコードを挿入する必要がブラウザにHTMLページに

    • 挿入データを同じプログラムに電子メールを送ります。


      成功提出を認識し、データがデータベーステーブル

      に挿入されているのと同時に、電子メールを処理するPHPファイルへデータを送信する登録ページで、おそらくいくつかのPHPコード

      論理的にグループ化された小さなチャンクにコードを分割したい場合は、インクルード、関数、クラスを使用できます。

    関連する問題