[英]PHP forms - 'get' working but 'post' not
我有一個簡單的注冊表。 我一直在尋找時間,並嘗試了所有方法-基本上,我已將其剝離以進行發布/獲取。 當我將方法設置為get時(在表單和腳本頁面上),它都能正常工作,當我將其設置為post時,出現此錯誤:
不能接受的
在此服務器上找不到請求的資源/tmp/register.php的適當表示形式。 此外,嘗試使用ErrorDocument處理請求時遇到404 Not Found錯誤。
這是我在表單頁面上的代碼:
<form id="registration" onsubmit="return validateRegistration();" action="register.php" method="post">
Name: <input type="text" id="name" name="name" placeholder="Required">
<br>
Email: <input type="email" id="email" name="email" placeholder="Required">
<br>
Confirm: <input type="email" id="confirm_email" autocomplete="off" placeholder="Required">
<br>
Password: <input type="password" id="password" name="password" placeholder="Required">
<br>
Confirm: <input type="password" id="confirm_password" autocomplete="off" placeholder="Required">
<br>
City: <input type="text" id="city" name="city" placeholder="Optional">
<br>
Country: <input type="text" id="country" name="country" placeholder="Optional">
<br>
<br>
<hr>
<a href="#">Terms and Conditions</a>
<br>
<input type="submit" value="Accept and Complete Registration">
</form>
在我的腳本頁面(register.php)上,我有:
<?php
echo "Name: " . $_POST["name"] . "<br>";
echo "Email: " . $_POST["email"] . "<br>";
echo "Password: " . $_POST["password"] . "<br>";
echo "Location: " . $_POST["city"] . ", " . $_POST["country"] . "<br>";
?>
如果我只是去register.php
它只會在帖子所在的位置顯示空白,但是如果我提交表格,則會出現“不可接受的406”錯誤。
有人可以幫我嗎? 我完全感到困惑。 謝謝
我不知道您是否找到解決問題的答案。 我也遇到了這個問題,POST絕對不會返回任何數據,但GET不會出錯。
關於我的問題的奇怪之處在於,我只在自己的一個網站上擁有它。 所有站點都在同一服務器上。
經過約三個小時的禮貌地將我的臉撲向鍵盤,我才意識到。 我無法正常運行的一個站點已將URL編碼設置為始終刪除“ www”。 我的解決方案是強制執行URL,使其始終添加“ www”,而問題不再存在。
還沒有提到另一種可能性,即.htaccess
在某些情況下, .htaccess
設置為重定向或阻止POST,而不會捕獲和阻止或路由GET。
如果您可以導航到該頁面(您說可以),但是POST從未到達該頁面,則說明有某些內容阻止了該頁面,唯一的方式就是您正在使用的Web服務器平台。
您之前提到您使用的是托管服務提供商,因此請特別詢問他們針對POST請求設置了哪些規則(您可能需要稍等片刻,以便有人可以實際回答問題),或者可以進行測試這一點從命令行使用wget
wget --post-data 'name=test' http://server.com/tmp/register.php
我在表單中的多個textarea字段上使用ckeditor,並得到相同的錯誤...
我嘗試了所有方法..就像使用get而不是post一樣,使用mod證券和其他很多東西,不管我能想到的是...。
但是最終我從多個字段中刪除了ckeditor時它開始工作了...現在它的工作非常正常...
可能是您代碼中的某些字段正在生成一些內部代碼,瀏覽器/服務器將這些內部代碼視為sql查詢的注入,因此直接阻止了該頁面。
找到那個代碼...
錯誤代碼表明它正在/tmp/register.php
尋找文件。 那是對的嗎? 也許將表單操作更改為/register.php
?
另外,您的PHP看起來有點過時(很多引號),但是我假設您只是從php文件中復制/粘貼了內容,並且出於某種原因刪除了周圍的HTML?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.