【问题标题】:display user entered data in the form before submitting to database在提交到数据库之前在表单中显示用户输入的数据
【发布时间】:2019-04-28 16:36:48
【问题描述】:

我有一个用户表单,用户可以在其中输入他的数据。用户输入数据后,我应该在提交到数据库之前显示它以供他确认。 我已经写了一个代码。如果我显示数据以供用户确认,确认后它不会被存储。如果我直接提交到数据库,它将被存储。

请查看我的代码并帮助我在哪里做错了。

这是我的表格

<form name="registration_form" method="post" action="user_confirm.php" 
    onsubmit="return Validate();">
    User Name:
<input type="text" name="username"/><br /><br />

    Password: 
    <input type="password" name="password" /><br /><br />
    Retype Password: 
    <input type="password" name="password_confirmation"><br /><br />
    Name:
    <input type="text" name="name" /><br /><br />
    Phone Number: 
    <input type="text" name="phone_number"><br />
    <br />
<input type="submit" value="Click here to confirm"  /><br />

    </form>

这是我的 user_confirm.php

<?php
$username= $_POST['username'];
$name = $_POST['name'];
$phone_numbe = $_POST['phone_numbe'];

echo $username "<br>";
echo $name "<br>";
echo $phone_number " <br>";
?>

<form action="register2_db.php" method="post">
<input type="hidden" name="redirect_values" value="true"> 
<input type="submit" name="confirm" value="Confirm Details">
<input type="button" name="return" value="Return to data" onClick="javascript: window.history.back(-1)";>
</form>

为什么这个值在确认后没有被存储到数据库中?

这是我的 register2_db.php

<?

$host="localhost"; // Host name 
$username="fissioni"; // Mysql username 
$password="password("; // Mysql password 
$db_name="fissioni_test"; // Database name 
$tbl_name="members"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$query = 'insert into members (username,password,name,phone_number) 
                    values
                    (
                    "' . $_POST['username'] . '", 
                    "' . md5($_POST['password']) . '",
                    "' . $_POST['name'] . '",
                    "' . $_POST['phone_number'] . '",
                    )';

$result = mysql_query($query);

if($result){
    echo '<h1>Thank you</h1> <br> Go back to the main page <a href="index.html");';
}else{
    echo "ERROR: ".mysql_error(); 
}

?>

【问题讨论】:

  • 你在数据库中的什么地方存储一些东西?
  • 他们为什么要这样做?将值存储到 db 的代码在哪里?
  • 你插入数据库的文件是什么?你能告诉我们表单html和插入数据库代码吗?
  • 这是我的 register2_db(将值存储到 DB)

标签: php


【解决方案1】:

这是因为您的确认值都不在表单本身中。您只是将一个空表单发送到您的 PHP 文件。如下修改您的确认表单以将这些值包含在隐藏的文本字段中将为您修复它。

<form action="register2_db.php" method="post">
<input type="hidden" name="name" value="<?php echo $name?>"> 
<input type="hidden" name="password" value="<?php echo $password?>"> 
<input type="hidden" name="username" value="<?php echo $username?>"> 
<input type="hidden" name="phone_number" value="<?php echo $phone_number?>"> 

<input type="hidden" name="redirect_values" value="true"> 
<input type="submit" name="confirm" value="Confirm Details">
<input type="button" name="return" value="Return to data" onClick="javascript: window.history.back(-1)";>
</form>

【讨论】:

  • 在您的代码中,value="&lt;?php echo htmlspecialchars($name); ?&gt;"。每当您回显到 HTML 时,您都应该转义。
  • @Thai 我明白你的意思。我的字面意思是 OP 应该按照你的建议去做。包括其他东西,如 mysql 转义和其他验证,这会使答案复杂化。
【解决方案2】:

$_POST 中的值仅保留给下一个请求,因此要将这些值发送到另一个页面,您有两种方法。
1. 将提交的数据放入隐藏字段,点击“确认”后会再次发送。
2. 将数据保存在会话中,并在需要时获取。

【讨论】:

    【解决方案3】:

    您已在第一页创建。但我认为你还没有在 user_confirm.php 上创建它。

    在 user_confirm.php 上以隐藏格式传递所有元素 例如

    <form action='final.php' method = 'POST'>
    <input type = 'hidden' name = 'username' value='<?php echo $username;?>' />
    ....
    </form>
    <?php
    echo $username "
    "; echo $name "
    "; echo $phone_number "
    "; 
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2013-02-04
      • 2014-03-25
      相关资源
      最近更新 更多