2015-09-05 155 views
0

HI我有以下文件夾結構PHP文件返回的HTML 302錯誤代碼

/app/start.php

/php/ProcessOrder.PHP

/php/Checkout.php

Checkout.php是一個測試API調用貝寶,當我把完整的網址在瀏覽器中它很好。

我的Index.html發佈了ProcessOrder.php文件,該文件將數據保存到我的數據庫,然後應該使用api將詳細信息傳遞給paypal。

兩個processorder和退房是在同一個文件夾中,兩者具有相同要求的語句

require ("/../app/start.php"); 

爲什麼process.php返回HTML 302,但結賬運行?我相信這是要求聲明,因爲當我將它從文件進程中除去,除了貝寶之外,我還在開始使用貝寶API之前獲得了數據庫的所有工作。

發現了它的最後一行

應該帶我到PayPal的URL https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-1PG60856DA4942405

行代碼,

header("Location: {$approvalUrl}"); 

這條線是在processorder和checkout.php相同

+1

它不是*「html 302錯誤代碼」*,它是[HTTP 302狀態碼](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3)。這不是一個錯誤,它是一個重定向。錯誤返回狀態代碼4xx(客戶端錯誤)和5xx(服務器錯誤)。 – axiac

回答

0

由於你的文件中有一些奇怪的外殼(混合大寫和小寫),你的web服務器可能是config可以匹配混合大小寫的擴展名並將客戶端重定向到正確的名稱。

最好的做法是隻用小寫擴展名來執行所有文件,並且只能在文件系統上的確切情況下引用它們。強制自己正確執行此操作的最佳方法是配置Web服務器,以便在案例不匹配時簡單地生成404。因爲DOS和Windows不是嚴格區分大小寫的,但是HTTP(就像世界上其他大多數事物一樣)是一種非常有用的方法。

+0

對不起,結帳是小寫字母的開頭。我已經改變了processorder.php到所有小寫,但是這總是叫做ok。一切小寫,仍然得到錯誤302 – user1633322

+0

其最後一行應該帶我到PayPal的網址https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-1PG60856DA49 42405代碼是:header(「Location:{$ approvalUrl}」); – user1633322

+0

對不起,只是學習,我現在看到它是一個重定向,爲什麼一個文件重定向到貝寶,另一個文件返回一個重定向代碼? – user1633322