-1

所以我使用这个表单提交到 PHP 文件。PHP 文件有一个重定向标头,当我直接在浏览器中调用 php 文件时,它可以工作,但是当通过表单中的 action 属性访问它时,它什么也不做。曾经有一段时间我可以让它在不刷新的情况下重定向:2,但随后出现的问题是它只在 php 文档本身中包含重定向的文件,所以我的 javascript 和提交函数会失败......奇怪吗?请指教!这是怎么回事?

HTML

<form name="ats_routing" id="ats_routing" method="post" action="php/upload.php" enctype="multipart/form-data">

    <!-- Some html generated by codiqa -->

    <a onclick="submitForm();" data-transition="flip" data-theme="" data-icon="check">
        Submit
    </a>
</form>

Javascript 部分

/****CREATE JQUERY SUBMIT FUNCTION FOR IFRAME VALIDATION CHECK FOR Codiqa****/
function submitForm() {
    if ($("#ats_routing").valid()) {
       //alert("Thank You. Your Routing Form Has Been Submitted.");
       $('#ats_routing').submit();
    }
}

表单重定向到的 PHP (upload.php)

<?php
header("Refresh: 2; URL=/ats-routing/"); /* Redirect browser */

//Parse and store the db ini file, this will return an associative array
db_config_ats_ibutton();
db_connect();

$total_weight       = $_POST['total_weight'];
$uf             = $_POST['number_uf'];


$query="INSERT INTO datbasae (
    lbs_uf,
    total_weight,
    district)

    VALUES(
    '$uf',
    '$total_weight',
    '$district')";

query_db($query);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <title>ATS Routing</title>
  <link rel="stylesheet" href="https://d10ajoocuyu32n.cloudfront.net/mobile/1.3.1/jquery.mobile-1.3.1.min.css">
<link rel="stylesheet" href="http://dev.rs.idmyasset.com/ats-routing/css/theme.css">
<!-- Extra Codiqa features -->
<link rel="stylesheet" href="https://codiqa.com/view/bb40208d/css">
<!-- jQuery and jQuery Mobile -->
<script src="https://d10ajoocuyu32n.cloudfront.net/jquery-1.9.1.min.js"></script>
<script src="https://d10ajoocuyu32n.cloudfront.net/mobile/1.3.1/jquery.mobile-1.3.1.min.js">    </script>
<meta http-equiv="refresh" content="2; url=http://dev.rs.idmyasset.com/ats-routing/">
</head>

<body>
<!-- Home -->
<div data-role="page" id="page1">
  <div id="header" data-theme="" data-role="header">
      <h3 id="header">
          ATS Routing Data
      </h3>
  </div>
  <div data-role="content">
    <h1 align="center">Thank You</h1>
    <h1 align="center">Your Form Has Been Submitted!</h1>
  </div>
</div>
</body>
</html>
4

2 回答 2

2

首先也是最重要的:没有名为“Refresh”的 HTTP 标头。浏览器可能会对它做出反应,但它没有被定义。

那你为什么用它?您正在发出 HTML,您不需要RefreshHTTP 标头。去掉它。

这让我想到了Refresh元标记。这个工作,还是应该工作?

目前,您正在为浏览器创建一个令人困惑的情况:您为 2 秒后到达的 URL 提供了两个不同的值。一个来自 HTTP 标头,这不是官方的?这是否应该像任何其他 HTTP 标头一样优先于元标记,或者这是一个例外,因为非标准 HTTP 标头和标准元标记是相反的?

现在来点完全不同的东西:您的代码可以通过 SQL 注入进行攻击。始终转义进入 SQL 语句的所有变量内容!

于 2013-05-21T21:45:53.267 回答
1

您显示的大部分代码都是无用的。正如您所建议的那样,您的问题是“来自 php”(事实上,可能不是)。您必须提供 PHP 代码,而不是 html 或 JS(好吧,为什么不提供 JS,但不仅如此)。

你说从你的表单发送文件,你需要一个看起来像这样的表单标签:

<form action="something" method="post" enctype="multipart/form-data">

缺少 enctype 部分。但是...我在您的表单中没有看到任何文件输入,您删除了所有内容...

于 2013-05-21T21:10:56.820 回答