0

我正在尝试清除已使用 PHP 会话填充的表单。

   Your name: <input type="text" name="name" 
       value="<?php echo($_SESSION['username'])?>" >
   Your email address: <input type="text" name="email" 
       value="<?php echo($_SESSION['email'])?>">
   <br>
       <textarea name="story" cols="60" rows="10">
   <?php echo($_SESSION['story']); ?>
       </textarea> 
   <br>
   <input type="submit" value="Submit"/><input type="reset" value="Reset">

问题是当我点击重置按钮时,表单并没有清除。

我想我需要使用 session_unset 命令,但无论我把它放在哪里,表格都会在按下重置按钮之前被清除。

如何结合 session_unset 和重置按钮?

4

2 回答 2

1

你可以通过两种方式做到这一点。您可以开始给两个提交按钮一个名称,然后制作一个 PHP 脚本,通过

<?php if(isset($_POST['reset']){unset($_SESSION['username'],$_SESSION['email']);} ?>

然后当然将 Value 更改为<?=$_SESSION['username'];?>and <?=$_SESSION['email'];?>- 因为如果两个会话包含任何内容,它只会显示 value。

否则,您可以使用 JQuery 来完成。

编辑:

^ 你当然也应该取消设置$_SESSION['story'](一开始没看到)

编辑2:

$(document).ready(function(e) {
    $("form input[type=reset]").click(function(e) {
        $("form input[name=name]").attr("value","");
        $("form input[name=email]").attr("value","");
        $("form textarea[name=story]").attr("value","");
        return false;
    });
});

或者,如果您希望它重置基于文本的“任何内容”:

$(document).ready(function(e) {
    $("form input[type=reset]").click(function(e) {
        $("form input[type=text], form input[type=email], form input[type=password], form textarea").attr("value","");
        return false;
    });
});

^ 如果您愿意,请添加更多选项 :)

于 2013-04-04T01:24:21.247 回答
0

我认为“重置”按钮会将表单重置为从服务器接收到的方式。所以这可能就是它不起作用的原因。它与数据一起接收,因此按钮恢复到其原始状态。不过我可能是错的,以前没有尝试过。

顺便说一句,要取消设置 $_SESSION,您可以这样做

unset($_SESSION['specific']);

或者你可以摧毁整个事情。

session_destroy();
于 2013-04-04T01:24:11.620 回答