首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一个页面的不同部分之间发送消息?

如何在一个页面的不同部分之间发送消息?
EN

Stack Overflow用户
提问于 2012-07-10 11:52:30
回答 3查看 127关注 0票数 0

基本上,在以下代码中:

代码语言:javascript
复制
<?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部分之前)的消息。这意味着当用户完成注册时,将显示消息,而不是正文部分中的字段(Name、UserName、Email等...)。

要说明它,请执行以下操作:

如果注册是有效的,我想要消息:

代码语言:javascript
复制
Thank you for registering! A confirmation email has been     sent to '.$email1.' Please click on the Activation Link to Activate your account

显示在正文部分(而不是字段)。

我希望你能理解我的解释。

EN

回答 3

Stack Overflow用户

发布于 2012-07-10 11:56:26

在php部分将一个变量设为regSuccess,根据用户注册是否成功,将其设置为true或false。

然后在html部分,检查if条件中该变量的值,并输出相应的html。

代码语言:javascript
复制
<?php
if($regSuccess == TRUE) {
?>
    Thank you message
<?php
} 
else 
{ ?>
    the input fields
<?php 
} ?>
票数 3
EN

Stack Overflow用户

发布于 2012-07-10 11:59:05

使用$_SESSION变量来指示用户已成功注册。您将在页面上启动一个会话,并在执行其他操作之前检查是否设置了该值。如果该变量存在,则显示激活消息,否则提供注册字段并继续您现有的代码。

使用$_SESSION的原因是持久化页面请求之间的状态信息。

代码语言:javascript
复制
<?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;
...
}

?>
票数 0
EN

Stack Overflow用户

发布于 2012-07-10 11:59:23

您可以创建一个变量来存储错误消息,而不是直接回显它。并在<body>中添加一个'IF‘大小写,用于验证发生错误,回显错误,否则打印注册表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11406354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档