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.

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

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度