好的,所以我的网站设置为/index.php?page=PAGE
。
我的联系页面上有一个表单,但是当我提交POST表单时,它会将URL删除到/index.php
?
为什么?几个月来我还没有触及PHP,但我不记得这是一个问题。
这是我的代码:
<form action="" method="POST">
<?php
if (isset($_POST['contactBtn'])) {
$errors = array();
$name = $_POST['ContactInputName'];
$email = $_POST['ContactInputEmail'];
$message = $_POST['ContactInputMessage'];
if(empty($name)) {
$errors[] = 'You did not enter a name.';
}
if(empty($email)) {
$errors[] = 'You did not enter an email.';
}
if(empty($message)) {
$errors[] = 'You did not enter a message.';
}
if(strlen($message) < 4 || strlen($message) > 4096) {
$errors[] = 'Message length must be between 4 and 4096 characters long.';
}
if(empty($errors)) {
$Database->selectPrepare("INSERT INTO `contact` (`ID` ,`name` ,`email` ,`message` ,`time`, `IP`) VALUES (NULL , :name, :email, :message, :time, :IP);",
array(':name' => $name, ':email' => $email, ':message' => $message, ':time' => time(), ':IP' => $_SERVER["HTTP_CF_CONNECTING_IP"]));
echo ' <div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4>Success!</h4>
Your message has been recieved and we will get back to you as soon as possible!
</div>';
} else {
echo '
<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4>ERROR!</h4>';
foreach($errors as $error) {
echo ' <p>'.$error.'</p>';
}
echo '</div>';
}
}
?>
<div class="form-group">
<label for="ContactInputName">Name</label>
<input type="text" class="form-control" id="ContactInputName" placeholder="John Smith">
</div>
<div class="form-group">
<label for="ContactInputEmail">Email address</label>
<input type="email" class="form-control" id="ContactInputEmail" placeholder="John@smith.com">
</div>
<div class="form-group">
<label for="ContactInputMessage">Message</label>
<textarea class="form-control" id="ContactInputMessage" rows="4"></textarea>
</div>
<button type="submit" id="contactBtn" class="btn btn-ar btn-primary">Submit</button>
</form>
答案 0 :(得分:1)
不会。如果请求URI为/index.php?page=PAGE
,表单上有一个空action
属性,浏览器会将POST请求发送到/index.php?page=PAGE
,它不会改变它。我怀疑你观察到的行为差异与你的web服务器的重写规则或服务器特定的配置有关。这不是PHP会做的事情。
答案 1 :(得分:0)
这是因为cloudflare。它已经缓存了我以前的表格。我检查了网页来源,发现它有旧代码。
谢谢你们!
答案 2 :(得分:-2)
TL; DR是:
当您使用GET
将数据从客户端发送到服务器时,您可以通过URL发送数据。
当您使用POST
将数据从客户端发送到服务器时,您可以将其发送到HTTP请求本身。
HTTP有不同的方法在客户端(您的浏览器)和运行PHP代码的服务器(包括GET
和POST
)之间来回传递数据。
This post is a good explanation of the difference between GET and POST.