簡體   English   中英

PHP表單-“獲取”有效,但“發布”無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM