Javascript HTML文档重定向我。为什么?
请注意,这个问题是关于计算机安全和跨站点请求伪造的主题,我除了了解这些主题之外没有其他意图 假设一个用户在dasak.csc.kth.se/zoobar上有一个当前会话,我打算将此代码用于: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
<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>