duandian4501 2014-06-12 15:24
浏览 38
已采纳

引导程序中的表单不起作用..为什么?

For some reason, when I try to use my form in a bootstrap modal, it doesn't work. I suspect is has something to do with the PHP but I am not entirely sure.

The problem occurs when I click the submit button on the form. The document doesn't activate the php which should update the mysql, and then redirect you to another page, instead it just refreshes the current page. Keep in mind this is in a modal.

Here's what I have so far:

<?php
if(basename($_SERVER["PHP_SELF"]) == "header.php"){
    die("403 - Access Forbidden");
}
    $cookie_name = 'showmodal';
    $cookie_value = 'AlreadySawModal';
    setcookie($cookie_name, $cookie_value, time() + (43200), '/'); // 43200 = 12hr
 ?> 
<?php

if (!isset($_COOKIE[$cookie_name])) {
?>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<link href="<?php echo $siteurl; ?>assets/css/<?php echo $theme;?>.min.css" rel="stylesheet" type="text/css" />
<link href="<?phpecho $siteurl; ?>assets/css/addon.css" rel="stylesheet" type="text/css" />
<link href="<?php echo $siteurl; ?>assets/css/<?php echo $themetype; ?>.css" rel="stylesheet" type="text/css" />


    <div id="myModal" class="modal" role="dialog" aria-hidden="false">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">

                    <button class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                     <h4 class="modal-title" id="myModalTitle"> You haven't voted in the past 12 hours!? </h4>

                </div>
                <div class="modal-body" id="resize">
    <?php
    $earnedpoints  = false;
    $insertnew     = false;
    $time          = time();
    $redirect      = "";
    $account       = $mysqli->real_escape_string(preg_replace("/[^A-Za-z0-9 ]/", '', @$_POST['name']));
    $siteid        = $mysqli->real_escape_string(@$_POST['votingsite']);
    $checkacc      = $mysqli->query("SELECT * FROM accounts WHERE name = '$account'");
    $countcheckacc = $checkacc->num_rows;
    if ($countcheckacc == 0 && isset($_POST['submit'])) {
        $funct_error = "This account doesn't exist!";
    } elseif ($account == '' && isset($_POST['submit'])) {
        $funct_error = 'You need to put in a username!';
    } elseif (empty($_POST['votingsite']) && isset($_POST['submit'])) {
        $funct_error = "Please select a voting site";
    } elseif (isset($_POST['submit'])) {
        $result = $mysqli->query("SELECT *, SUM(times) as amount FROM " . $prefix . "votingrecords WHERE NOT account='' AND NOT account='0' AND account='" . $account . "' AND siteid = '" . $siteid . "'") or die('Error - Could not look up vote record!');
        $row       = $result->fetch_assoc();
        $sitequery = $mysqli->query("SELECT * FROM " . $prefix . "vote WHERE id = '" . $siteid . "'");
        $vsite     = $sitequery->fetch_assoc();
        $gvp       = $vsite['gvp'];
        $gnx       = $vsite['gnx'];
        $timecalc  = $time - $row['date'];
        if ($row['amount'] == '' || $timecalc > $vsite['waittime']) {
            if ($row['amount'] == '') {
                $result = $mysqli->query("INSERT INTO " . $prefix . "votingrecords (siteid, ip, account, date, times) VALUES ('" . $siteid . "', '" . $ipaddress . "', '" . $account . "', '" . $time . "', '1')") or die('Error - Could not insert vote records!');
            } else {
                $result = $mysqli->query("UPDATE " . $prefix . "votingrecords SET siteid = '" . $siteid . "', ip='" . $ipaddress . "', account='" . $account . "', date='" . $time . "', times='1' WHERE account='" . $account . "' AND siteid = '" . $siteid . "'") or die('Error - Could not update vote records!');
            }
            $earnedpoints = true;
            if ($earnedpoints == true) {
                if ($account != '') {
                    $result = $mysqli->query("UPDATE accounts SET $colvp = $colvp + $gvp, $colnx = $colnx + $gnx WHERE name='" . $account . "'") or die('Error - Could not update account!');
                }
                $funct_msg = '<meta http-equiv="refresh" content="0"; url=' . $vsite['link'] . '">';
                $redirect  = true;
            }
        } elseif ($timecalc < $vsite['waittime'] && $row['amount'] != '') {
            $funct_msg = 'You\'ve already voted for ' . $vsite['name'] . ' within the last ' . round($vsite['waittime'] / 3600) . ' hours!';
            $funct_msg .= '<br />Vote time: ' . date('M d\, h:i A', $row['date']);
        } else {
            $funct_error = 'Unknown Error';
        }
    }
    if ($redirect == true) {
        echo $funct_msg;
    }

    else {
?> 
<form method="post">  
    <?php
        if (isset($funct_msg)) {
            echo '<div class="alert alert-danger">' . $funct_msg . '</div>';
        }
        if (isset($funct_error)) {
            echo '<div class="alert alert-danger">' . $funct_error . '</div>';
        }
        $query = $mysqli->query("SELECT * from " . $prefix . "vote");
        if ($query->num_rows == 0) {
            echo "<div class=\"alert alert-danger\">Your administrator has not added any voting sites yet!</div>";
        }
        echo "
        <div class=\"form-group\">
        <label for=\"voteSite\">Select Site:</label>
        <select name=\"votingsite\" class=\"form-control\" id=\"voteSite\" required>
        <option value=\"\" disabled selected>Select Site...</option>";
        while ($row = $query->fetch_assoc()) {
            echo "<option value=\"" . $row['id'] . "\">" . $row['name'] . "</option>";
        }
        echo "</select>
        </div>";
        if (!isset($_SESSION['id'])) {
            echo "<input type=\"text\" name=\"name\" maxlength=\"15\" class=\"form-control\" placeholder=\"Username\" required autocomplete=\"off\"/><br/>";
        } else {
            echo "<input type=\"text\" name=\"name\" maxlength=\"15\" class=\"form-control\" placeholder=\"" . $_SESSION['name'] . "\" value=\"" . $_SESSION['name'] . "\"required autocomplete=\"off\"/><br/>";
        }
?>

    <button type="submit" name="submit" class="btn btn-primary">Vote &raquo;</button>
</form> 
<br/>
                </div>
            </div>
        </div>
    </div>

    <script> $('#myModal').modal('show'); </script>
    <?php
    }
?>
<?php
} else {
?>

<link href="<?php echo $siteurl; ?>assets/css/<?php echo $theme; ?>.min.css" rel="stylesheet" type="text/css" />
<link href="<?php echo $siteurl; ?>assets/css/addon.css" rel="stylesheet" type="text/css" />
<link href="<?php echo $siteurl; ?>assets/css/<?php echo $themetype;?>.css" rel="stylesheet" type="text/css" />

<?php
}
?>

The modal works just fine, its just the form is not submitting/executing the php code.

Any and all help appreciated!

EDIT: I was told, although not W3C valid, that action tags aren't necessary if you wanted the script to start its self. Also just learned from (According to http://www.w3schools.com/tags/att_form_action.asp the form tag is not required in HTML5 :O) So

<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post"> 

is the same as

<form method="post">
  • 写回答

1条回答 默认 最新

  • drzdu44226 2014-06-12 15:29
    关注

    Possible solutions:

    1) There's no action specified in the "form" tag?

    2) Maybe you should change

    <button type="submit">
    

    to

    <input type="submit" name="submit" value="Submit form">
    

    3) Try to add this code to see if there's really no post data, because $_POST['submit'] is not specified...

    if ($_SERVER['REQUEST_METHOD']=='POST') {
        echo "there's a post submitted";
    }
    

    4) Try to clean up your PHP code, use proper OO principles / patterns to manage forms and data.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘