所以我使用这个表单提交给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>
答案 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部分。但是......我看到您的表单中没有文件输入,您删除了所有内容......