【问题标题】:PHP Myqsli Form automatically returning to previous page in Chrome but not in Edge?PHP Mysqli Form在Chrome中自动返回上一页但在Edge中没有?
【发布时间】:2023-03-14 09:42:01
【问题描述】:

我有一个使用 mysqli 将字段提交到数据库的表单,该表单运行良好;但是,我在 Chrome 中打开了表单页面并尝试向数据库提交一个新行,只是当我尝试单击表单的文本区域时页面返回到上一页。我尝试清除所有浏览器历史记录(缓存、cookie 等)并请朋友在他们的 Chrome 浏览器上尝试,结果相同。

踢球者?它适用于边缘。没有意义。

我浏览了代码,找不到任何丢失的

(注意:我知道这段代码很笨重并且容易受到 SQL 注入的影响,但目前我没有任何用户/敏感数据需要保护。另外,我没有对 head.php 或任何代码进行任何更改(我记得),只是很困惑为什么当我点击 Chrome 中的文本区域而不是 Edge 中的文本区域时,它会突然开始将我重定向回 notebook.php。)

  1. Notebook_add.php

    $con = @mysqli_connect('localhost', 'root', 'pass', 'db');
    
    if (!$con) {
        echo "Error: " . mysqli_connect_error();
        exit();
    }
    ?>
    <body>
    <div class="wrapper">
    <h1>Post Comments</h1>
    
    <?php
    include ('navbar.php');
    ?>
    
    <br>
    
    <form name="noteworthy" METHOD=POST action=<?php echo $_SERVER['PHP_SELF']; ?>>
    <br>
    Title: <input type="text" name="title" id="$title" size="50"> <br>
    Link: <input type="text" name="link" id="$link" size="50"><br>
    Description: <TEXTAREA NAME="description" id="$description" ROWS="5" COLS="30"></TEXTAREA><br>
    <Input type="submit" name="enter" id="$enter" value="enter">
    </form>
    
    <?
    echo $submitted = date("Y-m-d");
    ?>
    
    <?
    $title = $_REQUEST['title'];
    $link = $_REQUEST['link'];
    $description = $_REQUEST['description'];
    $enter = $_REQUEST['enter'];
    
    
    if(isset($_REQUEST['enter'])){
    $submitted = date("Y-m-d");
    $sql = "INSERT INTO notes (title, link, description, submitted) VALUES ('$title','$link','$description','$submitted')";
    }
    
    if(mysqli_query($con, $sql)){
        echo "Records inserted successfully.";
        print "<meta http-equiv='refresh' content='0; url=http:notebook.php' />";
    }
    
    // Close connection
    mysqli_close($con);
    ?>
    
    <div class="push"> </div>
    
    </div>
    
    <?php
    include 'footer.php';
    ?>
    
    </body>
    

【问题讨论】:

  • 使用更可靠的 js 或 php 标头。强制你的代码不能免受 SQL 注入攻击
  • js:window.location.href = 'your_url';, php:header('Location: http://www.example.com/');exit()(删除之前的所有输出)
  • AFAIK 应该引用表单的方法和操作。这样:method="POST" action=""

标签: php forms mysqli


【解决方案1】:

所以发生的事情是我在我的 navbar.php 中添加了一个新菜单项并且忘记关闭链接标记(例如,“新菜单项”)。这使整个 php 表单变成了一个链接,所以每当我在导航栏下的任何地方时,我都会返回到上一页。

有趣的是,这在 Edge 中并没有发生;也许 Edge 中有一些功能可以自动关闭流氓标签。

无论如何,感谢您的回复。 @Smith,感谢您的提示,我现在使用的是 php head features/location 功能而不是 meta-refresh。

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 2017-11-10
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2012-11-01
    • 2016-03-18
    • 2021-12-16
    相关资源
    最近更新 更多