我正在創建一個接收用戶輸入(科學紙DOI)並查詢數據庫以顯示圖形的Web應用程序。我一直試圖通過檢查用戶輸入是否與正確的DOI相匹配來限制從遠程服務器(具有Web服務器的專用DMZ)以來對數據庫的連接。如果它沒有連接到數據庫將被製作,我希望這將有助於加快應用程序,如果有許多用戶立即進行查詢。檢查用戶使用PHP輸入HTML表單輸入
僞:所有論文DOI都以「10.1103 /」開頭,因爲它們都是物理論文。這部分我已經正確實施使用substr。接下來,我想在輸入端,查看每個字符,以確保它只是只包含這些字符:
- 信
- 數
- 「/」
- 「」
實施例的DOI:
- 10.1103/RevModPhys.9.1
- 10.1103/RevModPhys.76.1015
- 10.1103/PhysRevLett.95.208304
這是我的代碼:
function checkDOI($doi) {
if (substr($doi, 0, 8) != "10.1103/") {
echo "Invalid DOI";
return false;
}
for ($n = 0; $n < strlen($doi)+1; $n++) {
if (!ctype_alnum($doi[n]) && $doi[n] != "." && $doi[n] != "/") {
echo "Invalid DOI";
return false;
}
}
echo "Valid DOI";
return true;
}
if(isset($_POST['submit'])) {
$doi_input = $_POST['doi_input'];
checkDOI($doi_input);
}
我第一次使用PHP和JavaScript,僞代碼很簡單,但由於某種原因,第二條if語句出錯了。不知道我是否真的能做到這一點。回聲僅用於測試。
您是否認爲對每個輸入進行檢查會顯着降低應用程序的速度?是否值得限制連接到MySQL的數量?
一旦我有這個工作只查詢數據庫,如果檢查返回true,代碼的底部將被修改。
感謝您的幫助!
使用正則表達式,而不是一個循環。但無論如何,我不認爲它會顯着降低應用程序的速度。 – Barmar