双重表格不会提交第二份表格

时间:2014-04-28 09:45:22

标签: javascript php jquery html forms

嗨我有两个HTML表单,当提交一个JavaScript函数提交第二个一个表单工作但第二个不是我不确定它是表单还是帖子页面可以任何一个帮助。

一个表单会发送一封电子邮件,正确地将正确的数据发送到正确的电子邮件地址。

第二种形式是上传一个文件似乎根本没有做任何事情现在有错误显示在屏幕上我已经做了一次尝试捕获并且没有显示任何内容我也查看了日志而没有任何内容显示我是

HTML

        <div id="loginborder">


        <form id ="upload" enctype="multipart/form-data" action="upload_logo.php" method="POST">
                        <input name="userfile" type="file" />
                        <input type="submit" onsubmit="alert()"  value="dont press" disabled>
        </form>

            <div id="login">
                <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
                    <input type="hidden" name="subject" value="Can you create me a Contributors account">
                    <input type="text" name="first_name" id="first_name" placeholder="Name">
                    <input type="text" name="company" id="company" placeholder="Company Name">
                    <input type="checkbox" id="tc" onclick= "checkbox()">
                    <input type="submit" id="submit" onsubmit="alert()" name="submit" value="Register" disabled>
                </form>



    </div>
        </div>

        <?php 
            }
            else
            // the user has submitted the form
            {
            // Check if the "subject" input field is filled out
                if (isset($_POST["subject"]))
                {
                    sleep(5);
                    $subject = $_POST["subject"];
                    $first = $_POST["first_name"];
                    $company = $_POST["company"];
                    $therest = "First name= $first" . "\r\n" . "Company= $company" . "\r\n";          
                }
                    echo "$therest <br>";
                    $first = wordwrap($first, 70);
                    mail("careersintheclassroom01@gmail.com",$subject,$name,$therest,"subject: $subject\n");
                    echo "Thank you for sending us feedback";
                    header( "refresh:5;url=index.php" );
            }
        ?>
    </body>
</html>

javascript

<script type="text/javascript">

                function alert() 
                {
                document.getElementById("upload").submit();
                }

                function checkbox(){
                    if (document.getElementById("tc").checked == true)
                        document.getElementById("submit").disabled = false;
                    else
                        document.getElementById("submit").disabled = true;
                }

                $('input[placeholder],input[placeholder],input[placeholder],input[placeholder],input[placeholder]').placeholder();
            </script>

Upload_Logo.php

<html>
    <head>
    </head>
</html> 

<?php
    $uploaddir = "./images/"; 

    echo $uploaddir;
    mkdir($uploaddir, true);
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

    echo "<br />";
    echo " <b>Your media has been uploaded</b><br /><br /> ";
?>

第二个表单上的<?php echo $_SERVER["PHP_SELF"];?>调用页面底部的php,这是正在工作的是当前没有工作的upload_logo.php任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

您尝试一次提交2个表单。这不起作用,因为您的浏览器一次只能定向到1个页面,因此您提交的使用JavaScript的上传表单的尝试将被提交的联系表单取消。我建议您将文件输入移动到与联系人字段相同的表单中,并在“用户已提交表单”部分中处理它们。

这样的事情可以解决问题:

<?php
if (!isset($_POST["submit"]))
{
    ?>
    <div id="loginborder">
        <div id="login">
            <form enctype="multipart/form-data" method="POST">
                <input name="userfile" type="file" />
                <input type="hidden" name="subject" value="Can you create me a Contributors account">
                <input type="text" name="first_name" id="first_name" placeholder="Name">
                <input type="text" name="company" id="company" placeholder="Company Name">
                <input type="checkbox" id="tc" onclick="checkbox()">
                <input type="submit" id="submit" name="submit" value="Register" disabled>
            </form>
        </div>
    </div>

    <?php 
        }
        else
        // the user has submitted the form
        {
        // Check if the "subject" input field is filled out
            if (!empty($_POST["subject"]))
            {
                sleep(5);
                $subject = $_POST["subject"];
                $first = $_POST["first_name"];
                $company = $_POST["company"];
                $therest = "First name= $first" . "\r\n" . "Company= $company" . "\r\n";          
                echo "$therest <br>";
                $first = wordwrap($first, 70);
                mail("careersintheclassroom01@gmail.com",$subject,$name,$therest,"subject: $subject\n");
                echo "Thank you for sending us feedback";
                header( "refresh:5;url=index.php" );
            }

            if (isset($_FILES['userfile']['name'])) {
                $uploaddir = "./images/"; 
                if (!file_exists($uploaddir)) {
                    mkdir($uploaddir, true);
                }
                $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
                move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
                echo "<br />";
                echo " <b>Your media has been uploaded</b><br /><br /> ";
            }
        }
    ?>
</body>

答案 1 :(得分:0)

$uploadfile = ...

之后尝试此操作
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);

答案 2 :(得分:0)

当您提交第二个表单时,将生成电子邮件,因为它会触发if(isset($_POST["subject"]))条件,代码将遵循下一个命令。

但是当您提交第一个表单时,它会调用onsubmit="alert();函数,并且该函数会再次提交相同的表单。

function alert() 
                {
                document.getElementById("upload").submit();
                }

所以你只是在触发一个永无止境的循环。

我的解决方案是

<script type="text/javascript">
function alert() 
                {


                function checkbox(){
                    if (document.getElementById("tc").checked == true)
                        document.getElementById("submit").disabled = false;
                    else
                        document.getElementById("submit").disabled = true;
                }
                 }

                $('input[placeholder],input[placeholder],input[placeholder],input[placeholder],input[placeholder]').placeholder();
            </script>

我对你的要求并不是100%肯定。希望你能明白我正在做的事情。 GL!