session_unset和onclick

时间:2013-04-04 01:18:12

标签: php forms session

我正在尝试清除使用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和重置按钮?

2 个答案:

答案 0 :(得分:1)

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

取消设置定义的会话

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

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

否则你可以用JQuery来做。

修改

^你当然也应该取消设置$_SESSION['story'](最初没有看到它)

<强> EDIT2:

$(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;
    });
});

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

答案 1 :(得分:0)

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

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

unset($_SESSION['specific']);

或者你可以摧毁整件事。

session_destroy();