我有一个奇怪的问题,我的$ _POST数据没有通过.首先,这在我的本地主机上工作正常,但在我的网络共享主机上不起作用.这是表格:
<form action="/add" method="POST" enctype="multipart/form-data">
<div>
Name : <input type='text' name='form[name]' class='form-text ' value="" style='width: 350px' placeholder="I.E. Boulder Vote Bus" maxlength="30"/>
</div>
<div>
Description : <textarea name='form[description]' class='form-bigbox '/></textarea>
</div>
<div class='clearfix pull-left'>
Logo: <input type="file" name='form[image_name]' class='' value="" accept="image/jpeg, image/jpg, image/png"/>
</div>
<div class='clearfix'></div>
<div>
<span id='date' class='change'>
Date : <input type='text' name='form[date]' id='datepicker' class='form-text ' placeholder="mm/dd/yyyy" value="" style='width: 160px;'/>
</span>
Time : <input type='text' name='form[hr]' class='form-text ' style='width: 40px;' placeholder="01" value=""/> : <input type='text' style='width: 40px;' name='form[min]' …
Run Code Online (Sandbox Code Playgroud) $.ajax({
method: "post"
, url: "save.php"
, data: "id=453&action=test"
, beforeSend: function(){
}
, complete: function(){
}
, success: function(html){
$("#mydiv").append(html);
}
});
Run Code Online (Sandbox Code Playgroud)
我已经将方法类型设置为post但在Save.php中我只是在$_GET
或$_REQUEST
不在中获取值$_POST
.
我的表格如下:
<form method="post" id="myform" action="save.php">
Run Code Online (Sandbox Code Playgroud)
它无法正常工作,在这里查看并在Google上尝试添加 enctype
<form method="post" id="myform" action="save.php" enctype="application/x-www-form-urlencoded">
Run Code Online (Sandbox Code Playgroud)
但还是$_POST
空的?
我如何使其工作?
我正在尝试.json
根据<select>
所选的任何选项更新单独加载的文件.它加载.json
文件然后更新单个文件,只要我定义$myFile
为特定.json
文件,如$myFile = "data/data.json";
但是当我尝试将select选项作为文件名传递时,没有任何保存.我在哪里弄乱这个?
这是HTML选择:
<form action="/server/php/data/process.php" method="post">
<select class="ui mini fluid search dropdown" id="templateSelection" type="text" name="selectTemplate" onchange="loadTemplate()">
<option value="" selected="selected">Select Template</option>
<?php
foreach(glob(dirname(__FILE__) . '/server/php/data/*') as $filename){
$filename = basename($filename);
echo "<option value='" . $filename . "'>".$filename."</option>";
}
?>
</select>
</form>
Run Code Online (Sandbox Code Playgroud)
以下是填充的选项:
<option value="data.json">data.json</option>
<option value="data2.json">data2.json</option>
<option value="data3.json">data3.json</option>
Run Code Online (Sandbox Code Playgroud)
这是process.php:
<?php
//$myFile = "data/data.json";
$filename = $_POST['selectTemplate'];
$myFile = "data/" . $filename;
$arr_data = array(); // create empty array …
Run Code Online (Sandbox Code Playgroud) 我用的时候
<form method="post" enctype="text/plain" action="proc.php">
Run Code Online (Sandbox Code Playgroud)
表单数据无法正确发送到proc.php文件.为什么?问题是什么?为什么我不能使用文本/普通编码与post,但我可以使用它与get方法?
我的网络服务器有一个非常奇怪的问题。我的服务器为 file_get_contents('php://input') 显示一个空字符串,但只有一个用户。它对我和其他一些人来说很好用,但是一个特定的用户不能在使用 POST 请求的站点上使用任何东西,因为服务器只是在他的 PC 上没有从他的浏览器接收到任何 POST 信息。然而,它在他的手机上也能正常工作。测试更加困难,因为我无法自己复制它,它对我来说效果很好。我让他尝试了多种不同的浏览器并隐身,以防 Chrome 中有一些奇怪的设置破坏了他,但似乎没有任何效果。我已经检查了他的 chrome 工具中的标题,似乎所有信息都在那里,但服务器仍然什么也没看到。我使用的代码非常简单,
let fetchCheckoutID = fetch("stripe/createcustomcheckout.php", {
credentials: 'include',
method: "POST",
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
currency: customCheckoutCurrency.value.toLowerCase(),
price: customCheckoutValue.value,
name: customCheckoutName.value
})
}).then(function (response) {
return response.json();
}).then(async function (session) {
stripe.redirectToCheckout({ sessionId: session.id});
}).then(function (result) {
if(result.error) {
alert(result.error.message);
}
}).catch(function (error) {
console.error("Stripe Setup: ", error);
});
Run Code Online (Sandbox Code Playgroud)
然后在服务器端
$json = file_get_contents('php://input');
$data = json_decode($json);
Run Code Online (Sandbox Code Playgroud)
这只是我发现问题的代码,整个网站上的 POST 请求都没有专门为他工作,但对其他人来说都很好。在过去的 4 个小时里,我一直在和他一起试图解决这个问题,因为几个月来它一直在为他工作,现在突然间他基本上无法使用该站点,因为它依赖于对服务器的 POST 请求。如果这是他可以解决的问题,那么其他用户肯定会遇到同样的问题......我不知道还能去哪里,我找不到任何其他有同样问题的帖子。我只是发现很多人在 $_POST 中找不到信息,人们建议他们使用 file_get_input() …