如何在刷新页面后记住表单中的输入数据?

时间:2011-08-10 16:13:27

标签: php

为了使表单记住以前的输入或用户的当前输入,即使他/她刷新了页面,该怎么办?

我应该这样做,

            <div class="row">
             <label>Contact Messenger </label>
             <input type="text" name="messenger" id="messenger" size="50" maxlength="50" value="<?php echo $_SESSION['messenger']; ?>"/>
            </div>

            <div class="row">
             <label>Contact Messenger </label>
             <input type="text" name="messenger" id="messenger" size="50" maxlength="50" value="<?php echo $_POST['messenger']; ?>"/>
            </div>

有一个技巧吗?怎么样?

10 个答案:

答案 0 :(得分:13)

在表单提交的页面上执行类似的操作

    session_start();
    $_SESSION['data'] = $_POST['data'];
    $_SESSION['data_another'] = $_POST['data_another'];

并且您可以在任何类似的地方访问这些会话变量

    session_start(); // this should be at the top of the page before any html load
    <input type="text" name="name" value="<?php echo $_SESSION['data'];?>"/>

在此成功通话中刷新您的网页

     $.ajax({
           type: "POST",
           url: "yourfile.php",
           data: 'data='+ data,
           success: function(){
               location.reload();
           }
       });

答案 1 :(得分:3)

我在我的一个项目中遇到过类似的问题所以我写了一些js来处理这个问题。 首先,我找到了两个简单的函数来设置和获取cookie值:

function setCookie(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
    document.cookie = c_name + "=" + c_value;
}

function getCookie(c_name) {
    var c_value = document.cookie;
    var c_start = c_value.indexOf(" " + c_name + "=");
    if (c_start == -1) {
        c_start = c_value.indexOf(c_name + "=");
    }
    if (c_start == -1) {
        c_value = null;
    } else {
        c_start = c_value.indexOf("=", c_start) + 1;
        var c_end = c_value.indexOf(";", c_start);
        if (c_end == -1) {
            c_end = c_value.length;
        }
        c_value = unescape(c_value.substring(c_start, c_end));
    }
    return c_value;
}

我写了两个其他函数来设置和获取输入值:

function saveValue(input) {
    var name = input.attr('name');
    var value = input.val();
    setCookie(name,value);
}

function getValue(input) {
    var name = input.attr('name');
    var value = getCookie(name);
    if(value != null && value != "" ) {
        return value;
    }
}

使用jQuery我将用户的输入值保存到会话cookie

$('input[type=text]').each(function(){
    var value = getValue($(this));
    $(this).val(value);
}).on('blur', function(){
    if($(this).val() != '' ) {
        saveValue($(this));
    }
});

我希望它会有所帮助;)

答案 2 :(得分:2)

这完全取决于字段中数据的来源。 如果您的场景是您正在呈现一个空白表单,用户输入一些数据然后不提交它,刷新页面,您无能为力。这是由浏览器来处理的。

你可能会在那里做一些非常奇怪的JavaScript黑客攻击,但我不建议这样做。

另一方面,如果您的数据来自上一页或类似的内容,那就是另一回事。但是你需要告诉我们数据的来源,所以我可以给你一个合理的答案。

答案 3 :(得分:1)

如果您的意思是,填写表单字段并单击刷新,则没有直接的方法,因为数据未提交。这种行为取决于浏览器。

您可以做的唯一事情是在字段更改时通过AJAX将数据发布回您的服务器。接收数据的PHP脚本会设置一些会话变量。加载表单时,您可以将其默认值设置为适当的会话值。

很少有需要这种行为。将有许多请求来回发送到您的服务器。

答案 4 :(得分:0)

您的任何建议都不会帮助您在刷新后“记住”数据(不向服务器发送数据的操作)。你需要的是通过javascript(也许使用onkeyup事件类型)获取数据并使用cookie获取它。使用jquery非常容易。

答案 5 :(得分:0)

会话是存储和记忆数据的好方法,但为什么会使事情变得复杂?考虑表单是否包含许多字段,开发人员必须在会话中存储大量值。为什么不简单地打印或回声。

示例:

使用输入ssName和隐藏字段ssAct提交表单,其值为send

在表单提交上获取ssName和ssAct

$ssAct=$_REQUEST["ssAct"];
$ssName=$_REQUEST["ssName"];

和表格

<input type="text" name="ssName" value="<?php if($ssAct=='send' && $ssName!='') { echo "$ssName"; } ?>">
<input type="hidden" name="ssAct" value="send">

提交名称将在提交时回显,且不为空。

答案 6 :(得分:0)

尝试使用属性autocomplete,也许它可以在某些浏览器上运行...

<input type="text" autocomplete="on" />

您也可以为form使用自动填充功能。

答案 7 :(得分:0)

要检查一些主要问题,以便在刷新或任何事件处理程序后显示数据:

1)注意签名。它必须包含方法=&#34; post&#34;属性如下:

    <form method="post"/>

否则使用$ _POST [&#39;信使&#39;]将无效。

表单中method属性的默认值为get。

    <form>  equals to  <form method="get">

2)许多程序员在属性 id name 之间进行混合。 请注意使用正确的属性。 $ _POST关联数组使用名称从中获取数据。这就是为什么下一个示例无法正常工作

    <input type="text" id="data" value="<?php echo isset($_POST['data']) ? $_POST['data'] : "" )?/>"

要使其正常工作,您必须添加属性名称=&#34;数据&#34;如下:

    <input type="text" name="data" id="data" value="<?php echo isset($_POST['data']) ? $_POST['data'] : "" )?/>"
祝你好运

答案 8 :(得分:0)

您也可以不使用以下代码进行会话:

<input type="text" name="Fname" value="<?php if(isset($_POST['Fname'])){ echo $_POST['Fname']; } ?>" /><br/>

这会将输入框内的输入数据保留下来!

答案 9 :(得分:0)

将详细信息发布到会话中后,在值中输入以下内容

<?php print $_SESSION['messenger'] ?>

如果您在同一文件中同时编写php和HTML,则可以这样做

<?php print $messenger] ?>