【问题标题】:Block submit after reload page重新加载页面后阻止提交
【发布时间】:2013-08-18 14:10:23
【问题描述】:

我“完成”了我的评论系统,但还剩下一个问题。 在我写了评论然后重新加载页面后,评论又被发布了.. 我现在用谷歌搜索了 2~ 小时,但找不到帮助

代码:

<script type="text/javascript">
function toggle_comment(id) {
    var e = document.getElementById(id);
    if(e.style.display == 'block')
      e.style.display = 'none';
    else
      e.style.display = 'block';
}

$(function() {
  $(".submit").click(function() {

    var comment = $("#comment").val();
    var dataString = 'comment=' + comment;

    if(comment=='')
     {
    alert('Please enter at least 30 characters');
    return false
     }
    else
    {
    $.post("pages/comment.php", $("#postcommentform").serialize(),  function(data) {   });
    }
  });
});

$(function() {
  $(".login").click(function() {

    var username = $("#username").val();
    var password = $("#password").val();
    var dataString = 'username=' + username + '&password=' + password;

    if(username=='' || password=='')
     {
    alert('Login is incorrect');
    return false
     }
    else
    {
    $.post("pages/login.php", $("#postlogin").serialize(),  function(data) {   });
    }
  });
});
</SCRIPT>

<a class="sitelinksblue" onclick="toggle_comment('commentfield');" style="font-family: Verdana, Geneva, sans-serif;font-size:12px;font-weight:bolder;">+ Kommentar abgeben für Englisch Für Anfänger</a>
<BR></BR>
<?php
if(isset($_POST['submitcomment']) && $_POST['submitcomment']=="Submit") {
    if((checkComment($_POST['comment']) && strlen($_POST['comment'])>=10 && strlen($_POST['comment'])<=1500)) {

$sqlCmd = "INSERT INTO topmovies.comments 
        (username,comment,date) 
        VALUES 
        ('".mysql_real_escape_string($_SESSION['user_username'])."','".mysql_real_escape_string($_POST['comment']);."','".$sqlZeit."')";
$sqlQry = mysql_query($sqlCmd,$sqlHp);
?>
<?PHP
if (!$sqlQry) {
    die('Invalid query: ' . mysql_error());
}else { echo'Comment Added!'; }
    }else{ echo'Error! Please enter a comment with 30 or more and 1500 or less characters';}
} else { }
?>
<div id="commentfield" style="display:none">
<?PHP
if (isset($_SESSION['user_username'])){
    if($getAdmin->status=='BANN'){
        echo $lang['BANN'];
        exit();
    }else{
?>
    <form id="postcommentform" method="POST" action="">
        <p>Dein Name: <?PHP echo $_SESSION['user_username']; ?></p>
        <textarea class="textareacom" name="comment" id="comment" rows="5" cols="20" maxlength="1500" value=""></textarea><br />
        <input name="submitcomment" id="submit" type="submit" class="submit" value="Submit" />
    </form>
<?PHP
    }
}else{
?>
<FORM id="postlogin" action="" method="POST">
<p style="font-weight:bolder;">Um Kommentare schreiben zu können musst du dich zuerst einloggen</p>
<TABLE>
    <TR>
        <TD align="left"><font face="Arial" color="#000000"><?php echo $lang['REGISTER_USERNAME']; ?></TD>
        <TD align="left"><input type="text" name="username"/></TD>
    </TR>
    <TR>
        <TD align="left"><font face="Arial" color="#000000"><?php echo $lang['REGISTER_PASSWORD']; ?></TD>
        <TD align="left"><input type="password" name="password"/></TD>
    </TR>
    <TR>
        <TD></TD>
        <TD align="left"><input type="submit" id="login" value="login" name="submit" /></TD>
    </TR>
</TABLE>
<a href="index.php?s=register"><?php echo $lang['LOGIN_REGISTER']; ?></a> | <a href="index.php?s=forgotpw"><?php echo $lang['FORGOT_PW']; ?></a>
<BR></BR>
</FORM>
<?PHP
}
?>
</div>
<?php
$sql=mysql_query("select * from topmovies.comments ORDER BY date DESC");
while($row=mysql_fetch_array($sql))
{
$username=$row['username'];
$comment=$row['comment'];
$date=$row['date'];
$name=$row['name'];
?>

<div id="comments" name="comments">
<div class="comments" style="padding-top:5px;">
        <BR>
    <table width="746px" style="display:inline;" border="0" cellspacing="0" cellpadding="0">
        <tr>
        <td rowspan="4" valign="top" width="154px" style="padding-right:19px;"><img style="display: block; padding-top:10px;" src="http://img.movie4k.to/img/user_top.gif" height="8px"/>
        <span class="test"><?php echo $username; ?><br />
        <br />
        <font size=1><?PHP echo date("d-m-Y", strtotime($date))?></br>
        <?PHP echo date("H:i", strtotime($date))?></font></span>
        <img style="display: block; background-color: #AFAFAF; padding-left:10px; padding-right:10px;" src="http://img.movie4k.to/userpics/476090.gif" width=40 height=50/>
        <img style="display: block;" src="http://img.movie4k.to/img/user_bottom.gif" height="8px"/></td>
        <td colspan="2" valign="bottom" height="8px"><img style="display: block; padding-top:10px;" src="http://img.movie4k.to/img/comment_top2.gif" height="8px"/></td>
        </tr>
        <tr>
        <td rowspan="2" width="522px" class="comment" valign="top" bgcolor="#E3E3E3" style="padding-left:10px; padding-right:17px;">
        <?php echo $comment; ?>
        </td>
        <td width="85px" valign="top" bgcolor="#E3E3E3" style="font-size:19px;">
        <div style="min-height:50px;"></div>
        </td>
        </tr>
        <tr>
        <td bgcolor="#E3E3E3" valign="bottom"></td>
        </tr>
        <tr>
        <td colspan="2" valign="top" height="8px"><img style="display: block;" src="http://img.movie4k.to/img/comment_bottom2.gif" height="8px"/></td>
        </tr>
    </table>
</div>
</div>
<BR />
<?php
}
?>

有没有人看出有什么错误? 我尝试了 1 件事,但它没有显示回显“添加评论!”

【问题讨论】:

    标签: forms header submit reload


    【解决方案1】:

    用户提交表单后,php代码读取POST数据后,可以重定向到另一个页面。这样就可以解决了。

    如果您不想这样做,您可以将帖子与其他帖子进行比较,看看它是否具有相同的内容、非常接近的时间戳和相同的用户。不过我不建议这样做。

    【讨论】:

    • 我可以做到 但是我看不到“添加评论!”回声。而且我不想重定向到其他站点:/
    【解决方案2】:

    而不是做

    echo'Comment Added!';
    

    您可以将用户重定向到同一页面,从而删除 POST,并使用“标志”告诉应用刚刚添加了评论。

    例如:

    header('Location: myPage.php?commentAdded=true'); //myPage is current page
    

    然后在页面的其他地方:

    if(isset($_GET['commentAdded'])){
         echo'Comment Added!';
    }
    

    【讨论】:

    • 如果 "header()" 不起作用,你可以这样做: echo ""
    • 这是个好主意,但不会起作用,因为脚本在 comment.php 中,我在 movie.php 中包含了 comment.php,并且链接总是不同的。因为每部电影都有不同的 cmets。跨度>
    • 那么 echo ""; ?
    • 做到了,但链接转到topmovies.pw/index.php?commentAdded=true 而不是topmovies.pw/…
    • 那么也许这可以解决问题: echo "";
    猜你喜欢
    • 2015-07-04
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多