使用表单操作提交到PHP页面时PHP重定向不起作用

时间:2013-05-21 21:00:52

标签: php forms

所以我使用这个表单提交给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>

2 个答案:

答案 0 :(得分:2)

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

那你为什么要用呢?您正在发布HTML,您不需要Refresh HTTP标头。删除它。

这会将我带到Refresh元标记。这个有用吗,还是应该有效?

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

现在完全不同了:您的代码可以通过SQL注入进行攻击。总是转义进入SQL语句的所有变量内容!

答案 1 :(得分:1)

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

您说要从表单发送文件,您需要一个表单标签:

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

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