ቤት / የሊኑክስ አጠቃላይ እይታ / የተረጋገጠ፣ የተረጋገጠ... እና የተረጋገጠ! በ PHP ውስጥ የውሂብ አረጋጋጮችን ማወዳደር። ፒኤችፒ የእብድ ማረጋገጫ phpን በመጠቀም ማረጋገጥ እና የውሂብ ማጽዳት

የተረጋገጠ፣ የተረጋገጠ... እና የተረጋገጠ! በ PHP ውስጥ የውሂብ አረጋጋጮችን ማወዳደር። ፒኤችፒ የእብድ ማረጋገጫ phpን በመጠቀም ማረጋገጥ እና የውሂብ ማጽዳት

ለቀጣይ ሂደት የቅጹን ማስረከቢያ ውሂብ ከመውሰዳችሁ በፊት ወደ ቅጽዎ የገባው ግቤት እንዲረጋገጥ ማድረግ በጣም አስፈላጊ ነው። በቅጹ ውስጥ ብዙ መስኮች ሲኖሩ፣ የPHP ማረጋገጫ ስክሪፕት በጣም የተወሳሰበ ይሆናል። በተጨማሪም፣ ለአብዛኛዎቹ ፎርሞች ተመሳሳይ ወይም ተመሳሳይ ማረጋገጫ እየሰሩ ስለሆነ፣ በጣም ብዙ የተባዛ ጥረት በቅጽ ማረጋገጫ ላይ ይውላል።

ስለዚህ አጠቃላይ የPHP ቅጽ ማረጋገጫ ስክሪፕት።

ይህ አጠቃላይ የPHP ቅጽ አረጋጋጭ ስክሪፕት ወደ ቅጽዎ ማረጋገጫዎችን ማከል በጣም ቀላል ያደርገዋል።

በቅጹ ውስጥ ካሉት እያንዳንዱ ንጥረ ነገሮች ጋር "የማረጋገጫ ገላጭ" ስብስብ እንፈጥራለን እና እናያይዛለን። የ"ማረጋገጫ ገላጭ" የሚፈጸመውን የማረጋገጫ አይነት የሚገልጽ ሕብረቁምፊ ነው። ለምሳሌ፣ “req” ማለት ተፈላጊ ማለት ነው፣ “አልፋ” ማለት የፊደል ቁምፊዎችን ብቻ ፍቀድ እና የመሳሰሉት ማለት ነው።

በቅጹ ውስጥ ያለው እያንዳንዱ መስክ ዜሮ ፣ አንድ ወይም ከዚያ በላይ ማረጋገጫዎች ሊኖረው ይችላል። ለምሳሌ፣ ግብአቱ ባዶ መሆን የለበትም፣ ከ25 ቻር በታች፣ አልፋ-ቁጥር፣ ወዘተ መሆን አለበት።

በቅጹ ውስጥ ለእያንዳንዱ የግቤት መስክ የማረጋገጫ ገላጭዎችን ስብስብ ማያያዝ ይችላሉ.

የ PHP ቅጽ ማረጋገጫ ስክሪፕት ያውርዱ

የ PHP ቅጽ ማረጋገጫ ስክሪፕት ከዚህ በታች ማውረድ ይችላሉ፡
የዚፕ ፋይሉ የቅጽ ማረጋገጫ ስክሪፕት formvalidator.php፣ የሰነድ እና የአጠቃቀም ናሙናዎችን ይዟል።

የ PHP ቅጽ ማረጋገጫ ስክሪፕት በመጠቀም
  • formvalidator.php በእርስዎ ቅጽ ማቀናበሪያ ስክሪፕት ውስጥ ያካትቱ
  • አንድ ጊዜ ይጠይቃል "formvalidator.php"
  • የFormValidator ነገር ይፍጠሩ እና የቅጹን ማረጋገጫ ገላጭዎችን ያክሉ።
  • $ አረጋጋጭ = አዲስ FormValidator (); $validator->ተጨማሪ ማረጋገጫ("ስም""req""እባክዎ ስም ያስገቡ"); $validator-> addValidation("ኢሜል""ኢሜል"፣"የኢሜል ግብአት ትክክለኛ የኢሜይል እሴት መሆን አለበት"); $validator-> addValidation("ኢሜል""req""እባክዎ ኢሜል ያስገቡ");

    የመጀመሪያው ነጋሪ እሴት በቅጹ ውስጥ የግቤት መስክ ስም ነው. ሁለተኛው መከራከሪያ የሚፈለገውን የማረጋገጫ አይነት የሚናገር የማረጋገጫ ገላጭ ነው። ሶስተኛው መከራከሪያ ማረጋገጫው ካልተሳካ የሚታየው የስህተት መልእክት ነው።

  • ወደ ValidateForm() ተግባር በመደወል ቅጹን ያረጋግጡ
  • if(!$validator->ValidateForm()) ( አስተጋባ "የማረጋገጫ ስህተቶች:"፤ $error_hash = $validator->GetErrors(); foreach($error_hash as $inpname => $inp_err) ( አስተጋባ "

    $inpname: $inp_err

    \n";)) ምሳሌ

    ከታች ያለው ምሳሌ ሃሳቡን የበለጠ ግልጽ ያደርገዋል

    ስም፡ ኢሜል፡

    ብጁ ማረጋገጫን በማከል ላይ

    በማረጋገጫ ገላጭዎች ያልተሰጠ ብጁ ማረጋገጫ ማከል ከፈለጉ, ማድረግ ይችላሉ. ደረጃዎች እነኚሁና:

  • ለብጁ ማረጋገጫ ክፍል ይፍጠሩ እና የ DoValidate() ተግባርን ይሽሩት
  • ክፍል MyValidator ብጁድቫሊዳተርን ያራዝመዋል ( ተግባር DoValidate(&$formars,&$error_hash) (ከሆነ(stristr($formars["አስተያየቶች"],"http://")) ($error_hash["አስተያየቶች"]="ምንም ዩአርኤሎች አይፈቀዱም በአስተያየቶች ውስጥ"; ውሸት ይመለሱ;) እውነት ይመለሱ;))

  • ብጁ የማረጋገጫ ነገር ያክሉ
  • $ አረጋጋጭ = አዲስ FormValidator (); $validator->ተጨማሪ ማረጋገጫ("ስም""req""እባክዎ ስም ያስገቡ"); $validator-> addValidation("ኢሜል""ኢሜል"፣"የኢሜል ግብአት ትክክለኛ የኢሜይል እሴት መሆን አለበት"); $validator-> addValidation("ኢሜል""req""እባክዎ ኢሜል ያስገቡ"); $custom_validator = አዲስ MyValidator (); $ አረጋጋጭ-> AddCustomValidator($custom_validator);

    ብጁ የማረጋገጫ ተግባር ከሌሎች ማረጋገጫዎች በኋላ በራስ-ሰር ይጠራል።

    የማረጋገጫ መግለጫዎች ሰንጠረዥ

    የሁሉም ማረጋገጫ ገላጭዎች ዝርዝር ይኸውና፡-

    የማረጋገጫ ገላጭአጠቃቀም
    reqሜዳው ባዶ መሆን የለበትም
    maxlen=???የገባውን ውሂብ ወደ ከፍተኛው ርዝመት ይፈትሻል። ለምሳሌ፣ የሚፈቀደው ከፍተኛ መጠን 25 ከሆነ፣ የማረጋገጫ ገላጭውን “maxlen=25” ብለው ይስጡት።
    ሚለን=???የገባውን ሕብረቁምፊ ርዝመት ወደሚፈለገው ዝቅተኛ መጠን ይፈትሻል። ምሳሌ "minlen=5"
    አልምውሂቡ ከፊደል ወይም ከቁጥር ቁምፊዎች ውጭ ሌሎች ቁምፊዎችን ከያዘ ያረጋግጡ
    አልም_ዎችየፊደል፣ የቁጥር እና የጠፈር ቁምፊዎችን ብቻ ይፈቅዳል
    ቁጥርየቁጥር ውሂብን ያረጋግጡ
    አልፋየፊደል አጻጻፍ ውሂብን ያረጋግጡ።
    አልፋ_ዎችየፊደል አጻጻፍ መረጃን ይፈትሹ እና ክፍተቶችን ይፍቀዱ።
    ኢሜይልመስኩ የኢሜል መስክ ነው እና የመረጃውን ትክክለኛነት ያረጋግጡ።
    lt=???
    ያነሰ=???
    ውሂቡ ካለፈው እሴት ያነሰ መሆኑን ያረጋግጡ። ለቁጥር መስኮች ብቻ የሚሰራ።
    ለምሳሌ፡ እሴቱ ከ1000 በታች ከሆነ የማረጋገጫ መግለጫ እንደ “lt=1000” ይስጡ
    gt=???
    ይበልጣል=???
    ውሂቡ ካለፈው እሴት የበለጠ መሆኑን ያረጋግጡ። ለቁጥር መስኮች ብቻ የሚሰራ።
    ምሳሌ፡ እሴቱ ከ10 በላይ መሆን ካለበት እንደ “gt=10” የማረጋገጫ መግለጫ ይስጡ
    regexp=???በመደበኛ አገላለጽ እሴቱ ከመደበኛው አገላለጽ ጋር መመሳሰል አለበት።
    ምሳሌ፡ “regexp=^(1.20)$” እስከ 20 የፊደል ሆሄያት ፍቀድ።
    አትምረጡ=??ይህ የማረጋገጫ ገላጭ ለተመረጡት የግቤት ዕቃዎች (ዝርዝሮች) በመደበኛነት፣ የዝርዝር ሣጥኖቹ አንድ ‹አንድ ምረጥ› የሚል ንጥል ይኖራቸዋል። ተጠቃሚው ከዚህ አማራጭ ሌላ አማራጭ መምረጥ አለበት. የዚህ አማራጭ ዋጋ ‘አንድ ምረጥ’ ከሆነ፣ የማረጋገጫ መግለጫው “donselect=Select One” መሆን አለበት።
    dontselectchkይህ የማረጋገጫ ገላጭ ለአመልካች ሳጥኖች ነው። ተጠቃሚው የተሰጠውን ሳጥን መምረጥ የለበትም። ከ ?? ይልቅ የአመልካች ሳጥን ዋጋ ያቅርቡ ??
    ለምሳሌ dontselectchk=on
    shouldselchkይህ የማረጋገጫ ገላጭ ለአመልካች ሳጥኖች ነው። ተጠቃሚው የተሰጠውን አመልካች ሳጥን መምረጥ አለበት። ከ ?? ይልቅ የአመልካች ሳጥን ዋጋ ያቅርቡ ??
    ለምሳሌ, shouldselchk=በርቷል
    dontselectradioይህ የማረጋገጫ ገላጭ ለሬዲዮ አዝራሮች ነው። ተጠቃሚው የተሰጠውን የሬዲዮ አዝራር መምረጥ የለበትም. ይልቅ የሬዲዮ አዝራር ዋጋ ያቅርቡ ??
    ለምሳሌ dontselectradio=NO
    selectradioይህ የማረጋገጫ ገላጭ ለሬዲዮ አዝራሮች ነው። ተጠቃሚው የተሰጠውን የሬዲዮ ቁልፍ መምረጥ አለበት። ይልቅ የሬዲዮ አዝራር ዋጋ ያቅርቡ ??
    ለምሳሌ፣ selectradio=አዎ
    ሴልሚን=??ከአመልካች ሳጥን ቡድን ቢያንስ n የቼክ ሳጥኖችን ይምረጡ።
    ለምሳሌ፡ ሴልሚን=3
    ብቻየሬዲዮ ቡድን አስገዳጅ ያደርገዋል። ተጠቃሚው ከሬዲዮ ቡድን ውስጥ ቢያንስ አንድ ንጥል መምረጥ አለበት።
    eqelmnt=???በቅጹ ውስጥ ያሉትን ሁለት አካላት ያወዳድሩ እና እሴቶቹ ተመሳሳይ መሆናቸውን ያረጋግጡ ለምሳሌ «የይለፍ ቃል» እና «የይለፍ ቃል ያረጋግጡ»። ተካ ??? ከሌላው የግቤት አካል ስም ጋር.
    ለምሳሌ፡ eqelmnt=confirm_pwd

    በቀደመው መጣጥፍ የራሴን ቤተ-መጽሐፍት ከሌሎች ካሉ መፍትሄዎች ጋር ለማነፃፀር ቃል ገብቼ ነበር ፣ ስለሆነም ዛሬ Aura.Filter ፣ Respect Validation ፣ Sirius Validation እና Valitron ን በመጠቀም ማረጋገጥን እንመለከታለን።


    ተጠቃሚዎችን መመዝገብን የሚያካትት በልማት ውስጥ የተወሰነ የህዝብ አገልግሎት እንዳለን እናስብ ሙሉ መዳረሻለሁሉም ተግባራት. ስለዚህ የመመዝገቢያ ቅጹ የሚከተሉትን መስኮች ይይዛል-

  • ስም.
  • በትክክል ሁለት ቃላትን መያዝ አለበት, የመጀመሪያው የተጠቃሚው ስም ሲሆን ሁለተኛው ደግሞ የአያት ስም ነው.
  • መግባት አንድ እሴት ከተላለፈ የላቲን ፊደላትን፣ ሰረዞችን እና የግርጌ ማስታወሻዎችን ብቻ መያዝ አለበት።.
  • ኢሜይል.
  • ትክክለኛ አድራሻ መያዝ አለበት።
  • ኢሜይል


    የይለፍ ቃል። መዋቀር እና ከ64 ቁምፊዎች ያልበለጠ መሆን አለበት።

    ተስማማ።

    አንድ ተጠቃሚ የአገልግሎት ውሉን መቀበሉን ለማረጋገጥ መፈተሽ ያለበት የተለመደ አመልካች ሳጥን።

    ስለዚህ በምናባዊ አገልግሎታችን ለመመዝገብ ተጠቃሚው መሙላት ያለባቸው አምስት መስኮች አሉን። እንደ ግብአት ሙሉ በሙሉ ልክ ያልሆነ ውሂብ እንደተቀበልን እናስብ፡

  • $data = [ "ስም" => "አልበርት", // ሁለት ቃላት መሆን አለበት "login" => "@lbert", // "የተከለከለ" ቁምፊ @ "ኢሜል" => "የተሳሳተ ነገር", / / ​​መሆን አለበት. ኢ-ሜል ይሁኑ "የይለፍ ቃል" => Aura.ማጣሪያ
  • ኦውራ በመጠቀም ማረጋገጥ በማጣሪያ ፋብሪካ ይጀምራል። እኛ የምናረጋግጠው ድርድር እንጂ የግለሰብ እሴት ስላልሆነ “ርዕስ ማጣሪያ” የሚባል ነገር መፍጠር አለብን።
  • ደንቦቹን እንገልፃለን Aura \u003d ማጣሪያ \ ማጣሪያ ፋብሪካ; $filter = (አዲስ ማጣሪያ ፋብሪካ)-> newSubjectFilter (); $filter-> አረጋግጥ ("ስም") -> isNotBlank () -> ነው ("ሁለት_ቃላቶች") -> setMessage ("ስሙ ሁለት ቃላት መሆን አለበት."); $filter->አረጋግጥ("መግባት") ->isBlankOr("alnum") ->setMessage("መግባት ከገለጹ የላቲን ቁምፊዎችን ብቻ መያዝ አለበት"); $filter->አረጋግጥ("ኢሜል") ->isNotBlank() ->is("ኢሜል") ->setMessage("እባክዎ የሚሰራ ኢሜይል አድራሻ ያስገቡ"); $filter-> አረጋግጥ("የይለፍ ቃል") ->isNotBlank() ->is("strlenMax"፣ 64) ->setMessage("እባክዎ የይለፍ ቃልዎን ይፃፉ"); $filter->አረጋግጥ("ተስማምቷል") ->ነው("ተመልሶ መደወያ"፣ ተግባር($subject፣ $ field) ($subject->($መስክ) === እውነት ይመልሱ፤ ))->setMessage("ያስፈልገዎታል) በአገልግሎት ውሉ ይስማሙ.");
  • እንደሚመለከቱት, የደንቦቹ መግለጫ በጣም ቀላል ነው. Aura.Filter ከሳጥኑ ውስጥ ሙሉ ጠቃሚ ህጎችን ያቀርባል እና አንዳንዶቹ ከላይ ባለው ምሳሌ ውስጥ ጥቅም ላይ ውለዋል፡
  • የNotBlank ዘዴ ነው። መስኩ ባዶ እሴት ሊኖረው እንደማይችል ይገልጻል።አልም.
  • የሁለት_ቃላቶችን ህግ እንዳልገለጽኩ አስተውለህ ይሆናል። በተፈጥሮ, በ Aura.Filter ውስጥ እንደዚህ ያለ ህግ የለም, ስለዚህ አንድ መፍጠር አለብን. ሰነዱ እንደሚለው ፣ ይህ ለደንቡ የተለየ ክፍል በመጠቀም ይከናወናል-


    /** * የተጠቃሚውን ስም የሚያረጋግጥ ህግ።

    * የተጠቃሚ ስም ሁለት ቃላትን ያቀፈ ነው-የመጀመሪያ እና የአያት ስም ፣ በአንድ ቦታ ይለያሉ።


    */ ክፍል የተጠቃሚ ስም ህግ (/** * የተጠቃሚውን ስም ያረጋግጣል። * * @param object|array $subject * @param string $ field * @param int $max * * @return bool */ የህዝብ ተግባር __invoke($subject, $ መስክ፣ $max = null) ( $እሴት = $ ርዕሰ ጉዳይ->($ መስክ)፤ ከሆነ (! is_scalar($ value)) (ሐሰት መመለስ፤) መመለስ (bool) preg_match("/ ^+\s+$/u" , $ እሴት);


    ሁለተኛው እርምጃ የማጣሪያ ፋብሪካው ስለ አዲሱ መመሪያችን እንዲያውቅ ማድረግ ነው። የመጀመሪያውን ክርክር እንደ አንድ ደንብ ወደ ማጣሪያ ፋብሪካ በማለፍ ይከናወናል፡-

    የሚቀጥለው እርምጃ አዲስ ህግ እንደፈጠርን እና ልንጠቀምበት እንደምንፈልግ ለአውራ ማሳወቅ ነው። ይህ ለፋብሪካው የመጀመሪያ ክርክር ብዙ ደንቦችን በማለፍ ይከናወናል-

    Aura \ Filter \ Filter Factory ይጠቀሙ; $rules = ["ሁለት_ቃላቶች" => ተግባር() (አዲስ የተጠቃሚ ስም ደንብ ይመለሱ፤ )]; $filter = (አዲስ የማጣሪያ ፋብሪካ($rules))->አዲስ ርዕሰ ጉዳይ ማጣሪያ();

    አሁን የእኛ የሁለት_ቃላቶች ህግ እንደማንኛውም መደበኛ ህግ በተመሳሳይ መንገድ ጥቅም ላይ ሊውል ይችላል።


    ግብረ መልስ


    እንደምታስታውሱት፣ እኛ የምናረጋግጠው ገቢ ውሂብ ሙሉ በሙሉ ልክ ያልሆነ ነው፣ ምክንያቱም እያንዳንዱ መስክ የተሳሳተ እሴት ስላለው ወይም ጨርሶ ስለሌለው። ስለዚህ, በማረጋገጫው ምክንያት ስለእነሱ ስህተቶች እና ተዛማጅ መልእክቶች እንቀበላለን ተብሎ ይታሰባል.

    በAura.Filter እንደሚከተለው አረጋግጠናል፡- $valid = $filter->ተግብር($data); ከሆነ (! $valid) ($failures = $filter->getFailures();$messages =$failures->getMessages();)ውስጥ


    $መልእክቶች

    ድርድር እየተፃፈ ነው፣ ስለዚህ መልእክቶችን ለማሳየት ሁለት የተከማቸ ፎክ እንፈልጋለን።


    አክብሮት ማረጋገጫ


    Respect\Validation\Validator እንደ v ይጠቀሙ; $data = [ "ስም" => "አልበርት", // ሁለት ቃላት መሆን አለበት "login" => "@lbert", // "የተከለከለ" ቁምፊ @ "ኢሜል" => "የተሳሳተ ነገር", / / ​​መሆን አለበት. be an e-mail here "password" => "" // የይለፍ ቃሉ በፍፁም አልተገለፀም // "ተስማማ" በድርድር ውስጥ የለም ምክንያቱም ተጠቃሚው ሳጥኑ ላይ ምልክት ስላላደረገ ];

    ደንቦቹን መግለጽ


    እንደ Aura.Filter፣ ለተጠቃሚ ስም የራሳችን የማረጋገጫ ህግ እንፈልጋለን፣ ስለዚህ እዚያ እንጀምር፡-

    የስም ቦታ MyNamespace; አክብሮት \ ማረጋገጫ \ ደንቦች \ AbstractRule ይጠቀሙ; ክፍል የተጠቃሚ ስም ደንብ AbstractRuleን ያራዝመዋል (የሕዝብ ተግባር የተረጋገጠ($input) (ተመለስ (bool) preg_match("/^+\s+$/u"፣$input)


    የውጫዊ ደንቦቹ ኤፒአይ ከAura.Filter ጋር ተመሳሳይ ነው፣ ከ__invoke() አስማት ይልቅ የተረጋገጠ() ዘዴ ብቻ ጥቅም ላይ ይውላል። ለእኔ፣ ይህ ኤፒአይ፣ ቀላል እና የበለጠ ለመረዳት የሚቻል መስሎ ታየኝ። ደህና ፣ ወደ ኮንትሮሊዮ ቅርብ ነው :).


    በሰነዱ ውስጥ ስለዚህ ጉዳይ ምንም አላገኘሁም ፣ ሆኖም ፣ ከህጉ እራሱ በተጨማሪ ፣ ለእሱ የእራስዎን ልዩ ዓይነት መፍጠር ያስፈልግዎታል። የልዩ ክፍል ስም የሩል መደብ ስም እና የድህረ ቅጥያ ማካተት አለበት።

    በስተቀር


    Respect\Validation\Exceptions\NstedValidationException ይጠቀሙ; ክፍል የተጠቃሚ ስምRuleException NstedValidationExceptionን ያራዝመዋል (//)

    ደህና, በመጨረሻ የእኛን ውሂብ ማረጋገጥ እንችላለን. በመጀመሪያ፣ አዲሱን ደንባችንን እሱ እንዲያውቀው እና ወደፊትም እንድንጠቀምበት ወደ አረጋጋጭ እናስተላልፋለን። በአክብሮት ማረጋገጫ ውስጥ ይህ የሚደረገው በ() ዘዴ በመደወል መደበኛ ያልሆኑ ደንቦች የሚገኙበትን የስም ቦታ በማለፍ ነው። v :: ጋር ("MyNamespace \\");አሁን ሁሉም መደበኛ ያልሆኑ ደንቦች በስም ቦታ ውስጥ ይገኛሉ


    My Namespace

    , በአረጋጋጭ "እውቅና" ይሆናል. ቀጣዩ ደረጃ አስፈላጊ የሆኑትን ደንቦች መግለፅ እና ማረጋገጥ ነው. v :: ባህሪ ("ስም"፣ v:: የተጠቃሚ ስም ደንብ()) -> ባህሪ("መግባት"፣ v:: alnum("-_")) -> ባህሪ("ኢሜል"፣v::ኢሜል()) -> ባህሪ ("የይለፍ ቃል"፣ v:: ባዶ ባዶ()-> ሕብረቁምፊ አይነት()->ርዝመት(ኑል፣ 64)) -> ባህሪ("ተስማምተናል"፣v::trueVal()) ->አስረጅ((ነገር) $ ውሂብ);ደንባችንን በባህሪው ላይ እንዴት እንደምንተገበር አስተውል


    ስም . እዚህ የደንቡ ክፍል ስም ወደ አረጋጋጭ ዘዴ ስም ተቀይሯል. የተቀሩት ደንቦች, በአጠቃላይ, ሊታወቁ የሚችሉ ናቸው.ድርድር ለምን እንደምናቀርብ ለየብቻ መጥቀስ ተገቢ ነው።

    Aura \ Filter \ Filter Factory ይጠቀሙ; $rules = ["ሁለት_ቃላቶች" => ተግባር() (አዲስ የተጠቃሚ ስም ደንብ ይመለሱ፤ )]; $filter = (አዲስ የማጣሪያ ፋብሪካ($rules))->አዲስ ርዕሰ ጉዳይ ማጣሪያ();

    እንደ Aura.Filter በተለየ፣ የአክብሮት አረጋጋጭ ማረጋገጥ ሲወድቅ ልዩ ነገር ይጥላል። እና ይህ የተለየ የማረጋገጫ ስህተት መልዕክቶችን ይዟል። ስለዚህ፣ አሁን የሚታየው ምሳሌ እንደሚከተለው መፃፍ አለበት።


    ይሞክሩ ( v :: በ("RespectValidationExample \\"); v :: ባህሪ ("ስም"፣ v:: የተጠቃሚ ስም ደንብ ()) -> ባህሪ("መግቢያ"፣ v:: alnum("-_")) - > ባህሪ("ኢሜል"፣ቁ::ኢሜል()) ->ባህሪ("የይለፍ ቃል"፣v::notEmpty()->stringType()->ርዝመት( null፣ 64)) -> ባህሪ("ተስማማ"፣ v :: TrueVal ()) -> አስርት ((ነገር) $መረጃ) ያዝ (NestedValidationException $ex) ($መልእክቶች = $ex->የመልእክት መቀበል()

    GetMessages()ን በመጠቀም አረጋጋጩ በማረጋገጫው ሂደት የሰበሰባቸውን ሁሉንም መልዕክቶች ጠፍጣፋ ድርድር እናገኛለን። ድርድርን በመጣል፣ እንደዚህ ያለ ነገር እናገኛለን፡-


    ድርድር (5) ( => ሕብረቁምፊ (29) "የውሂብ ማረጋገጥ አልተሳካም ለ%s" => ሕብረቁምፊ (60) "መግቢያ ፊደላትን (a-z) ብቻ መያዝ አለበት ፣ አሃዞች (0-9) እና "-_" => ሕብረቁምፊ (25) "ኢሜል ትክክለኛ ኢሜል መሆን አለበት" => ሕብረቁምፊ (26) "የይለፍ ቃል ባዶ መሆን የለበትም" => ሕብረቁምፊ (32) "የተስማሙበት ባህሪ መገኘት አለበት" )

    መልእክቶቹን ወደ ራስህ መቀየር ትችላለህ። ምናልባት ይህን ቤተ-መጽሐፍት በሆነ መንገድ ተረድቼው ይሆናል፣ ነገር ግን ይህ ሂደት ለእኔ ግልጽ ሆኖ አልታየኝም፡ የፈላጊ መልእክት () ዘዴን በተያዘ ልዩ ሁኔታ ላይ መጠቀም አለብህ፣ ይህም መልዕክቶችን ለባህሪያት ሳይሆን ለህጎች የምትገልፅበት ነው።


    $ex->findMessages([ "userNameRule" => "የተጠቃሚ ስም ሁለት ቃላትን የያዘ መሆን አለበት"፣ "alnum" => "መግቢያህን አንወድም። ኢሜልህን ልትሰጠን ትፈልጋለህ።", "notEmpty" => "እሺ የይለፍ ቃልህ የት ነው?", "ተስማምተህ" => "አለመስማማትህ ያሳዝናል" ]);

    ስህተቱ ምን እንደሆነ አላውቅም፣ ግን እስካሁን ያልገባኝ ሁለት ነገሮች አሉ። ከላይ በተጠቀሰው መንገድ ደንቦቹን በመግለጽ ያገኘነው ይኸው ነው።


    array(5) ( => string (40) "የተጠቃሚ ስም ሁለት ቃላት መሆን አለበት።" => ሕብረቁምፊ(31) "መግባትህን አንወድም።" > ሕብረቁምፊ (5) "እሺ፣ የይለፍ ቃልህ የት ነው?"

    እንደሚመለከቱት ፣ የኢሜል መስኩ መልእክት አልተተገበረም ፣ መደበኛው ይቀራል። ነገር ግን በመረጃ ጠቋሚ 4 ላይ ያለው መልእክት ተቃራኒ ነው! እና ይሄ ምንም እንኳን የደንቡን ስም ሳይሆን የሜዳውን ስም አልተጠቀምኩም. የደንቡን ስም (trueVal) ብጠቀም ኖሮ መልእክቴ የሆነ ቦታ ጠፋ። የዚህ ቤተ-መጽሐፍት ልምድ ካላቸው ተጠቃሚዎች የተሰጡ አስተያየቶች በጣም እንቀበላለን።

    የሲሪየስ ማረጋገጫ

    እሺ፣ ወደሚቀጥለው ቤተ-መጽሐፍት እንሂድ እና ተመሳሳይ ስራዎችን እንዴት እንደሚይዝ እንይ።

    ደንቦቹን መግለጽ

    አንዴ እንደገና የተጠቃሚ ስም ህግን መግለፅ አለብን። እንደዚህ አይነት ነገር እንጽፋለን፡-


    class UserNameRule ያራዝመዋል AbstractRule (// Error Messages const MESSAGE = "የተጠቃሚ ስም ሁለት ቃላት መሆን አለበት"፤ const LABELED_MESSAGE = "(መለያ) ሁለት ቃላት መሆን አለበት"፤ የህዝብ ተግባር አረጋግጧል($value, $valueIdentifier = null) ( መመለስ (bool) preg_match ("/ ^+\s+$/u"፣ $እሴት))

    እባክዎ ቀደም ሲል ከተወያዩት ቤተ-መጻሕፍት ጋር ሲወዳደር የአቀራረቦችን ልዩነት ልብ ይበሉ። ንብረቶችን፣ ዘዴዎችን ወይም የሕግ ነጋሪ እሴቶችን ከመጠቀም ይልቅ ሁለት ዓይነት መልዕክቶችን በቋሚዎች እንገልጻለን።


    አሁን የማረጋገጫ አመክንዮ እንግለጽ፡-


    $ አረጋጋጭ = አዲስ አረጋጋጭ; $validator ->አክል("ስም"፣ "የሚያስፈልግ | MyApp\validation\Rule\UserNameRule") ->አክል("መግቢያ"፣"አስፈላጊ | alphanumhyphen"፣ null፣ "መግባት የላቲን ፊደላትን፣ ሰረዞችን እና የግርጌ ማስታወሻዎችን ብቻ ሊይዝ ይችላል። ") -> አክል("ኢሜል"፣ "የሚያስፈልግ | ኢሜይል"፣ ባዶ፣ "እባክዎ ትክክለኛ ኢሜል ያስገቡ።" የይለፍ ቃል፣ ጌታዬ።

    እንደሚመለከቱት, የሕጎች ስብስብ በጣም ቀላል እና ሊነበብ የሚችል ነው. ለገለፃ፣ በአግድም አሞሌዎች የተለዩ ስሞችን እንጠቀማለን። ይህ አካሄድ በላራቬልና በኮንትሮሊዮ ጥቅም ላይ ከዋለ ጋር ተመሳሳይ ነው።


    የ add() ዘዴ አራተኛው ነጋሪ እሴት ሲርየስ ማረጋገጫው ካልተሳካ የሚጠቀመውን የማረጋገጫ ስህተት መልእክት ይገልጻል። ለምን ለአዲሱ መመሪያችን መልእክት አልጨመርንበትም? የተጠቃሚ ስም ደንብ?


    $validator->አክል("ስም"፣ "የሚፈለግ | MyApp\validation\Rule\User NameRule")

    ይህ የሆነበት ምክንያት መልእክቶቹ ቀድሞውኑ በክፍል ቋሚዎች ውስጥ ስለተገለጹ ነው፡-


    class UserNameRule ያራዝመዋል AbstractRule (// የስህተት መልዕክቶች const MESSAGE = "የተጠቃሚ ስም ሁለት ቃላት መሆን አለበት"፤ ...

    ሌላው አማራጭ የአረጋጋጩን በራሱ የ addMessage() ዘዴን መጠቀም ነው።


    $validator-> addMessage("ኢሜል"፣ "እባክዎ የሚሰራ ኢ-ሜይል ያስገቡ")፤

    እባክዎን ያስተውሉ ብጁ ህጎች በክፍላቸው ሙሉ ስም ተለይተው ይታወቃሉ፣ በኮንትሮሊዮ ውስጥ ግን ተለዋጭ ስም መግለጽ ይችላሉ።

    Aura \ Filter \ Filter Factory ይጠቀሙ; $rules = ["ሁለት_ቃላቶች" => ተግባር() (አዲስ የተጠቃሚ ስም ደንብ ይመለሱ፤ )]; $filter = (አዲስ የማጣሪያ ፋብሪካ($rules))->አዲስ ርዕሰ ጉዳይ ማጣሪያ();

    ማረጋገጫን ለማከናወን፣ ውሂቡን ወደእሱ በማስተላለፍ የማረጋገጫ ዘዴን ያጸድቃል() ብለን እንጠራዋለን፡-


    $data = [ "ስም" => "አልበርት", // ሁለት ቃላት መሆን አለበት "login" => "@lbert", // "የተከለከለ" ቁምፊ @ "ኢሜል" => "የተሳሳተ ነገር", / / ​​መሆን አለበት. be an e-mail here "password" => "" // የይለፍ ቃሉ በፍፁም አልተገለፀም // "ተስማማ" በድርድር ውስጥ የለም ምክንያቱም ተጠቃሚው ሳጥኑ ላይ ምልክት ስላላደረገ ]; $validator-> አረጋግጥ($data);

    ከአክብሮት በተቃራኒ ሲሪየስ የተለየ ነገር አይጥልም ፣ ግን በቀላሉ ይመለሳል የውሸት. የማረጋገጫ ስህተት መልዕክቶች በgetMessages() አረጋጋጭ ዘዴ በኩል ሊገኙ ይችላሉ። በባህሪያት የተቧደኑ ስህተቶችን ይመልሳል፣ ስለዚህ ስህተቶቹን ለማለፍ ሁለት የፊት ዑደቶች ያስፈልጉናል፡


    foreach ($veridator->getMessages() እንደ $attribute => $messages) ( foreach ($messages as $message) ( echo $message->getTemplate() . "\n"; ) )

    እዚህ $message የክፍል ነገር ነው። ሲሪየስ\ማረጋገጫ\ስህተት መልእክትየምንፈልገውን መልእክት የሚመልስ getTemplate() ዘዴ ያለው።

    Valitron ደንቦቹን መወሰን

    የመጀመሪያው ልዩነት: አዲስ ህግን ለመጨመር የተለየ ክፍል መፍጠር አያስፈልግዎትም. በቀላሉ የቦሊያንን ውጤት የሚመልስ መዝጊያን መጠቀም ይችላሉ።


    ብጁ ህጎችን ለመጨመር ቫሊትሮን የማይንቀሳቀስ ዘዴ addRule() አለው፣ በዚህ ውስጥ የመጀመሪያዎቹ ሁለት ነጋሪ እሴቶች የሚፈለጉበት እና ሶስተኛው አማራጭ ነው። ይህንን ዘዴ ወድጄዋለሁ፣ ምክንያቱም እዚህ የደንብ መለያ፣ አመክንዮ እና የስህተት መልእክት በአንድ ቦታ ተጠቁሟል።


    Valitron \ Validator ይጠቀሙ; አረጋጋጭ:: addRule("ሁለት_ቃላቶች"፣ ተግባር($ መስክ፣ $ እሴት) (መመለሻ (ቦል) preg_match("/^+\s+$/u"፣ $value)፣ "የተጠቃሚ ስም በትክክል ማካተት አለበት ሁለት ቃላት ");

    ሁለተኛው ልዩነት ደንቦቹ በባህሪያት ላይ እንዴት እንደሚተገበሩ ነው. በቀደሙት ጉዳዮች ሁሉ፣ አንድ ባህሪ፣ እንደ ተቀዳሚ ነገር እንደሆነ አይተናል።


    ቫሊትሮን የተለየ መንገድ ወሰደ እና የማረጋገጫ ደንቦችን አስቀድማለች። ደንቦችን በመግለጽ፣ ለእነዚህ ደንቦች ባህሪያትን እየተተገበሩ ያሉ ይመስላሉ፣ እና በተቃራኒው አይደለም።


    $አረጋጋጭ = አዲስ አረጋጋጭ($data); $validator ->ደንብ("ሁለት_ቃላቶች""ስም")->መለያ("") ->ደንብ("የሚፈለግ"፣["ስም"፣ "መግባት"፣ "ኢሜል"፣ "የይለፍ ቃል"፣ "ተስማምተናል" ] ) -> ደንብ ("slug", "login") -> ደንብ ("ኢሜል", "ኢሜል") -> ደንብ ("ተቀባይነት ያለው", "ተስማምቷል");

    ከምሳሌው እንደሚታየው, በደንብ () ዘዴ ውስጥ በመጀመሪያ የደንቡን ስም እንጽፋለን, እና ከዚያ በኋላ ብቻ ከዚህ ህግ ጋር መዛመድ ያለባቸውን ባህሪያት እንጠቁማለን. ይበልጥ ግልጽ የሆነ ምሳሌ የሚፈለገው ደንብ ነው፣ ይህም የዚያ ደንብ ባህሪያት እንዴት "እንደሆኑ" ያሳያል።


    ቫሊትሮን (እንደ ሌሎች እንደገመገምናቸው መፍትሄዎች) መደበኛ የስህተት መልዕክቶችን ያቀርባል። እነሱን ብቻ ከተጠቀምክ እያንዳንዱ መልእክት የሚጀምረው በተዛማጅ ባህሪው ስም እንደሆነ ታያለህ።


    መደበኛ ያልሆኑ የስህተት መልእክቶች ጥቅም ላይ በሚውሉበት ጊዜም ቫሊትሮን ስሞችን በመልዕክት ጽሁፍ ውስጥ ይለውጣል። ለዚያም ነው የመለያ ስምን ለማስወገድ የመለያ() ዘዴን ከባዶ ሕብረቁምፊ ጋር የተጠቀምነው።


    $validator-> ደንብ ("ሁለት_ቃላቶች"፣ "ስም") -> መለያ("") ግብረመልስ

    በተለይም ማረጋገጫን በተመለከተ፣ የValitron ቤተ-መጽሐፍት ኤፒአይ በአንቀጹ ላይ ካየነው በተግባር የተለየ አይደለም። ማረጋገጫን ለመስራት አረጋጋጭ ዘዴን አረጋጋጭ() ብለን እንጠራዋለን፡-


    $ አረጋጋጭ-> አረጋግጥ ();

    የማረጋገጫ የስህተት መልዕክቶች የጌት ስህተቶች() ዘዴን በመጠቀም ሰርስሮ ማውጣት ይቻላል፡-


    $ አረጋጋጭ-> ስህተቶች ();

    ለመልእክቱ የተለየ ክፍል ከሌለ በስተቀር፣ እዚህ ያሉ መልዕክቶች በሲሪየስ ማረጋገጫ ውስጥ በባህሪያት ይቦደዳሉ፣ እና መደበኛ ባለብዙ-ልኬት ድርድር እናገኛለን።


    foreach ($ አረጋጋጭ->ስህተት() እንደ $attribute => $መልእክቶች) ( foreach ($ መልክት እንደ $ መልዕክት) ( አስተጋባ $ መልዕክት . "\n"; ) ) Kontrolio

    እና በመጨረሻም ፣ ለዛሬ የመጨረሻው ቤተ-መጽሐፍት ኮንትሮሊዮ የተባለ የራሴ ልማት ነው።

    ደንቦቹን መግለጽ

    በድጋሚ, ለአምስተኛ ጊዜ, ለተጠቃሚ ስም የማረጋገጫ ደንብ እንፈጥራለን. ሁሉም ነገር በአንጻራዊነት ቀላል እና መደበኛ ነው-


    የስም ቦታ MyProject \ ማረጋገጫ \ ደንቦች; Kontrolio\Rules\AbstractRule ይጠቀሙ; ክፍል TwoWords Kontrolio\Rules\AbstractRuleን ያራዝመዋል (የህዝብ ተግባር isValid($input = null)

    አሁን ፋብሪካን እንፈጥራለን እና የማራዘም () ዘዴን በመጠቀም በውስጡ ህግን እንመዘግባለን-


    የስም ቦታ MyProject; Kontrolio \ ፋብሪካን ይጠቀሙ; MyProject \validation\ Laws \ TwoWords ይጠቀሙ; $ ፋብሪካ = Kontrolio \ ፋብሪካ :: getInstance () -> ቅጥያ ();

    ደንቡን ከተመዘገብን በኋላ, በስም ጨምሮ - ሁለት_ቃላቶችን ልንጠቀምበት እንችላለን. አረጋጋጭ እንፍጠር፡-


    $data = [ "ስም" => "አልበርት", // ሁለት ቃላት መሆን አለበት "login" => "@lbert", // "የተከለከለ" ቁምፊ @ "ኢሜል" => "የተሳሳተ ነገር", / / ​​መሆን አለበት. be an e-mail here "password" => "" // የይለፍ ቃሉ በፍፁም አልተገለፀም // "ተስማማ" በድርድር ውስጥ የለም ምክንያቱም ተጠቃሚው ሳጥኑ ላይ ምልክት ስላላደረገ ]; $rules = [ "ስም" => "ሁለት_ቃላቶች", "መግቢያ" => "አንዳንድ ጊዜ|አልፋዳሽ", "ኢሜል" => "ኢሜል", "የይለፍ ቃል" => "ርዝመት: 1.64", "ተስማምተዋል" = > " ተቀባይነት" ]; $messages = [ "ስም" => "የተጠቃሚ ስም ሁለት ቃላትን ያካተተ መሆን አለበት"፣ "login" => "መግቢያህን አንወድም። us your email . ]; $validator = $ፋብሪካ-> አድርግ($ ውሂብ፣ $ህጎች፣ $መልእክቶች)፤

    በላራቬል ውስጥ ጥቅም ላይ ከዋለ ጋር ተመሳሳይ የሆነ አገባብ በመጠቀም ህጎቹን ገለጽን፣ ምንም እንኳን የበለጠ የቃል ስሪት ልንጠቀም ብንችልም፡-


    $rules = [ "ስም" => አዲስ ሁለት ቃላት፣ "login" => , "ኢሜል" => አዲስ ኢሜል፣ "የይለፍ ቃል" => አዲስ ርዝመት(1፣ 64)፣ "ተስማማ" => አዲስ ተቀብሏል ];

    ግብረ መልስ


    $ አረጋጋጭ-> አረጋግጥ ();

    ማረጋገጥ የሚጀምረው በተመሳሳዩ የማረጋገጫ() ዘዴ በመጠቀም ነው፡-



    አሁን ከgetErors() ወይም GetErrorsList() ዘዴዎች አንዱን በመጠቀም የስህተት መልዕክቶችን ማግኘት እንችላለን። የመጀመሪያው ዘዴ ይበልጥ ውስብስብ የሆነ የስህተት ውጤት እንዲኖር ያስችላል, ሁለተኛው ደግሞ ጠፍጣፋ ድርድርን ይመልሳል. getErors()ን በመጠቀም እንደዚህ አይነት መልዕክቶችን ማውጣት እንችላለን፡-


    እና በgetErorsList() ቀለል ያለ የመልእክት ዝርዝር መስራት ትችላለህ፡-

    የታችኛው መስመር

  • በዚህ ጽሑፍ ውስጥ የሚከተሉትን ቤተ-መጻሕፍት የመጠቀም ምሳሌዎችን አሳይቻለሁ።
  • ኦውራ.ማጣሪያ
  • የሲሪየስ ማረጋገጫ
  • አክብሮት ማረጋገጫ
  • ቫሊትሮን
  • መቆጣጠር


    “የገሃዱ ዓለም ምሳሌ” በጣም ቀላል ሊመስል ይችላል። መስማማት አለብኝ፣ ምክንያቱም፣ በእርግጥ፣ አንዳንድ የቤተ-መጻህፍት ችሎታዎች ከጽሁፉ ውጭ ስለነበሩ። በመርህ ደረጃ, ፍላጎት ካሎት, ባህሪያቸውን እራስዎ ማጥናት ይችላሉ.


    እያንዳንዱ ቤተ-መጻሕፍት የየራሳቸውን ገፅታዎች አሏቸው እና ጥቁር ጎኖች አሏቸው, ስለዚህ አንዱን መምረጥ ጣዕም እና ፈታኝ ጉዳይ ይመስለኛል.

    ስላነበቡ እናመሰግናለን። ትክክለኛውን ምርጫ ያድርጉ.

    መለያዎች: መለያዎችን ያክሉ

    መልካም ምሽት ሁሉም ሰው (እንደ ምሽት የበለጠ - የአርታዒ ማስታወሻ). ዛሬ ያንን ትንሽ እናሻሽለዋለን. በመጀመሪያ፣ በPHP ውስጥ የቅጽ ማረጋገጫ እንዴት እንደሚሰራ እንማር እና አንዳንድ የደህንነት ማጭበርበሮችን እናድርግ።

    ስለዚህ, ከታች ያለውን ኮድ ይመልከቱ እና የሚከተሉትን ለውጦች እና ለለውጦቹ የሚከተሉትን ምክንያቶች ያስተውሉ. ሁሉንም አዳዲስ መስመሮች በቀለም አጉልቻለሁ።

    የቅጽ መስኮቹ ስም ተቀይሯል። ሊጠይቁ ይችላሉ - ለምንድነው ይህ ለምን ያስፈልገናል? ቀላል ነው, እመልስልሃለሁ. እኔ እስከማውቀው ድረስ አንዳንድ አይፈለጌ ቦቶች ቅፆችን በመፈለግ ድህረ ገጾችን ይጎትቱና በእነዚህ መስኮች ስም ይሞላሉ። በንድፈ ሀሳብ, ግጥሚያ ካላገኙ, ወደ ቤት ይሄዳሉ, እኛ የምንፈልገው ነው. እርግጥ ነው, የዚህ ጥበቃ ደረጃ በጣም ጥሩ አይመስለኝም, ነገር ግን አይጎዳንም, እና አይፈለጌ መልእክት በ 1 ፊደል ቢቀንስ, ጥሩ ይሆናል =). የኢሜል አድራሻው በትክክል እንደገባ በማረጋገጥ ላይ። መስመር 17 የሌላውን ኦፕሬተር ይጠቀማል ፣ ይህም ለእኛ አዎንታዊ መልስ ከተመለሰ ይጣራል ፣ ማለትም ፣ የኢሜል አድራሻው ጨርሶ ጠፍቷል ፣ ማለትም ፣ አልገባም ብሏል። እዚህ ጋር የገባውን አድራሻ ለማነፃፀር የሚያስችለውን የ preg_match ተግባርን እንጠቀማለን።መደበኛ አገላለጽ . ምናልባት በኋላ ስለ መደበኛ አገላለጾች በአጭሩ እጽፋለሁ, አሁን ግን ያንን ማወቅ ጠቃሚ ነውየእኛ ሕብረቁምፊ የሚፈተሸበት አብነት ይፈጥራል። እና በእኛ ሁኔታ, የገባው አድራሻ ከአገላለጹ ጋር የማይመሳሰል ከሆነ, እንደገና ስህተት ይታያል. ለምሳሌ፣ ጥቂት ተጨማሪ መደበኛ መግለጫዎች እዚህ አሉ፡-
    |^[-а-яе\s\.,;:\?!]+$|i- ይህ መደበኛ አገላለጽ የሩስያ ፊደላትን ብቻ እና አንዳንድ ቁምፊዎችን እንደ ቦታ, ጊዜ, ኮማ, ወዘተ የመሳሰሉትን እንድትጠቀም ይፈቅድልሃል.
    #http://[-a-z0-9_.]+[-a-z0-9_:@&?=+,.!/~*’%$]*\.(html?|php)#i- እና ይህ አገላለጽ በበይነመረቡ ላይ ያለውን አድራሻ ትክክለኛውን የፊደል አጻጻፍ እንዲፈትሹ ይፈቅድልዎታል.

    በመቀጠል፣ ሌላውን ኦፕሬተር እንጠቀማለን። በማንኛውም መጠን እራስዎ የማረጋገጫ ህጎችን መፍጠር ይችላሉ ፣እንደ ኢሜል አድራሻ ለመፈተሽ ካሉ አዲስ ብቻ ይጨምሩ እና ደስተኛ ይሆናሉ ።




    የእውቂያ ሰው፡-



    የእውቂያ ኢሜይል፡-



    መልእክት፡-






    ወደ ማንኛውም ያልተለመደ ነገር ሳይጠቀሙ የ PHP ቅጾችዎን በዚህ መንገድ ማረጋገጥ ይችላሉ። በሚቀጥለው ጊዜ በቅጾች ርዕስ ላይ ባለው ልጥፍ ውስጥ ፣ እንደማስበው ፣ በ jQuery ውስጥ ቅጾችን ማረጋገጥ ይታሰባል። እስከዚያው ድረስ አስተያየቶቻችሁን እና ምኞቶቻችሁን እጠብቃለሁ። መልካም ምሽት እና መልካም ጠዋት ሁሉም ሰው =).

    ስለ POST ወይም GET መረጃ ትክክለኛነት እንነጋገራለን ፣ ምንም እንኳን በመርህ ደረጃ ይህ በሌሎች ዘዴዎች በተቀበሉት እንደ ኩኪዎች ላይም ሊተገበር ይችላል። ማንኛውንም የዌብ አፕሊኬሽን ስታዳብሩ ከተጠቃሚዎች ጋር ለመስተጋብር በይነ መፃፍ እና በተፈጥሮ ለተጠቃሚዎች መረጃ ወደ አገልጋዩ እንዲልኩ የተለያዩ ቅጾችን መፍጠር አለብህ። ለምሳሌ, እነዚህ አስተያየቶች ሊሆኑ ይችላሉ. የተቀበለው መረጃ ከአይነት፣ መጠን እና ከተጠቀሰው ክልል ጋር የሚዛመድ መሆኑን ለማየት መፈተሽ እንደሚያስፈልግ ለሁሉም ግልጽ እና ግልጽ ይመስለኛል። በመጀመሪያ ደረጃ, ይህ ለስርዓቱ, ለድር ጣቢያ ወይም ለዳታቤዝ ደህንነት ያስፈልጋል, ምክንያቱም... በስህተት የተላለፈ ውሂብ ወይም ሆን ተብሎ በደንብ ያልተፈጠረ ጥያቄ የአጥቂ መዳረሻን ሊከፍት ይችላል።

    በሁለተኛ ደረጃ፣ ያልተረጋገጠ መረጃ፣ የተሳሳተ ከሆነ፣ የስክሪፕቱን፣ የስርዓቱን ወይም የሙሉውን አገልጋይ ያልተረጋጋ አሠራር ሊያስከትል ይችላል። ስለዚህ, ሁሉም መረጃዎች መፈተሽ እና ሁለት ጊዜ መፈተሽ አለባቸው;

    በማንኛውም ሰበብ፣ በማንኛውም ሁኔታ ከተጠቃሚዎች የተቀበለውን ውሂብ አትመኑ። የተቀበለውን ውሂብ እንደገና የሚያጣራ ኮድ ለመጻፍ በቀላሉ በጣም ሰነፍ ስንሆን ወይም እንደዚያ ተስፋ እናደርጋለን ነባር ዘዴዎችመፈተሽ በቂ ነው, በዚህም ምክንያት ለራሳችን ስምምነት እናደርጋለን.

    ከርዕሰ ጉዳዩ ትንሽ ማዞር፡-
    በፕሮጀክቶች ላይ መስራት፣ ድረ-ገጾችን፣ ስክሪፕቶችን እና ሌሎች ስርዓቶችን ማዳበር እና ፕሮግራሚንግ ማድረግ ሁሉንም ነፃ ጊዜዬን ይወስዳል (ከስራ ሰዓቱ በተጨማሪ) በሌላ አነጋገር ይህንን ስራ የምሰራው በቀን ለሚፈቀደው ከፍተኛ የሰዓት ብዛት ነው። ከጊዜ ወደ ጊዜ የሆነ ነገር ለመደሰት ወይም ለፍላጎት ብቻ መሞከር ያስፈልጋል። በውጤቱም፣ በችኮላ የተሰሩ ጣቢያዎች፣ በቤት ውስጥ የተሰሩ ሞተሮችን ወይም የጥንታዊ ቅጂዎችን ሲኤምኤስ በመጠቀም፣ ተመሳሳይ የሙከራ ላብራቶሪ አይጦች ይሆናሉ። እርግጥ ነው፣ ከላይ ያሉት ሁሉ በተጣመመ የጽሑፍ ኮድ፣ የመረጃ ቁጥጥር እጥረት እና በቀላሉ በተለያዩ ሳንካዎች እየተጨናነቁ ነው። በእውነቱ፣ በአብዛኛዎቹ አጋጣሚዎች፣ በእንደዚህ አይነት ድረ-ገጾች ላይ ባደረኳቸው በአንድ ሰአት ውስጥ በርካታ ከባድ ተጋላጭነቶችን ለማግኘት ችያለሁ፣ እና አብዛኛዎቹ የገቢውን ውሂብ በቂ አለመሆን ይዋሻሉ። ውስጥ ሰሞኑንይህ ብዙውን ጊዜ ከጃቫ ስክሪፕት + አጃክስ የሚመጣውን የPOST ውሂብ በሚያስኬዱ ስክሪፕቶች ውስጥ ይገኛል።

    በግልጽ ለማየት እንደሚቻለው አጃክስን በመጠቀም እነዚህን ስክሪፕቶች የጻፉ ፕሮግራመሮች ሁሉም ጥያቄዎች ከበስተጀርባ ስለሚከሰቱ ተጠቃሚው ሳያውቅ ወይም በቀላሉ ገጹን ሳይጭኑ ውሂቡ በተለይ መፈተሽ አያስፈልገውም ብለው ያምናሉ።

    እንደ ደንቡ፣ ከእነዚህ ስክሪፕቶች ውስጥ ጥቂቶቹ በጣም የተሞሉ ጉድጓዶች ከመሆናቸው የተነሳ ብዙ ጥረት ሳያደርጉ ትልቅ ጉድጓድ ለመሥራት እና ዛጎላቸውን ያጥለቀልቁታል። በእርግጥ ፣ ለሙከራ ዓላማ ብቻ እና ምንም ተጨማሪ ነገር የለም (የእንደዚህ ያሉ ጣቢያዎች አስተዳደር ሁል ጊዜ ስለ ነባር ተጋላጭነቶች ይነገራል።)

    የማረጋገጫ አስፈላጊነት ለሁሉም ሰው ግልጽ ነው ብዬ አስባለሁ. ለረጅም ጊዜ፣ በእያንዳንዱ ጊዜ አንድ አይነት ኮድ እጽፍ ነበር፣ ከዚያም የራሴን የውሂብ ማረጋገጫ ተግባራት ተጠቀምኩኝ፣ አብዛኛዎቹ በጣም ጥንታዊ እና አብዛኛውን ጊዜ በሁሉም ተበታትነው ይገኛሉ። የተለያዩ ክፍሎች(የተያያዙ) ፋይሎች. ብዙም ሳይቆይ ለፕሮጀክቶቼ የተበደርኩትን መረጃ ለማረጋገጥ የየራሳቸውን ክፍል ከተገበሩት የPHP ክፈፎች Zend፣ CI፣ Kohana ጋር መተዋወቅ ጀመርኩ። በመጨረሻ ፣ ከ CI ክፍሎች ውስጥ አንዱን ለፍላጎቴ ለማበጀት ወሰንኩ ፣ ግን የአንዱ የፕሮግራም ብሎግ ደራሲ ይህንን ቀድሞውንም ተንከባክቦ እንደነበረ ታወቀ። በመቀጠል፣ ስራዎቹን ማለትም የተሻሻለውን CodeIgniter ቤተ-መጽሐፍትን አካፍላለሁ።

    የሚከተለውን ኮድ እንመልከት፡-

    ኮድ ይመልከቱፒኤችፒ

    አንድ ጊዜ ይጠይቃል "validator.class.php";

    $ አረጋጋጭ = አዲስ አረጋጋጭ () ; $validator -> set_rules ("ስም"፣ "የእርስዎ ስም"፣ ድርድር ("የሚፈለገው" => , "አልፋ" => ));$validator -> set_rules ("ኢሜል"፣ "ኢሜልህ"፣ ድርድር ("required" => "መስክ %s ያስፈልጋል" , "valid_email" => ) ) ; ከሆነ ($ አረጋጋጭ -> አሂድ () ) ( አስተጋባ "ማረጋገጫው ስኬታማ ነበር" ፤) ሌላ ( አስተጋባ $ አረጋጋጭ -> get_string_errors () ;).
    ከምሳሌው ማየት እንደምትችለው, በመጀመሪያው መስመር ውስጥ የክፍል ፋይልን እናካትታለን validator.calss.phpወደ ስክሪፕታችን። በመቀጠል የክፍሉን ምሳሌ እንፈጥራለን እና እቃውን ወደ ተለዋዋጭ እናስቀምጠዋለን

    $ አረጋጋጭ

  • ከዚያ ዘዴውን ይጠቀሙ$validator->set_rules($ field፣ $label፣ $rules)
  • ለማረጋገጫ መስኮችን ያዘጋጁ.ይህ ዘዴ 3 መለኪያዎችን ይወስዳል:
  • $ ሜዳ- የማረጋገጫ መስክ ስም (በመለያው ውስጥ ያለው የስም ባህሪ ዋጋ)
  • $ መለያ - የማረጋገጫ መስክ ስም ፣ በስህተት መልዕክቶች ውስጥ ይገባል$ ደንቦች - የማረጋገጫ ሕጎች ስብስብ ፣ የማረጋገጫ ደንቡ እንደ ቁልፍ ጥቅም ላይ የሚውልበት ፣ እና የዚህ ደንብ የስህተት መልእክት እንደ ዋጋ ጥቅም ላይ ይውላል።ሁሉም የማረጋገጫ መስኮች ከተዘጋጁ በኋላ, ዘዴውን በመጠቀም አረጋጋጩን እንጀምራለን $validator->አሂድ().

    . ማረጋገጫው የተሳካ ከሆነ ይህ ዘዴ እሴቱን ይመልሳል

  • እውነት, አለበለዚያ, ማንኛውም ስህተቶች ካሉ, ይመለሳል
  • ውሸትየስህተት መልዕክቶችን ለመቀበል ሦስት መንገዶች አሉ-
  • የሕብረቁምፊ_ስህተቶችን ያግኙ()- ሁሉንም የስህተት መልዕክቶች እንደ ሕብረቁምፊ ይመልሳል
  • የድርድር_ስህተቶችን ያግኙ() — ሁሉንም መልዕክቶች እንደ ድርድር ይመልሳል፣ የመስክ ስም እንደ ቁልፍ ጥቅም ላይ የዋለበት፣ እና የዚህ መስክ የስህተት መግለጫ እንደ እሴቱ ጥቅም ላይ ይውላል። ቅጽ_ስህተት($መስክ)- እንደ $field መለኪያ ሆኖ ለተላለፈው መስክ የስህተት መልእክት ይመልሳል

    በነባሪ የስህተት መልእክቶች በመለያ ተጠቅልለዋል። . ንድፍዎን ለማዘጋጀት, ዘዴውን ይጠቀሙ set_error_delimiters($ ቅድመ ቅጥያ፣ $ ቅጥያ) . ለምሳሌ እንደዚህ፡-

    አሁን የስህተት መልእክቶች ይለወጣሉ።

    ኮድ ይመልከቱፒኤችፒ

    div

    ከክፍል ጋር "ስህተት"እንደምታየው, ሁሉም ነገር በጣም ቀላል ነው.

    ኮድ ይመልከቱፒኤችፒ

    $rules = ድርድር ( ድርድር ( "መስክ" => "ስም" , "መለያ" => "ስምህ" , "ደንቦች" => አደራደር ( "አስፈላጊ" => "መስክ %s ያስፈልጋል" , "አልፋ" = > "ፊልድ %s ፊደላትን ብቻ መያዝ አለበት" ) , ድርድር ( "መስክ" => "ኢሜል" , "label" => "የእርስዎ ኢሜይል" , "ደንቦች" => ድርድር ( "አስፈላጊ" => "መስክ % s ነው ያስፈልጋል" , "valid_email" => "መስክ %s ትክክለኛ የኢሜይል አድራሻ መያዝ አለበት" ) ) ) ;

    $validator -> set_rules ($ ደንቦች);

    እንደሚመለከቱት ፣ ልክ እንደ መጀመሪያው ምሳሌ ተመሳሳይ የማረጋገጫ ህጎችን ጻፍኩ ፣ በባለብዙ-ልኬት አሶሺዬቲቭ ድርድር መልክ ብቻ። በተወሰነ ሁኔታ ውስጥ ለእርስዎ በጣም ተስማሚ የሆኑትን ማንኛውንም ዘዴዎች መጠቀም ይችላሉ.

    ስለዚህ ይህ ክፍል ምን ዓይነት የማረጋገጫ ሕጎች ይደግፋል? ወደዚህ ክፍል ሁሉም ሰው የሚያጋጥሙትን በጣም የተለመዱ የማረጋገጫ ህጎችን አመጣሁ። እዚህሙሉ ዝርዝር

    እነዚህ ደንቦች:ያስፈልጋል
    መስኩ ባዶ ከሆነ FALSE ይመልሳልኢንቲጀር
    እሴቱ ኢንቲጀር ካልሆነ FALSE ይመልሳልመንሳፈፍ
    እሴቱ የቁጥር እሴት ካልሆነ FALSE ይመልሳልየሚሰራ_url
    እሴቱ የሚሰራ ዩአርኤል ካልሆነ FALSE ይመልሳልትክክለኛ_ኢሜል
    እሴቱ የሚሰራ የኢሜይል አድራሻ ካልሆነ FALSE ይመልሳልየሚሰራ_IP
    የአይፒ አድራሻው የማይሰራ ከሆነ FALSE ይመልሳልግጥሚያዎች
    ኤለመንቱ ከሌላ የመስክ አባል እሴት ጋር የማይዛመድ ከሆነ FALSE ይመልሳልአልፋ
    ኤለመንቱ ፊደሎችን ብቻ ከያዘ FALSE ይመልሳልትክክለኛ_ካፕቻ
    በክፍለ-ጊዜው ውስጥ ያለው ዋጋ ከቅጽ መስኩ ዋጋ ጋር እኩል ካልሆነ FALSE ይመልሳልየሚሰራ_ቀን

    ንጥረ ነገሩ ልክ ያልሆነ ቀን ከያዘ FALSE ይመልሳል

    አብዛኛዎቹ እነዚህ ደንቦች ማጣሪያዎችን ይጠቀማሉ፣ ይህም በ PHP 5 ውስጥ ይገኛል።

    ከፈለጉ ሁል ጊዜ አስፈላጊ የሆኑትን ተግባራት ወደ Validator ክፍል በማከል ለማረጋገጫ ደንቦችን ማስፋፋት ይችላሉ።

    ኮድ ይመልከቱፒኤችፒ

    የተሰራውን የPOST ውሂብ ዋጋ ለማግኘት የሚከተለውን ዘዴ ይጠቀሙ፡-


    በቀደመው መጣጥፍ የራሴን ቤተ-መጽሐፍት ከሌሎች ካሉ መፍትሄዎች ጋር ለማነፃፀር ቃል ገብቼ ነበር ፣ ስለሆነም ዛሬ Aura.Filter ፣ Respect Validation ፣ Sirius Validation እና Valitron ን በመጠቀም ማረጋገጥን እንመለከታለን።


    በተለምዶ ይህ ዘዴ ቅጹን በተሳካ ሁኔታ ሲያካሂድ ቅጹን ለማጽዳት ይጠራል.

  • ስም.
  • በትክክል ሁለት ቃላትን መያዝ አለበት, የመጀመሪያው የተጠቃሚው ስም ሲሆን ሁለተኛው ደግሞ የአያት ስም ነው.
  • ተጠቃሚዎች ለሁሉም ተግባራት ሙሉ መዳረሻ እንዲመዘገቡ የሚጠይቅ የተወሰነ የህዝብ አገልግሎት በልማት ላይ እንዳለን እናስብ። ስለዚህ የመመዝገቢያ ቅጹ የሚከተሉትን መስኮች ይይዛል-
  • ኢሜይል.
  • ትክክለኛ አድራሻ መያዝ አለበት።
  • ኢሜይል


    የይለፍ ቃል። መዋቀር እና ከ64 ቁምፊዎች ያልበለጠ መሆን አለበት።

    ተስማማ።

    አንድ ተጠቃሚ የአገልግሎት ውሉን መቀበሉን ለማረጋገጥ መፈተሽ ያለበት የተለመደ አመልካች ሳጥን።

    ስለዚህ በምናባዊ አገልግሎታችን ለመመዝገብ ተጠቃሚው መሙላት ያለባቸው አምስት መስኮች አሉን። እንደ ግብአት ሙሉ በሙሉ ልክ ያልሆነ ውሂብ እንደተቀበልን እናስብ፡

  • $data = [ "ስም" => "አልበርት", // ሁለት ቃላት መሆን አለበት "login" => "@lbert", // "የተከለከለ" ቁምፊ @ "ኢሜል" => "የተሳሳተ ነገር", / / ​​መሆን አለበት. ኢ-ሜል ይሁኑ "የይለፍ ቃል" => Aura.ማጣሪያ
  • ኦውራ በመጠቀም ማረጋገጥ በማጣሪያ ፋብሪካ ይጀምራል። እኛ የምናረጋግጠው ድርድር እንጂ የግለሰብ እሴት ስላልሆነ “ርዕስ ማጣሪያ” የሚባል ነገር መፍጠር አለብን።
  • ደንቦቹን እንገልፃለን Aura \u003d ማጣሪያ \ ማጣሪያ ፋብሪካ; $filter = (አዲስ ማጣሪያ ፋብሪካ)-> newSubjectFilter (); $filter-> አረጋግጥ ("ስም") -> isNotBlank () -> ነው ("ሁለት_ቃላቶች") -> setMessage ("ስሙ ሁለት ቃላት መሆን አለበት."); $filter->አረጋግጥ("መግባት") ->isBlankOr("alnum") ->setMessage("መግባት ከገለጹ የላቲን ቁምፊዎችን ብቻ መያዝ አለበት"); $filter->አረጋግጥ("ኢሜል") ->isNotBlank() ->is("ኢሜል") ->setMessage("እባክዎ የሚሰራ ኢሜይል አድራሻ ያስገቡ"); $filter-> አረጋግጥ("የይለፍ ቃል") ->isNotBlank() ->is("strlenMax"፣ 64) ->setMessage("እባክዎ የይለፍ ቃልዎን ይፃፉ"); $filter->አረጋግጥ("ተስማምቷል") ->ነው("ተመልሶ መደወያ"፣ ተግባር($subject፣ $ field) ($subject->($መስክ) === እውነት ይመልሱ፤ ))->setMessage("ያስፈልገዎታል) በአገልግሎት ውሉ ይስማሙ.");
  • እንደሚመለከቱት, የደንቦቹ መግለጫ በጣም ቀላል ነው. Aura.Filter ከሳጥኑ ውስጥ ሙሉ ጠቃሚ ህጎችን ያቀርባል እና አንዳንዶቹ ከላይ ባለው ምሳሌ ውስጥ ጥቅም ላይ ውለዋል፡
  • ኢሜይል.
  • የሁለት_ቃላቶችን ህግ እንዳልገለጽኩ አስተውለህ ይሆናል። በተፈጥሮ, በ Aura.Filter ውስጥ እንደዚህ ያለ ህግ የለም, ስለዚህ አንድ መፍጠር አለብን. ሰነዱ እንደሚለው ፣ ይህ ለደንቡ የተለየ ክፍል በመጠቀም ይከናወናል-


    /** * የተጠቃሚውን ስም የሚያረጋግጥ ህግ።

    * የተጠቃሚ ስም ሁለት ቃላትን ያቀፈ ነው-የመጀመሪያ እና የአያት ስም ፣ በአንድ ቦታ ይለያሉ።


    */ ክፍል የተጠቃሚ ስም ህግ (/** * የተጠቃሚውን ስም ያረጋግጣል። * * @param object|array $subject * @param string $ field * @param int $max * * @return bool */ የህዝብ ተግባር __invoke($subject, $ መስክ፣ $max = null) ( $እሴት = $ ርዕሰ ጉዳይ->($ መስክ)፤ ከሆነ (! is_scalar($ value)) (ሐሰት መመለስ፤) መመለስ (bool) preg_match("/ ^+\s+$/u" , $ እሴት);


    ሁለተኛው እርምጃ የማጣሪያ ፋብሪካው ስለ አዲሱ መመሪያችን እንዲያውቅ ማድረግ ነው። የመጀመሪያውን ክርክር እንደ አንድ ደንብ ወደ ማጣሪያ ፋብሪካ በማለፍ ይከናወናል፡-

    የሚቀጥለው እርምጃ አዲስ ህግ እንደፈጠርን እና ልንጠቀምበት እንደምንፈልግ ለአውራ ማሳወቅ ነው። ይህ ለፋብሪካው የመጀመሪያ ክርክር ብዙ ደንቦችን በማለፍ ይከናወናል-

    Aura \ Filter \ Filter Factory ይጠቀሙ; $rules = ["ሁለት_ቃላቶች" => ተግባር() (አዲስ የተጠቃሚ ስም ደንብ ይመለሱ፤ )]; $filter = (አዲስ የማጣሪያ ፋብሪካ($rules))->አዲስ ርዕሰ ጉዳይ ማጣሪያ();

    አሁን የእኛ የሁለት_ቃላቶች ህግ እንደማንኛውም መደበኛ ህግ በተመሳሳይ መንገድ ጥቅም ላይ ሊውል ይችላል።


    ግብረ መልስ


    እንደምታስታውሱት፣ እኛ የምናረጋግጠው ገቢ ውሂብ ሙሉ በሙሉ ልክ ያልሆነ ነው፣ ምክንያቱም እያንዳንዱ መስክ የተሳሳተ እሴት ስላለው ወይም ጨርሶ ስለሌለው። ስለዚህ, በማረጋገጫው ምክንያት ስለእነሱ ስህተቶች እና ተዛማጅ መልእክቶች እንቀበላለን ተብሎ ይታሰባል.

    በAura.Filter እንደሚከተለው አረጋግጠናል፡- $valid = $filter->ተግብር($data); ከሆነ (! $valid) ($failures = $filter->getFailures();$messages =$failures->getMessages();)ውስጥ


    $መልእክቶች

    ድርድር እየተፃፈ ነው፣ ስለዚህ መልእክቶችን ለማሳየት ሁለት የተከማቸ ፎክ እንፈልጋለን።


    አክብሮት ማረጋገጫ


    Respect\Validation\Validator እንደ v ይጠቀሙ; $data = [ "ስም" => "አልበርት", // ሁለት ቃላት መሆን አለበት "login" => "@lbert", // "የተከለከለ" ቁምፊ @ "ኢሜል" => "የተሳሳተ ነገር", / / ​​መሆን አለበት. be an e-mail here "password" => "" // የይለፍ ቃሉ በፍፁም አልተገለፀም // "ተስማማ" በድርድር ውስጥ የለም ምክንያቱም ተጠቃሚው ሳጥኑ ላይ ምልክት ስላላደረገ ];

    ደንቦቹን መግለጽ


    እንደ Aura.Filter፣ ለተጠቃሚ ስም የራሳችን የማረጋገጫ ህግ እንፈልጋለን፣ ስለዚህ እዚያ እንጀምር፡-

    የስም ቦታ MyNamespace; አክብሮት \ ማረጋገጫ \ ደንቦች \ AbstractRule ይጠቀሙ; ክፍል የተጠቃሚ ስም ደንብ AbstractRuleን ያራዝመዋል (የሕዝብ ተግባር የተረጋገጠ($input) (ተመለስ (bool) preg_match("/^+\s+$/u"፣$input)


    የውጫዊ ደንቦቹ ኤፒአይ ከAura.Filter ጋር ተመሳሳይ ነው፣ ከ__invoke() አስማት ይልቅ የተረጋገጠ() ዘዴ ብቻ ጥቅም ላይ ይውላል። ለእኔ፣ ይህ ኤፒአይ፣ ቀላል እና የበለጠ ለመረዳት የሚቻል መስሎ ታየኝ። ደህና ፣ ወደ ኮንትሮሊዮ ቅርብ ነው :).


    በሰነዱ ውስጥ ስለዚህ ጉዳይ ምንም አላገኘሁም ፣ ሆኖም ፣ ከህጉ እራሱ በተጨማሪ ፣ ለእሱ የእራስዎን ልዩ ዓይነት መፍጠር ያስፈልግዎታል። የልዩ ክፍል ስም የሩል መደብ ስም እና የድህረ ቅጥያ ማካተት አለበት።

    በስተቀር


    Respect\Validation\Exceptions\NstedValidationException ይጠቀሙ; ክፍል የተጠቃሚ ስምRuleException NstedValidationExceptionን ያራዝመዋል (//)

    ደህና, በመጨረሻ የእኛን ውሂብ ማረጋገጥ እንችላለን. በመጀመሪያ፣ አዲሱን ደንባችንን እሱ እንዲያውቀው እና ወደፊትም እንድንጠቀምበት ወደ አረጋጋጭ እናስተላልፋለን። በአክብሮት ማረጋገጫ ውስጥ ይህ የሚደረገው በ() ዘዴ በመደወል መደበኛ ያልሆኑ ደንቦች የሚገኙበትን የስም ቦታ በማለፍ ነው። v :: ጋር ("MyNamespace \\");አሁን ሁሉም መደበኛ ያልሆኑ ደንቦች በስም ቦታ ውስጥ ይገኛሉ


    My Namespace

    , በአረጋጋጭ "እውቅና" ይሆናል. ቀጣዩ ደረጃ አስፈላጊ የሆኑትን ደንቦች መግለፅ እና ማረጋገጥ ነው. v :: ባህሪ ("ስም"፣ v:: የተጠቃሚ ስም ደንብ()) -> ባህሪ("መግባት"፣ v:: alnum("-_")) -> ባህሪ("ኢሜል"፣v::ኢሜል()) -> ባህሪ ("የይለፍ ቃል"፣ v:: ባዶ ባዶ()-> ሕብረቁምፊ አይነት()->ርዝመት(ኑል፣ 64)) -> ባህሪ("ተስማምተናል"፣v::trueVal()) ->አስረጅ((ነገር) $ ውሂብ);ደንባችንን በባህሪው ላይ እንዴት እንደምንተገበር አስተውል


    ስም . እዚህ የደንቡ ክፍል ስም ወደ አረጋጋጭ ዘዴ ስም ተቀይሯል. የተቀሩት ደንቦች, በአጠቃላይ, ሊታወቁ የሚችሉ ናቸው.ድርድር ለምን እንደምናቀርብ ለየብቻ መጥቀስ ተገቢ ነው።

    Aura \ Filter \ Filter Factory ይጠቀሙ; $rules = ["ሁለት_ቃላቶች" => ተግባር() (አዲስ የተጠቃሚ ስም ደንብ ይመለሱ፤ )]; $filter = (አዲስ የማጣሪያ ፋብሪካ($rules))->አዲስ ርዕሰ ጉዳይ ማጣሪያ();

    እንደ Aura.Filter በተለየ፣ የአክብሮት አረጋጋጭ ማረጋገጥ ሲወድቅ ልዩ ነገር ይጥላል። እና ይህ የተለየ የማረጋገጫ ስህተት መልዕክቶችን ይዟል። ስለዚህ፣ አሁን የሚታየው ምሳሌ እንደሚከተለው መፃፍ አለበት።


    ይሞክሩ ( v :: በ("RespectValidationExample \\"); v :: ባህሪ ("ስም"፣ v:: የተጠቃሚ ስም ደንብ ()) -> ባህሪ("መግቢያ"፣ v:: alnum("-_")) - > ባህሪ("ኢሜል"፣ቁ::ኢሜል()) ->ባህሪ("የይለፍ ቃል"፣v::notEmpty()->stringType()->ርዝመት( null፣ 64)) -> ባህሪ("ተስማማ"፣ v :: TrueVal ()) -> አስርት ((ነገር) $መረጃ) ያዝ (NestedValidationException $ex) ($መልእክቶች = $ex->የመልእክት መቀበል()

    GetMessages()ን በመጠቀም አረጋጋጩ በማረጋገጫው ሂደት የሰበሰባቸውን ሁሉንም መልዕክቶች ጠፍጣፋ ድርድር እናገኛለን። ድርድርን በመጣል፣ እንደዚህ ያለ ነገር እናገኛለን፡-


    ድርድር (5) ( => ሕብረቁምፊ (29) "የውሂብ ማረጋገጥ አልተሳካም ለ%s" => ሕብረቁምፊ (60) "መግቢያ ፊደላትን (a-z) ብቻ መያዝ አለበት ፣ አሃዞች (0-9) እና "-_" => ሕብረቁምፊ (25) "ኢሜል ትክክለኛ ኢሜል መሆን አለበት" => ሕብረቁምፊ (26) "የይለፍ ቃል ባዶ መሆን የለበትም" => ሕብረቁምፊ (32) "የተስማሙበት ባህሪ መገኘት አለበት" )

    መልእክቶቹን ወደ ራስህ መቀየር ትችላለህ። ምናልባት ይህን ቤተ-መጽሐፍት በሆነ መንገድ ተረድቼው ይሆናል፣ ነገር ግን ይህ ሂደት ለእኔ ግልጽ ሆኖ አልታየኝም፡ የፈላጊ መልእክት () ዘዴን በተያዘ ልዩ ሁኔታ ላይ መጠቀም አለብህ፣ ይህም መልዕክቶችን ለባህሪያት ሳይሆን ለህጎች የምትገልፅበት ነው።


    $ex->findMessages([ "userNameRule" => "የተጠቃሚ ስም ሁለት ቃላትን የያዘ መሆን አለበት"፣ "alnum" => "መግቢያህን አንወድም። ኢሜልህን ልትሰጠን ትፈልጋለህ።", "notEmpty" => "እሺ የይለፍ ቃልህ የት ነው?", "ተስማምተህ" => "አለመስማማትህ ያሳዝናል" ]);

    ስህተቱ ምን እንደሆነ አላውቅም፣ ግን እስካሁን ያልገባኝ ሁለት ነገሮች አሉ። ከላይ በተጠቀሰው መንገድ ደንቦቹን በመግለጽ ያገኘነው ይኸው ነው።


    array(5) ( => string (40) "የተጠቃሚ ስም ሁለት ቃላት መሆን አለበት።" => ሕብረቁምፊ(31) "መግባትህን አንወድም።" > ሕብረቁምፊ (5) "እሺ፣ የይለፍ ቃልህ የት ነው?"

    እንደሚመለከቱት ፣ የኢሜል መስኩ መልእክት አልተተገበረም ፣ መደበኛው ይቀራል። ነገር ግን በመረጃ ጠቋሚ 4 ላይ ያለው መልእክት ተቃራኒ ነው! እና ይሄ ምንም እንኳን የደንቡን ስም ሳይሆን የሜዳውን ስም አልተጠቀምኩም. የደንቡን ስም (trueVal) ብጠቀም ኖሮ መልእክቴ የሆነ ቦታ ጠፋ። የዚህ ቤተ-መጽሐፍት ልምድ ካላቸው ተጠቃሚዎች የተሰጡ አስተያየቶች በጣም እንቀበላለን።

    የሲሪየስ ማረጋገጫ

    እሺ፣ ወደሚቀጥለው ቤተ-መጽሐፍት እንሂድ እና ተመሳሳይ ስራዎችን እንዴት እንደሚይዝ እንይ።

    ደንቦቹን መግለጽ

    አንዴ እንደገና የተጠቃሚ ስም ህግን መግለፅ አለብን። እንደዚህ አይነት ነገር እንጽፋለን፡-


    class UserNameRule ያራዝመዋል AbstractRule (// Error Messages const MESSAGE = "የተጠቃሚ ስም ሁለት ቃላት መሆን አለበት"፤ const LABELED_MESSAGE = "(መለያ) ሁለት ቃላት መሆን አለበት"፤ የህዝብ ተግባር አረጋግጧል($value, $valueIdentifier = null) ( መመለስ (bool) preg_match ("/ ^+\s+$/u"፣ $እሴት))

    እባክዎ ቀደም ሲል ከተወያዩት ቤተ-መጻሕፍት ጋር ሲወዳደር የአቀራረቦችን ልዩነት ልብ ይበሉ። ንብረቶችን፣ ዘዴዎችን ወይም የሕግ ነጋሪ እሴቶችን ከመጠቀም ይልቅ ሁለት ዓይነት መልዕክቶችን በቋሚዎች እንገልጻለን።


    አሁን የማረጋገጫ አመክንዮ እንግለጽ፡-


    $ አረጋጋጭ = አዲስ አረጋጋጭ; $validator ->አክል("ስም"፣ "የሚያስፈልግ | MyApp\validation\Rule\UserNameRule") ->አክል("መግቢያ"፣"አስፈላጊ | alphanumhyphen"፣ null፣ "መግባት የላቲን ፊደላትን፣ ሰረዞችን እና የግርጌ ማስታወሻዎችን ብቻ ሊይዝ ይችላል። ") -> አክል("ኢሜል"፣ "የሚያስፈልግ | ኢሜይል"፣ ባዶ፣ "እባክዎ ትክክለኛ ኢሜል ያስገቡ።" የይለፍ ቃል፣ ጌታዬ።

    እንደሚመለከቱት, የሕጎች ስብስብ በጣም ቀላል እና ሊነበብ የሚችል ነው. ለገለፃ፣ በአግድም አሞሌዎች የተለዩ ስሞችን እንጠቀማለን። ይህ አካሄድ በላራቬልና በኮንትሮሊዮ ጥቅም ላይ ከዋለ ጋር ተመሳሳይ ነው።


    የ add() ዘዴ አራተኛው ነጋሪ እሴት ሲርየስ ማረጋገጫው ካልተሳካ የሚጠቀመውን የማረጋገጫ ስህተት መልእክት ይገልጻል። ለምን ለአዲሱ መመሪያችን መልእክት አልጨመርንበትም? የተጠቃሚ ስም ደንብ?


    $validator->አክል("ስም"፣ "የሚፈለግ | MyApp\validation\Rule\User NameRule")

    ይህ የሆነበት ምክንያት መልእክቶቹ ቀድሞውኑ በክፍል ቋሚዎች ውስጥ ስለተገለጹ ነው፡-


    class UserNameRule ያራዝመዋል AbstractRule (// የስህተት መልዕክቶች const MESSAGE = "የተጠቃሚ ስም ሁለት ቃላት መሆን አለበት"፤ ...

    ሌላው አማራጭ የአረጋጋጩን በራሱ የ addMessage() ዘዴን መጠቀም ነው።


    $validator-> addMessage("ኢሜል"፣ "እባክዎ የሚሰራ ኢ-ሜይል ያስገቡ")፤

    እባክዎን ያስተውሉ ብጁ ህጎች በክፍላቸው ሙሉ ስም ተለይተው ይታወቃሉ፣ በኮንትሮሊዮ ውስጥ ግን ተለዋጭ ስም መግለጽ ይችላሉ።

    Aura \ Filter \ Filter Factory ይጠቀሙ; $rules = ["ሁለት_ቃላቶች" => ተግባር() (አዲስ የተጠቃሚ ስም ደንብ ይመለሱ፤ )]; $filter = (አዲስ የማጣሪያ ፋብሪካ($rules))->አዲስ ርዕሰ ጉዳይ ማጣሪያ();

    ማረጋገጫን ለማከናወን፣ ውሂቡን ወደእሱ በማስተላለፍ የማረጋገጫ ዘዴን ያጸድቃል() ብለን እንጠራዋለን፡-


    $data = [ "ስም" => "አልበርት", // ሁለት ቃላት መሆን አለበት "login" => "@lbert", // "የተከለከለ" ቁምፊ @ "ኢሜል" => "የተሳሳተ ነገር", / / ​​መሆን አለበት. be an e-mail here "password" => "" // የይለፍ ቃሉ በፍፁም አልተገለፀም // "ተስማማ" በድርድር ውስጥ የለም ምክንያቱም ተጠቃሚው ሳጥኑ ላይ ምልክት ስላላደረገ ]; $validator-> አረጋግጥ($data);

    ከአክብሮት በተቃራኒ ሲሪየስ የተለየ ነገር አይጥልም ፣ ግን በቀላሉ ይመለሳል የውሸት. የማረጋገጫ ስህተት መልዕክቶች በgetMessages() አረጋጋጭ ዘዴ በኩል ሊገኙ ይችላሉ። በባህሪያት የተቧደኑ ስህተቶችን ይመልሳል፣ ስለዚህ ስህተቶቹን ለማለፍ ሁለት የፊት ዑደቶች ያስፈልጉናል፡


    foreach ($veridator->getMessages() እንደ $attribute => $messages) ( foreach ($messages as $message) ( echo $message->getTemplate() . "\n"; ) )

    እዚህ $message የክፍል ነገር ነው። ሲሪየስ\ማረጋገጫ\ስህተት መልእክትየምንፈልገውን መልእክት የሚመልስ getTemplate() ዘዴ ያለው።

    Valitron ደንቦቹን መወሰን

    የመጀመሪያው ልዩነት: አዲስ ህግን ለመጨመር የተለየ ክፍል መፍጠር አያስፈልግዎትም. በቀላሉ የቦሊያንን ውጤት የሚመልስ መዝጊያን መጠቀም ይችላሉ።


    ብጁ ህጎችን ለመጨመር ቫሊትሮን የማይንቀሳቀስ ዘዴ addRule() አለው፣ በዚህ ውስጥ የመጀመሪያዎቹ ሁለት ነጋሪ እሴቶች የሚፈለጉበት እና ሶስተኛው አማራጭ ነው። ይህንን ዘዴ ወድጄዋለሁ፣ ምክንያቱም እዚህ የደንብ መለያ፣ አመክንዮ እና የስህተት መልእክት በአንድ ቦታ ተጠቁሟል።


    Valitron \ Validator ይጠቀሙ; አረጋጋጭ:: addRule("ሁለት_ቃላቶች"፣ ተግባር($ መስክ፣ $ እሴት) (መመለሻ (ቦል) preg_match("/^+\s+$/u"፣ $value)፣ "የተጠቃሚ ስም በትክክል ማካተት አለበት ሁለት ቃላት ");

    ሁለተኛው ልዩነት ደንቦቹ በባህሪያት ላይ እንዴት እንደሚተገበሩ ነው. በቀደሙት ጉዳዮች ሁሉ፣ አንድ ባህሪ፣ እንደ ተቀዳሚ ነገር እንደሆነ አይተናል።


    ቫሊትሮን የተለየ መንገድ ወሰደ እና የማረጋገጫ ደንቦችን አስቀድማለች። ደንቦችን በመግለጽ፣ ለእነዚህ ደንቦች ባህሪያትን እየተተገበሩ ያሉ ይመስላሉ፣ እና በተቃራኒው አይደለም።


    $አረጋጋጭ = አዲስ አረጋጋጭ($data); $validator ->ደንብ("ሁለት_ቃላቶች""ስም")->መለያ("") ->ደንብ("የሚፈለግ"፣["ስም"፣ "መግባት"፣ "ኢሜል"፣ "የይለፍ ቃል"፣ "ተስማምተናል" ] ) -> ደንብ ("slug", "login") -> ደንብ ("ኢሜል", "ኢሜል") -> ደንብ ("ተቀባይነት ያለው", "ተስማምቷል");

    ከምሳሌው እንደሚታየው, በደንብ () ዘዴ ውስጥ በመጀመሪያ የደንቡን ስም እንጽፋለን, እና ከዚያ በኋላ ብቻ ከዚህ ህግ ጋር መዛመድ ያለባቸውን ባህሪያት እንጠቁማለን. ይበልጥ ግልጽ የሆነ ምሳሌ የሚፈለገው ደንብ ነው፣ ይህም የዚያ ደንብ ባህሪያት እንዴት "እንደሆኑ" ያሳያል።


    ቫሊትሮን (እንደ ሌሎች እንደገመገምናቸው መፍትሄዎች) መደበኛ የስህተት መልዕክቶችን ያቀርባል። እነሱን ብቻ ከተጠቀምክ እያንዳንዱ መልእክት የሚጀምረው በተዛማጅ ባህሪው ስም እንደሆነ ታያለህ።


    መደበኛ ያልሆኑ የስህተት መልእክቶች ጥቅም ላይ በሚውሉበት ጊዜም ቫሊትሮን ስሞችን በመልዕክት ጽሁፍ ውስጥ ይለውጣል። ለዚያም ነው የመለያ ስምን ለማስወገድ የመለያ() ዘዴን ከባዶ ሕብረቁምፊ ጋር የተጠቀምነው።


    $validator-> ደንብ ("ሁለት_ቃላቶች"፣ "ስም") -> መለያ("") ግብረመልስ

    በተለይም ማረጋገጫን በተመለከተ፣ የValitron ቤተ-መጽሐፍት ኤፒአይ በአንቀጹ ላይ ካየነው በተግባር የተለየ አይደለም። ማረጋገጫን ለመስራት አረጋጋጭ ዘዴን አረጋጋጭ() ብለን እንጠራዋለን፡-


    $ አረጋጋጭ-> አረጋግጥ ();

    የማረጋገጫ የስህተት መልዕክቶች የጌት ስህተቶች() ዘዴን በመጠቀም ሰርስሮ ማውጣት ይቻላል፡-


    $ አረጋጋጭ-> ስህተቶች ();

    ለመልእክቱ የተለየ ክፍል ከሌለ በስተቀር፣ እዚህ ያሉ መልዕክቶች በሲሪየስ ማረጋገጫ ውስጥ በባህሪያት ይቦደዳሉ፣ እና መደበኛ ባለብዙ-ልኬት ድርድር እናገኛለን።


    foreach ($ አረጋጋጭ->ስህተት() እንደ $attribute => $መልእክቶች) ( foreach ($ መልክት እንደ $ መልዕክት) ( አስተጋባ $ መልዕክት . "\n"; ) ) Kontrolio

    እና በመጨረሻም ፣ ለዛሬ የመጨረሻው ቤተ-መጽሐፍት ኮንትሮሊዮ የተባለ የራሴ ልማት ነው።

    ደንቦቹን መግለጽ

    በድጋሚ, ለአምስተኛ ጊዜ, ለተጠቃሚ ስም የማረጋገጫ ደንብ እንፈጥራለን. ሁሉም ነገር በአንጻራዊነት ቀላል እና መደበኛ ነው-


    የስም ቦታ MyProject \ ማረጋገጫ \ ደንቦች; Kontrolio\Rules\AbstractRule ይጠቀሙ; ክፍል TwoWords Kontrolio\Rules\AbstractRuleን ያራዝመዋል (የህዝብ ተግባር isValid($input = null)

    አሁን ፋብሪካን እንፈጥራለን እና የማራዘም () ዘዴን በመጠቀም በውስጡ ህግን እንመዘግባለን-


    የስም ቦታ MyProject; Kontrolio \ ፋብሪካን ይጠቀሙ; MyProject \validation\ Laws \ TwoWords ይጠቀሙ; $ ፋብሪካ = Kontrolio \ ፋብሪካ :: getInstance () -> ቅጥያ ();

    ደንቡን ከተመዘገብን በኋላ, በስም ጨምሮ - ሁለት_ቃላቶችን ልንጠቀምበት እንችላለን. አረጋጋጭ እንፍጠር፡-


    $data = [ "ስም" => "አልበርት", // ሁለት ቃላት መሆን አለበት "login" => "@lbert", // "የተከለከለ" ቁምፊ @ "ኢሜል" => "የተሳሳተ ነገር", / / ​​መሆን አለበት. be an e-mail here "password" => "" // የይለፍ ቃሉ በፍፁም አልተገለፀም // "ተስማማ" በድርድር ውስጥ የለም ምክንያቱም ተጠቃሚው ሳጥኑ ላይ ምልክት ስላላደረገ ]; $rules = [ "ስም" => "ሁለት_ቃላቶች", "መግቢያ" => "አንዳንድ ጊዜ|አልፋዳሽ", "ኢሜል" => "ኢሜል", "የይለፍ ቃል" => "ርዝመት: 1.64", "ተስማምተዋል" = > " ተቀባይነት" ]; $messages = [ "ስም" => "የተጠቃሚ ስም ሁለት ቃላትን ያካተተ መሆን አለበት"፣ "login" => "መግቢያህን አንወድም። us your email . ]; $validator = $ፋብሪካ-> አድርግ($ ውሂብ፣ $ህጎች፣ $መልእክቶች)፤

    በላራቬል ውስጥ ጥቅም ላይ ከዋለ ጋር ተመሳሳይ የሆነ አገባብ በመጠቀም ህጎቹን ገለጽን፣ ምንም እንኳን የበለጠ የቃል ስሪት ልንጠቀም ብንችልም፡-


    $rules = [ "ስም" => አዲስ ሁለት ቃላት፣ "login" => , "ኢሜል" => አዲስ ኢሜል፣ "የይለፍ ቃል" => አዲስ ርዝመት(1፣ 64)፣ "ተስማማ" => አዲስ ተቀብሏል ];

    ግብረ መልስ


    $ አረጋጋጭ-> አረጋግጥ ();

    ማረጋገጥ የሚጀምረው በተመሳሳዩ የማረጋገጫ() ዘዴ በመጠቀም ነው፡-



    አሁን ከgetErors() ወይም GetErrorsList() ዘዴዎች አንዱን በመጠቀም የስህተት መልዕክቶችን ማግኘት እንችላለን። የመጀመሪያው ዘዴ ይበልጥ ውስብስብ የሆነ የስህተት ውጤት እንዲኖር ያስችላል, ሁለተኛው ደግሞ ጠፍጣፋ ድርድርን ይመልሳል. getErors()ን በመጠቀም እንደዚህ አይነት መልዕክቶችን ማውጣት እንችላለን፡-


    እና በgetErorsList() ቀለል ያለ የመልእክት ዝርዝር መስራት ትችላለህ፡-

    የታችኛው መስመር

  • በዚህ ጽሑፍ ውስጥ የሚከተሉትን ቤተ-መጻሕፍት የመጠቀም ምሳሌዎችን አሳይቻለሁ።
  • ኦውራ.ማጣሪያ
  • የሲሪየስ ማረጋገጫ
  • አክብሮት ማረጋገጫ
  • ቫሊትሮን
  • መቆጣጠር


    “የገሃዱ ዓለም ምሳሌ” በጣም ቀላል ሊመስል ይችላል። መስማማት አለብኝ፣ ምክንያቱም፣ በእርግጥ፣ አንዳንድ የቤተ-መጻህፍት ችሎታዎች ከጽሁፉ ውጭ ስለነበሩ። በመርህ ደረጃ, ፍላጎት ካሎት, ባህሪያቸውን እራስዎ ማጥናት ይችላሉ.


    እያንዳንዱ ቤተ-መጻሕፍት የየራሳቸውን ገፅታዎች አሏቸው እና ጥቁር ጎኖች አሏቸው, ስለዚህ አንዱን መምረጥ ጣዕም እና ፈታኝ ጉዳይ ይመስለኛል.

    የሚሰራ የኢሜይል አድራሻ መያዝ አለበት።

    • መልሶ መደወል.
    • ይህ ዓይነቱ ደንብ ከኮንትሮሊዮ መዘጋት ጋር ተመሳሳይ ነው. አንድ ደንብ በመዝጊያ መልክ እንዲገልጹ ያስችልዎታል. ለዚህ መዘጋት፣ Aura.Filter “ርዕሱን”፣የእኛን የውሂብ ድርድር ከቅጹ እና በመስክ ያልፋል፣ በዚህ ጉዳይ ላይ ተስማምተዋል።
    • መለያዎች
    የውሂብ ማረጋገጫ