提交后保留字段值 [英] Retain field values after submit

查看:85
本文介绍了提交后保留字段值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用此表单的操作来调用我的脚本,然后,如果数据库中已存在该电子邮件地址,则应显示警报.

I need the action of this form to call my script, then if the email address is already in the database it should show the alert.

这有效,但是显然我被定向到我的空白脚本页面,当我返回到表单时,数据消失了.

This works but obviously I'm directed to my blank script page and when I return to the form, the data is gone.

我想被重定向到具有完整数据的表单并显示警报.

I would like to be redirected to the form with the data intact and show the alert.

我整天都在尝试让会议开始工作,但现在我很困惑.

I've tried all day long to get sessions to work and now I'm just confused.

如果有人可以告诉我为每个页面添加会话代码的内容和位置,那么,我将不胜感激.

If someone could show me what and where to add the session code for each page, I would really appreciate it.

此页面包含我的表单:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Untitled Document</title>

    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
    <script src='http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js'></script>
    <script src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.js'></script>

    <script src="../js/register_validate.js" type="text/javascript"></script>

    <link href="../css/styles.css" rel="stylesheet" type="text/css">

    <base target="_top">
</head>

<body>

    <p><?php include ('register_form2.php') ?></p>                    

</body>
</html>

这是包含的表单页面:

<form action="register_script2.php" method="POST" name="form_register" id="form_registerID" accept-charset="UTF-8">

    <aside class="field_reg_form">

    <input name="field_email1" type="text" required id="field_email1ID" /><br /><br />
    <input name="field_email2" type="text" required id="field_email2ID" /><br /><br />
    <input type="submit" value="submit" id="submit" name="submit" />

    </aside>


</form>

这是PHP脚本:

<?php

require_once('../scripts/connect.php');

$con = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Could not connect to database server.');

if(isset($_POST['submit'])) {

    $var_Email1 = mysqli_real_escape_string($con, $_POST['field_email1']);
    $var_Email2 = mysqli_real_escape_string($con, $_POST['field_email2']);

        if ($var_Email1 == $var_Email2){

            $sql = mysqli_query($con, "SELECT * FROM membership WHERE Email = '$var_Email1' "); 

                if(mysqli_num_rows($sql) > 0 ){
                    print '<script type="text/javascript">'; 
                    print 'alert("The email address '. $_POST['field_email1'].' is already in our database")'; 
                    print '</script>'; 
                      exit();
                }

        echo "not in database";
   }

}
?>

推荐答案

是的,在这种情况下,您可以实现Flash会话(某种形式):

Yes you could implement (some kind of) a flash session in this case:

因此,提交后:

<?php

session_start(); // don't forget
require_once('../scripts/connect.php');

$con = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Could not connect to database server.');

if(isset($_POST['submit'])) {

    $var_Email1 = mysqli_real_escape_string($con, $_POST['field_email1']);
    $var_Email2 = mysqli_real_escape_string($con, $_POST['field_email2']);

    if ($var_Email1 == $var_Email2){

        $sql = mysqli_query($con, "SELECT * FROM membership WHERE Email = '$var_Email1' "); 
        if(mysqli_num_rows($sql) > 0){
            // set session
            $_SESSION['email_exists'] = $var_Email1;
            header('Location: the_starting_php.php');
            exit;
        }
    }

    echo "not in database";

}
?>

然后在表单页面中也添加它:

And then in the form page add this as well:

<?php
session_start();

// check if there is
$email = '';
if(isset($_SESSION['email_exists'])) {
    $email = $_SESSION['email_exists'];
    unset($_SESSION['email_exists']); // unset it
    echo "
      <script type='text/javascript'>
      alert('The email address $email already exists');
      </script>
    ";
}

?>


<form action="register_script2.php" method="POST" name="form_register" id="form_registerID" accept-charset="UTF-8">

    <aside class="field_reg_form">
          <input name="field_email1" type="text" required id="field_email1ID" value="<?php echo $email; ?>" />
          <br /><br />
          <input name="field_email2" type="text" required id="field_email2ID" value="<?php echo $email; ?>" />
          <br /><br />
          <input type="submit" value="submit" id="submit" name="submit" />
    </aside>

</form>

旁注:我建议使用准备好的陈述.

Sidenote: I suggest use prepared statements.

<?php

session_start(); // don't forget
require_once('../scripts/connect.php');

$con = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Could not connect to database server.');

if(isset($_POST['submit'])) {

    $var_Email1 = $_POST['field_email1'];
    $var_Email2 = $_POST['field_email2'];

    if ($var_Email1 == $var_Email2){

        $sql = 'SELECT * FROM membership WHERE Email = ?'; 
        $select = $con->prepare($sql);
        $select->bind_param('s', $var_Email1);
        $select->execute();
        if($select->num_rows > 0){
            // set session
            $_SESSION['email_exists'] = $var_Email1;
            header('Location: the_starting_php.php');
            exit;
        }
    }

    echo "not in database";

}
?>

这篇关于提交后保留字段值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆