正如标题所暗示的,我一直试图解决我的问题所在,但我空手而归。这对我来说毫无意义。我用的是几乎相同的 if(isset($_POST['submit']))
在我的wordpress网站的其他地方,但是由于某种原因,这个让我头疼,当我按下submit按钮时,它不断地给我404个错误。
我与数据库的连接也没有改变(出于安全原因,我只是在下面的代码中更改了它们)。
最后-我知道我没有行动 form
-这是因为操作在php页面中。我在另一个页面上用更少的 <input>
而且效果很好。
我有一种感觉,我忽略了一些超级简单的东西,但它正在吞噬我过去几天!这是我的表结构(来自adminer);
Column Type
coin varchar(11)
address varchar(50)
name varchar(50)
serverip varchar(20)
port char(10) [0]
explorer char(90)
api_getbalance char(90)
balance int(40) [0]
collateral int(20)
earning char(30) [0]
status char(15) [ENABLED]
我已经设定了 Primary Key
至 address
因为replace函数需要一个主键/唯一键集。
<?php
$args = array(
'post_type' => 'product',);
?>
<?php
if(isset($_POST['submit'])) {
$name = $_POST['name'];
$coin = $_POST['coin'];
$serverip = $_POST['serverip'];
$port = $_POST['port'];
$address = $_POST['address'];
$explorer = $_POST['explorer'];
$apigetbalance = $_POST['apigetbalance'];
$collateral = $_POST['collateral'];
$con2 = mysqli_connect("IP","USER","PASS","DB");
$update = "REPLACE INTO wp_shared_nodes (address, name, serverip, port, coin, explorer, api_getbalance, collateral) VALUES (?,?,?,?,?,?,?,?)";
$stmt = mysqli_prepare($con2,$update);
if ($stmt) {
mysqli_stmt_bind_param($stmt, 'ssssssss', $address, $name, $serverip, $port, $coin, $explorer, $apigetbalance, $collateral);
$ok = mysqli_stmt_execute($stmt);
if ($ok) {
echo "<strong> <i class='fa fa-check' aria-hidden='true'></i> The node information was added correctly.</strong>";
} else {
echo 'Data Not Updated';
error_log(mysqli_stmt_error($stmt));
}
mysqli_stmt_close($stmt);
} else {
error_log(mysqli_error($con2));
}
mysqli_close($con2);
}
?>
<?php
echo "<p><h5>Add/Change Node:</h5>";
$loop = new WP_Query( $args );
echo '<form method = "post">';
echo '<div class="row"><div class="column">';
//coin name
echo '<p style="margins:0"><h5>Coin Name</h5>';
echo '<p><input type="text" placeholder="Insert Coin Name" id="name" name="name" size="40" /></p>';
//coin ticker
echo '<p style="margins:0"><h5>Ticker</h5>';
echo '<p><select id="coin" name="coin">';
echo '<option>-- Select coin--</option>';
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
echo '<option value=' . $product->get_sku() . '>' . $product->get_sku() . ' </option>';
endwhile;
echo '</select>';
//wallet address
echo '<p style="margins:0"><h5>Wallet Address</h5>';
echo '<p><input type="text" placeholder="Address" id="address" name="address" size="40" /></p>';
//Collateral
echo '<p style="margins:0"><h5>Collateral</h5>';
echo '<p><input type="text" placeholder="Amount" id="collateral" name="collateral" size="10" /></p>';
echo '</div>';
echo '<div class="column">';
//Server IP
echo '<p style="margins:0"><h5>Server IP</h5>';
echo '<p><input type="text" placeholder="IP Address" id="serverip" name="serverip" size="20" /></p>';
//Server Port
echo '<p style="margins:0"><h5>Port</h5>';
echo '<p><input type="text" placeholder="Port" id="port" name="port" size="10" /></p>';
//Explorer
echo '<p style="margins:0"><h5>Explorer link to default address</h5>';
echo '<p><input type="text" placeholder="e.g. https://explore.creativecoin.design/address/" id="explorer" name="explorer" size="50" /></p>';
//Ext/getbalance
echo '<p style="margins:0"><h5>API link for balance</h5>';
echo '<p><input type="text" placeholder="e.g. https://explore.creativecoin.design/ext/getbalance/" id="apigetbalance" name="apigetbalance" size="50" /></p>';
echo '</div></div>';
echo '<br><input type="submit" name="submit">';
echo '</form>';
?>
2条答案
按热度按时间qnyhuwrf1#
404错误是
HTTP
状态码,这意味着在他们的服务器上找不到您试图在网站上访问的页面。表单操作是必需的,这就是它显示404错误的原因
你也可以试试
dfddblmv2#
这应该是一个评论,而不是一个答案,但我还没有足够的观点来评论。
我觉得问题很可能出在你的“行动”形式上。因为它不在你的代码里,我不能测试它。但是,它是决定提交时发布到哪个页面的操作。因为您得到一个404错误,这意味着您已经将操作设置为一个不存在的页面,或者您使用了错误的路径。如果该错误在函数中,则会进入正确的页面,因此不会出现404,然后会出现sql或php错误或意外结果,但不会出现404。
我创建了一个非常简单的测试页面,使用了您精确的提交输入,它的工作方式与我预期的一样:
如果你想张贴“行动”声明,我也许能找出它的错误,但是,它可能是一个简单的打字错误。