我有2個腳本。這就是:防止直接訪問PHP
- registration.html
- process_registration.php
有時有人打開該鏈接直接進入process_registration.php,所以我怎麼能預防呢?
Process_registration.php功能是保存從registration.html輸入獲得的數據。
有什麼想法?
我有2個腳本。這就是:防止直接訪問PHP
有時有人打開該鏈接直接進入process_registration.php,所以我怎麼能預防呢?
Process_registration.php功能是保存從registration.html輸入獲得的數據。
有什麼想法?
您可以使用:
if (!isset($_POST['field'])) {
die();
}
你process_registration.php文件的頂部。
當然,您的表單中的一個現有字段替換field
。
如果您針對使用腳本註冊多個帳戶的flooders,您可以在註冊表中使用captcha字段,或使用protections against crawling。
$ _POST也可以用PHP發送捲曲,所以我不認爲這是最有效的解決方案..爲了更好的安全我想你也可以驗證引用者 –
引用者也可以通過cURL設置 –
謝謝@Ninsuo –
您可以檢查當前的請求是POST類型(如果你使用的一種形式)
if($_SERVER['REQUEST_METHOD'] == 'POST')
,你也可以檢查是否所有必需的變量設置。
只是另一種方法:
if (empty($_POST)) {
exit("Direct access not allowed");
}
只是更靈活的對象名稱。對於額外的安全,你應該把這個在您的形式:
<input type="hidden" value="9957374" name="hiddenvalidate" />
,並在你的腳本:
if (!isset($_POST['hiddenvalidate']) || $_POST['hiddenvalidate'] != 9957374) {
exit("Direct access not allowed");
}
感謝您的代碼。 :) –
您可以使用process_registration.php $_POST
陣列此類似:
if(!isset($_POST['yourvariable'])){
//Redirect to registration page
}
您也可以使用PHP Session。如果沒有設置會話,則將用戶重定向到註冊頁面。
我喜歡Joomla
處理此問題的方式。
論的Joomla每個PHP頁面,你會看到下面的代碼:
// No direct access
defined('_JEXEC') or die; // it's a config setting
只有頂級頁面都有這個變量包含在其中。所有其他文件,如果直接打開,關閉,從而防止任何意外的誤用/數據丟失。
可能的dublicate:http://stackoverflow.com/questions/1101895/how-to-stop-direct-execution-of-a-php-page-using-htaccess-rules – Peon