0

基本的に、次のコードで:

<?php
$hostname = '';
$username = '';
$password = '';
$dbn = '';
try {
$dbh = mysqli_connect($hostname , $username, $password ,$dbn);
//echo 'Connected to database';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
if (isset($_POST['formsubmitted'])) {
$fullname = $_POST['fullname'];
$username = $_POST['username'];
$email1 = $_POST['email1'];
$password1 = $_POST['password1'];
$dob = $_POST['dob'];
$query_verify_email = "SELECT * FROM User  WHERE Email = '$email1'";
$result_verify_email = mysqli_query($dbh, $query_verify_email);
if (!$result_verify_email) {//if the Query Failed ,similar to             if($result_verify_email==false)
echo ' Database Error Occured ';
}
if (mysqli_num_rows($result_verify_email) == 0) { // IF no previous user is using this     email .
// Create a unique  activation code:
$activation = md5(uniqid(rand(), true));
//$id= uniqid();
$query_insert_user = "INSERT INTO `User` ( `Name`, `Username`, `Email`, `Password`,     `DOB`, `Activation`) VALUES ( '$fullname', '$username', '$email1', '$password1', '$dob',     '$activation')";
$result_insert_user = mysqli_query($dbh, $query_insert_user);
if (!$result_insert_user) {
echo 'Query did not work ';
}
if (mysqli_affected_rows($dbh) == 1) { //If the Insert Query was successfull.
// Send the email:
$message = " To activate your account, please click on this link:\n\n";
$message .= 'http://website' . '/active.php?email=' . urlencode($email1) . "&key=$activation";
mail($email1, 'Registration Confirmation', $message, 'From: a@b.com');
// Flush the buffered output.
// Finish the page:
echo '<div class="success">Thank you for registering! A confirmation email has been     sent to '.$email1.' Please click on the Activation Link to Activate your account </div>';
} else { // If it did not run OK.
echo '<div class="errormsgbox">You could not be registered due to a system error. We     apologize for any inconvenience.</div>';
}
} else { // The email address is not available.
echo    '<div class="errormsgbox" >That email address has already been registered.
</div>';
}
mysqli_close($dbh);//Close the DB Connection
}// End of the main Submit conditional.
?>
<html>
<head>
</head>
<body>
    <form name="f1" action="Main.php" method="post">
        <p>Full name: <br/><input class="tb10" type="text" name="fullname" /></p>
        <p>Username: <br/><input class="tb10" type="text" id="username"     name="username" /><br/>
        <p>Email: <br/><input class="tb10" type="text" id="email1" name="email1" /></p>
        <p>Re-Enter Email: <br/><input class="tb10" type="text" name="email2" /></p>    <br/>
        <p>Password: <br/><input class="tb10" type="password" name="password1" /></p>
        <p>Re-Enter Password: <br/><input class="tb10" type="password" name="password2"     /></p><br/>
        <p>Date of Birth: <br/><input class="tb10" type="text" name="dob" /></br><img     src="img/calendar1.gif" alt="Calendar"     onclick="displayCalendar(document.forms[0].dob,'yyyy/mm/dd',this)"/></p><br/>
        <div class="submit">
            <input type="hidden" name="formsubmitted" value="TRUE" />
            <input type="submit" value="Submit" class="button" />
        </div>                  
    </form>
</body>
</html>

問題は、本文部分の上部(html部分の前)に表示されるメッセージを表示したいということです。つまり、ユーザーが登録を完了すると、本文セクションのフィールド(名前、ユーザー名、電子メールなど)の代わりにメッセージが表示されます。

それを説明するために:

登録が有効な場合は、次のメッセージが必要です。

Thank you for registering! A confirmation email has been     sent to '.$email1.' Please click on the Activation Link to Activate your account

(フィールドではなく)ボディ部分に表示されます。

私の説明をご理解いただければ幸いです。

4

3 に答える 3

3

regSuccessユーザー登録が成功したかどうかに応じて、php 部分の変数をtrue から false に設定します。

次に、html 部分で、この変数の値をif条件でチェックし、対応する html を出力します。

<?php
if($regSuccess == TRUE) {
?>
    Thank you message
<?php
} 
else 
{ ?>
    the input fields
<?php 
} ?>
于 2012-07-10T03:56:26.480 に答える
0

$_SESSION変数を使用して、ユーザーが正常に登録されたことを示します。ページでセッションを開始し、他のことを行う前にその値が設定されているかどうかを確認します。変数が存在する場合はアクティベーション メッセージを表示し、存在しない場合は登録フィールドを指定して既存のコードを続行します。

利用する理由$_SESSIONは、ページ要求間で状態情報を保持するためです。

<?php

session_start();

if(isset($_SESSION['registered_email'])){

//Display message indicating user has already registered
echo 'Thank you for registering! A confirmation email has been sent to '. $_SESSION['registered_email'] .' Please click on the Activation Link to Activate your account';

}else{

// The rest of your code
...
// set session variable to indicate the registration was successful
$_SESSION['registered_email'] = $email1;
...
}

?>
于 2012-07-10T03:59:05.263 に答える
0

エラーメッセージを直接エコーするのではなく、エラーメッセージを格納する変数を作成できます。そして、検証が発生するエラーに「IF」ケースを追加し、<body>エラーをエコーし​​ 、そうでない場合は登録フォームを印刷します。

于 2012-07-10T03:59:22.577 に答える