簡體   English   中英

如何優化此代碼?

[英]How can I optimize this code?

如何優化以下PHP代碼?

<?php

if(strlen($_POST['myName']) < 2 || isNumeric($_POST['myName']))
{
    echo "Please fill in your name!";
    exit();
}

if(!is_numeric($_POST['myAge']) || strlen($_POST['myAge'] < 1))
{
    echo "Please enter only digits!";
    exit();
}

if(strlen($_POST['myRes']) < 2 || isNumeric($_POST['myRes']))
{
    echo "Please enter something!";
    exit();
}

echo "Hi " . $_POST['myName'] . "! you are " . $_POST['myAge'] . " years old and live in " . $_POST['myRes'] . "? Nice to meet you!";

?> 

如果我想測試100個輸入,該怎么辦-我將如何以最佳方式進行測試?

不了解速度,但是從樣式的角度來看,您可以像這樣改進代碼(當然是許多可能的方式之一)。

function p($key) {
    return isset($_POST[$key]) ? trim($_POST[$key]) : null;
}

$name = p('myName');
$age  = intval(p('myAge'));
$res  = p('myRes');

$err  = array();

if(!preg_match('~^\w{3,}+$~', $name))
    $err[] = "Please fill in your name!";

if($age < 3 || $age > 99)
    $err[] = "Please enter a valid age";

if(!preg_match('~^\w{3,}+$~', $res))
    $err[] = "Please fill in your location!";

if($err)
    echo implode("<br>", $err);
else
    echo "Hi $name! you are $age years old and live in $res? Nice to meet you!";

注意要點

  • 避免在代碼中直接訪問$ _POST之類的超全局變量
  • 使用正則表達式驗證字符串
  • 期望數字時強制整數轉換
  • 避免exit()
  • 使用字符串插值而不是串聯

嗯..實際上,您應該在使用任何$ _POST變量之前添加對isset()檢查,然后可以將strlen($_POST['myAge'] < 1) )更改為empty($_POST['myAge']) (注意,您將)放在錯誤的位置) empty($_POST['myAge'])

如果您要進行表單驗證,請嘗試一下http://docs.jquery.com/Plugins/validation#Validate_forms_like_you.27ve_never_been_validating_before.21。它是客戶端,因此您仍然需要某種服務器端驗證,但這總是讓我更容易

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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