當前位置: 首頁> 最新文章列表> PHP main 函數如何處理POST 和GET 請求?詳細步驟解析

PHP main 函數如何處理POST 和GET 請求?詳細步驟解析

gitbox 2025-09-02

一、GET 請求的處理

GET 請求主要用於向服務器獲取數據,它通過URL 參數傳遞數據。在PHP 中, $_GET超全局數組用來接收GET 請求中傳遞的參數。

1.1 接收GET 請求

<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">main</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-comment">// 檢查是否有 GET 請求的參數</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>])) {
        </span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>];  </span><span><span class="hljs-comment">// 獲取 GET 請求中的參數 'name'</span></span><span>
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$name</span></span><span>);  </span><span><span class="hljs-comment">// 輸出 'Hello, &lt;name&gt;'</span></span><span>
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"No name provided!"</span></span><span>;
    }
}
</span></span>

在上面的代碼中, $_GET['name']獲取了URL 中的參數。如果URL 是example.com/?name=John ,那麼輸出結果將是:

 <span><span>Hello, John
</span></span>

1.2 URL 參數的編碼與安全性

在處理GET 請求時,尤其是處理用戶輸入的數據時,安全性是必須要考慮的因素。為了避免XSS 攻擊,使用htmlspecialchars()函數對輸出的數據進行編碼是非常重要的。該函數將用戶輸入中的HTML 標籤轉義,從而避免惡意代碼的注入。

二、POST 請求的處理

POST 請求通常用於向服務器發送數據,尤其是需要提交表單數據時。在PHP 中, $_POST超全局數組用來接收POST 請求的數據。

2.1 接收POST 請求

<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">main</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-comment">// 檢查是否是 POST 請求</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'POST'</span></span><span>) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>]) &amp;&amp; </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'password'</span></span><span>])) {
            </span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>];
            </span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'password'</span></span><span>];
            
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Username: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$username</span></span><span>) . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Password: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$password</span></span><span>);
        } </span><span><span class="hljs-keyword">else</span></span><span> {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Please fill in the required fields!"</span></span><span>;
        }
    }
}
</span></span>

在這個示例中,POST 請求的數據通過$_POST['username']$_POST['password']獲取。如果表單通過POST 請求提交,輸出結果將顯示用戶名和密碼。

2.2 表單驗證和數據清理

在處理POST 請求時,用戶輸入的內容可能不符合預期或者帶有惡意代碼。通常,我們需要進行數據驗證和清理。比如,可以檢查用戶輸入是否為空、是否符合特定格式等。

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">main</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'POST'</span></span><span>) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>])) {
            </span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_var</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>], FILTER_SANITIZE_EMAIL);
            </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">filter_var</span></span><span>(</span><span><span class="hljs-variable">$email</span></span><span>, FILTER_VALIDATE_EMAIL)) {
                </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Valid email: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$email</span></span><span>);
            } </span><span><span class="hljs-keyword">else</span></span><span> {
                </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Invalid email format!"</span></span><span>;
            }
        } </span><span><span class="hljs-keyword">else</span></span><span> {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Email is required!"</span></span><span>;
        }
    }
}
</span></span>

在這段代碼中,我們使用了filter_var()函數來清理和驗證電子郵件地址,確保其格式是有效的。

三、結合GET 和POST 請求

有時,我們需要同時處理GET 和POST 請求。為了更好地管理請求,可以在main函數中同時判斷請求的方式,並根據不同的需求分別處理。

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">main</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'POST'</span></span><span>) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'message'</span></span><span>])) {
            </span><span><span class="hljs-variable">$message</span></span><span> = </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'message'</span></span><span>]);
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Received POST message: "</span></span><span> . </span><span><span class="hljs-variable">$message</span></span><span>;
        }
    } </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'GET'</span></span><span>) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>])) {
            </span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intval</span></span><span>(</span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>]);  </span><span><span class="hljs-comment">// 獲取 GET 請求中的 id 參數</span></span><span>
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Requested GET ID: "</span></span><span> . </span><span><span class="hljs-variable">$id</span></span><span>;
        }
    }
}
</span></span>

在這個例子中,PHP 根據請求的類型判斷是處理POST 請求中的消息還是GET 請求中的ID。

四、總結

通過使用$_GET$_POST超全局數組,PHP 可以方便地處理GET 和POST 請求。無論是獲取URL 參數還是提交表單數據,我們都可以在main函數中進行邏輯處理。在實際開發中,處理請求時還需要特別注意安全性,確保用戶輸入的內容經過驗證和清理,以防止SQL 注入、XSS 攻擊等安全隱患。