【问题标题】:Multiple Post Forms in single php page causing problems单个php页面中的多个帖子表单导致问题
【发布时间】:2017-04-08 12:12:21
【问题描述】:

我在一个 php 页面上有多个表单。一个 index.php 页面上的登录表单、注册表单和发布状态表单。 当我点击一个表单的提交按钮时,所有表单似乎都已提交。 当我没有登录并尝试使用发布状态表单发布状态时,我得到了预期的“未登录”错误,但是当我看到其他表单时,我得到如下 php 代码错误...

注意:未定义的索引:uname 注意:未定义索引:通过

我应该如何处理这个问题? if(isset($_POST['submit'])) 似乎是导致问题的原因。我对php很陌生。如果我错了,请帮助并纠正我。

我的代码:

<div id="myModal1" class="modal1">
            <div class="modal-content">
                <span class="close" onclick="login_modal_hide()">&times;</span>
                <section id="signin">
                    <h1>Sign In</h1>
                    <form method="POST">
                        <input type="text" name="username" placeholder="Username"><p></p>
                        <input type="password" name="password" placeholder="Password"><p></p>
                        <input type="submit" value="SIGN IN"><p></p>
                        <a href="#">Forgot Password?</a>
                        <?php
                            session_start();
                            include("config.php");
                            if($_SERVER["REQUEST_METHOD"] == "POST") {
                                $uname = mysqli_real_escape_string($dbc,$_POST['username']);
                                $pass = mysqli_real_escape_string($dbc,$_POST['password']);

                                $query = "SELECT uname FROM users WHERE uname = '$uname' and pass = '$pass'";
                                $result = mysqli_query($dbc,$query);
                                $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
                                //$active = $row['active'];

                                $count = mysqli_num_rows($result);
                                if($count == 1) {
                                $_SESSION['uname']="uname";
                                $_SESSION['login_user'] = $uname;

                                header("location: welcome.php");
                                }else {
                                    echo "<p class='error'>Your Login Name or Password is invalid</p>";
                                }
                            }
                        ?>
                    </form>
                </section>
            </div>
        </div>
        <!-- Modal SignUP form -->
        <div id="myModal2" class="modal2">
            <div class="modal-content">
                <span class="close" onclick="signup_modal_hide()">&times;</span>
                <?php
                    $unameErr = $passErr = $emailErr = "";
                    if(isset($_POST['submit'])) {
                        $uname = test_input($_POST['uname']);
                        $email = test_input($_POST['email']);
                        $pass = $_POST['pass'];

                        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; }
                        else if(!preg_match('/^[A-Za-z][A-Za-z0-9]{2,31}$/',$uname)) { $unameErr = "Invalid username format (Must start with letter; 3-32 characters; Letters and numbers only)"; }
                        else if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $pass)) { $passErr = "Invalid Password format (Must contain at least 1 number and 1 letter; Must be 8-12 characters)"; }
                        else {
                            $dbc = mysqli_connect('localhost', 'root', '', 'DATA') or die('Error connecting to MySQL server!');
                            $query = "INSERT INTO users (uname, email, pass, status, xp) VALUES('$uname', '$email', '$pass', '0', '100')";
                            $result = mysqli_query($dbc, $query) or die('Error querying database!');
                            echo 'Thanks for Signing UP! Welcome '.$uname.'!';
                            mysqli_close($dbc);
                        }

                    }
                    function test_input($data) {
                        $data = trim($data);
                        $data = stripslashes($data);
                        $data = htmlspecialchars($data);
                        return $data;
                    }
                ?>
                <h1>Sign UP</h1>
                <section id="signup">
                    <form method="post" action="">
                        <input type="text" id="uname" name="uname" placeholder="Username" required><p class="error"><?php echo $unameErr;?></p>
                        <input type="text" id="email" name="email" placeholder="Email address" required><p class="error"><?php echo $emailErr;?></p>
                        <input type="password" id="pass" name="pass" placeholder="Password" required><p class="error"><?php echo $passErr;?></p>
                        <p><input type="checkbox" id="agreement" name="agreement" required>I agree to the <a href="#">Terms</a> and <a href="#">Privacy</a></p>
                        <input type="submit" value="Sign UP!" name="submit">
                    </form>
                Already have an account? <a href="javascript:void(0);" onclick="signup_modal_hide(); login_modal();">Log In</a>
                </section>
            </div>
        </div><div class='panel'>
            <form method='post' action=''>
                <textarea id='qdesc' name='content' placeholder='Your Answer...' required></textarea>
                <input type='submit' value='Post Answer' name='submit'>
            </form>
        </div><?php
if(isset($_POST['submit'])) {
        if(isset($_SESSION['login_user'])){

            $content = $_POST['content'];

            $dbc = mysqli_connect('localhost', 'root', '', 'DATA') or die('Error connecting to MySQL server!');
            $query = "INSERT INTO answers (whoanswered, content, votes, answeredto) VALUES('$login_session', '$content', '0', '$q')";
            $result = mysqli_query($dbc, $query) or die('Error querying database!');
            echo 'Post complete!';
            //header( "refresh:5; url=./qview.php?q="echo $q;"");
            mysqli_close($dbc);
        }
    }?>

【问题讨论】:

  • 请出示您的代码
  • @YuJiaao 这是我的代码...

标签: php html forms post


【解决方案1】:

尝试这样做,首先命名所有提交按钮,然后检查设置了哪个按钮。

喜欢:

    <input type="submit" name="signup" value="Sign UP!">

<?php
    if($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['signup'])) { 
             /* Your code here */
    }
?>

为每个按钮指定不同的名称,以便您检查设置了哪个按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多