Javascript HTML文档重定向我。为什么?

Javascript HTML文档重定向我。为什么?,javascript,php,html,Javascript,Php,Html,请注意,这个问题是关于计算机安全和跨站点请求伪造的主题,我除了了解这些主题之外没有其他意图 假设一个用户在dasak.csc.kth.se/zoobar上有一个当前会话,我打算将此代码用于: 将1个zoobar从用户帐户转移到另一个用户“sahand” 我希望通过以下方式在我的文档中完成此操作: 填写与在dasak.csc.kth.se/zoobar/transfer.php上找到的表单相同的表单值。(我已将此表格复制到我的文档中) 提交值以便进行传输 以下是HTML文档: <form m

请注意,这个问题是关于计算机安全和跨站点请求伪造的主题,我除了了解这些主题之外没有其他意图

假设一个用户在dasak.csc.kth.se/zoobar上有一个当前会话,我打算将此代码用于:

  • 将1个zoobar从用户帐户转移到另一个用户“sahand”
  • 我希望通过以下方式在我的文档中完成此操作:

  • 填写与在dasak.csc.kth.se/zoobar/transfer.php上找到的表单相同的表单值。(我已将此表格复制到我的文档中)
  • 提交值以便进行传输
  • 以下是HTML文档:

    <form method="POST" name="transferform"
      action="http://dasak.csc.kth.se/zoobar/transfer.php">
    <p>Send <input name=zoobars type=text value="1" size=5> </p>
    <p>to <input name=recipient type=text value="sahand" size=10></p>
    <input type=submit name=submission value="Send">
    </form>
    <script>
    document.transferform.submit()
    </script>
    
    
    发送

    document.transferform.submit()
    当我打开这个文档时,我被重定向到,表单中填充了我在HTML文档中提供的值。据我所知,没有进行任何传输,因为用户的缩放栏数量没有变化


    那么,我要问的是,我如何才能让这个文档实现所需的功能

    编辑:transfer.PHP的PHP代码:

    <?php 
      require_once("includes/common.php"); 
      nav_start_outer("Transfer");
      nav_start_inner();
      if($_POST['submission']) {
        $recipient = $_POST['recipient'];
        $zoobars = (int) $_POST['zoobars'];
        $sql = "SELECT Zoobars FROM Person WHERE Username='" .
               addslashes($user->username) . "'";
        $rs = $db->executeQuery($sql);
        $sender_balance = $rs->getValueByNr(0,0) - $zoobars;
    
        $sql = "SELECT Username, Zoobars FROM Person WHERE Username='" .
           addslashes($recipient) . "'";
        $rs = $db->executeQuery($sql);
        $recipient_exists = $rs->getValueByNr(0,0);
        if($zoobars > 0 && $sender_balance >= 0 && $recipient_exists) {
          $sql = "UPDATE Person SET Zoobars = $sender_balance " .
                 "WHERE Username='" . addslashes($user->username) . "'";
          $db->executeQuery($sql);
          $sql = "SELECT Zoobars FROM Person WHERE Username='".
                 addslashes($recipient) . "'";
          $rs = $db->executeQuery($sql);
          $recipient_balance = $rs->getValueByNr(0,0) + $zoobars;
          $sql = "UPDATE Person SET Zoobars = $recipient_balance " .
                 "WHERE Username='" . addslashes($recipient) . "'";
          $db->executeQuery($sql);
          $result = "Sent $zoobars zoobars";
        }
        else $result = "Transfer to $recipient failed.";
      }
    ?>
    
    
    表单将测试名为“submission”的数据是否在发送到页面的数据中

    您不使用提交按钮提交表单

    因此,它不是一个成功的控件,并且不包含在数据中


    因此,你必须:

    • 通过将要提交的控件在提交的数据中包含名称/值
    • 在PHP或中更改测试
    • 手动提交表单,而不是使用JS

    正如昆廷所说,PHP代码将查找名称“submission”,显然只有在使用按钮提交时才会提供该名称。因此,我使用一个新命令完成了此操作:
    document.getElementsByName(“提交”)[0]。单击()。这就行了。最终的HTML文档如下所示:

    <form method="POST" name="transferform"
      action="http://dasak.csc.kth.se/zoobar/transfer.php">
    <p>Send <input name="zoobars" type=text value="1" size=5> </p>
    <p>to <input name="recipient" type=text value="sahand" size=10></p>
    <input type=submit name="submission" value="Send">
    </form>
    <script>
    document.getElementsByName("submission")[0].click()
    </script>
    
    
    发送

    document.getElementsByName(“提交”)[0]。单击()
    post请求可能没有表示您已登录/aka会话信息的cookie值。(只是一个猜测,没有看到正在发生的情况)“那么,我想问的是,我如何才能让这个文档实现所需的功能?”-首先看一下
    transfer.php
    的代码,以了解除了您传递给它的内容之外,它还需要什么输入。您标记为php,那么它在哪里?
    document.transferform.submit()
    在页面加载时自动提交表单,可能传递了
    zoobars=1&recipient=sahand
    POST
    值。如果看不到相关的PHP代码,很难看出问题所在。我将添加PHP代码。好的,非常感谢您的回复。是否应该有第四种选择,即使用javascript使用submit按钮提交表单?
    <input type=submit name=submission value="Send">
    
     document.transferform.submit()
    
    <form method="POST" name="transferform"
      action="http://dasak.csc.kth.se/zoobar/transfer.php">
    <p>Send <input name="zoobars" type=text value="1" size=5> </p>
    <p>to <input name="recipient" type=text value="sahand" size=10></p>
    <input type=submit name="submission" value="Send">
    </form>
    <script>
    document.getElementsByName("submission")[0].click()
    </script>