Chrome 和 Firefox 显示的页码不同


chrome and firefox have different page numbers displayed

我在下面有这行代码,它向用户说明他们当前在总页数中的哪个页面:

<h1><?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1>

上面的代码可以读成这样:1 OF 73 OF 55 OF 6等。

但是有一个问题,我目前在谷歌浏览器和Mozilla火狐之间遇到问题。下面我有一个指向此处应用程序的链接。您能否在Firefox和chrome中打开该应用程序并按照以下步骤操作,您将能够看到问题:

  1. 打开我在chrome和Firefox中提供的URL

  2. 在两个页面上,请输入多个会话(输入 7),然后在两个浏览器上提交页面。

  3. 您将在两个浏览器的顶部看到一个标题: "CREATING QUESTIONS AND ANSWERS: SESSION 1 OF 7" .

  4. 在两个浏览器的页面上,单击"添加问题"按钮 3 次,以便添加 3 行,每行 包含图像文件输入。

  5. 现在点击页面底部的"提交详细信息"按钮两个浏览器。

我现在要你做的是现在看看标题"CREATING QUESTIONS AND ANSWERS: SESSION ... OF 7"什么。 现在说。在Firefox中,它可以完美运行,因为您已经完成了第一页,因此您现在处于第二页,这就是为什么它指出 "CREATING QUESTIONS AND ANSWERS: SESSION 2 OF 7" .

但是在铬中它不能很好地工作。在铬中,它表示"CREATING QUESTIONS AND ANSWERS: SESSION 5 OF 7" .这是因为 chrome 它为已添加的每一行添加一个数字(因为要添加一行,表单会上传到其自身页面)。因此,在提交第一页后,新页面会添加一个数字以使其2 OF 7但是在第一页中添加的3行使其在chrome中5 OF 7,这是完全不正确的。

所以我的问题是为什么它在 chrome 中的工作方式与在 Firefox 中的工作方式不同,有没有办法让 chrome 以与 firefox 相同的方式工作,以便每次用户进入下一页时都显示正确的页码?

以下是完整的代码:

<?php
    session_start();

    if(isset($_POST['sessionNum'])){
                //Declare my counter for the first time
                $_SESSION['initial_count'] = $_POST['sessionNum'];
                $_SESSION['sessionNum'] = intval($_POST['sessionNum']);
                $_SESSION['sessionCount'] = 1;
        }
    else if ($_SESSION['sessionCount'] < $_SESSION['sessionNum']) {
        $_SESSION['sessionCount']++;
    }

    $sessionMinus =  $_SESSION['sessionCount'];
    if ($sessionMinus == $_SESSION['initial_count']){ 
        $action = 'create_session2.php'; 
    }else if($sessionMinus != $_SESSION['initial_count']){ 
        $action = $_SERVER['PHP_SELF']; 
    }
    ?>
    <script type="text/javascript">

    function insertQuestion(form) {   

        var $tbody = $('#qandatbl > tbody'); 
        var $tr = $("<tr class='optionAndAnswer' align='center'>");
        var $image = $("<td class='image'></td>"); 

    var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" + 
        "<p class='imagef1_upload_process' align='center'>Loading...<br/><img src='Images/loader.gif' /><br/></p><p class='imagef1_upload_form' align='center'><br/><label>" + 
        "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" + 
        "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" + 
        "<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");     
        $image.append($fileImage);

        $tr.append($image);  
        $tbody.append($tr); 

    }

                 function showConfirm(){
             var confirmMsg=confirm("Make sure that your details are correct, once you proceed after this stage you would not be able to go back and change any details towards Questions, Options and Answers for your Session." + "'n" + "'n" + "Are you sure you want to Proceed?" + "'n" );
             if (confirmMsg==true)
             {
             submitform();   
         }
    }
             function submitform()
    {
        var fieldvalue = $("#QandA").val();
        $.post("insertQuestion.php", $("#QandA").serialize() ,function(data){
            var QandAO = document.getElementById("QandA");
            QandAO.submit();
        });  
        alert("Your Details for this Session has been submitted"); 
    }


    </script>
    </head>
    <body>
    <form id="QandA" action="<?php echo htmlentities($action); ?>" method="post">
    <h1>CREATING QUESTIONS AND ANSWERS: SESSION <?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1>
    <div id="detailsBlock">
    <table id="questionBtn" align="center">
    <tr>
    <th>
    <input id="addQuestionBtn" name="addQuestion" type="button" value="Add Question" onClick="insertQuestion(this.form)" />
    </th>
    </tr>
    </table>
    </div>
    <hr/>
    <div id="details">
    <table id="qandatbl" align="center">
    <thead>
    <tr>
        <th class="image">Image</th>
    </tr>
    </thead>
    <tbody>
    </tbody>
    </table>
    </div>
    <p><input id="submitBtn" name="submitDetails" type="submit" value="Submit Details" onClick="myClickHandler(); return false;" /></p>
    </form>
             <script type="text/javascript">
    function myClickHandler(){
         if(validation()){
                    showConfirm();
         }
    }
    </script>

    </body>
    </html>
没有在你的

代码中深入(你今天已经发布了这个,对吧?),但你的错误可能来自你使用 $_SESSION 变量来存储不应该存在的数据。

例如,如果您的用户打开两个选项卡并同时浏览页面,那将是一团糟。

为每个流创建一个唯一标识符,将数据存储在数据库中,并使用$_GET$_POST在页面之间传输此标识符(您也可以将此数据存储在会话中,但存储在由此标识符索引的数组中)。

哦,还有内嵌框架?避开他们!使用 jquery 插件来处理您的上传。