הגדרת אימות שדות טפסים ב-1C-Bitrix

הגדרת אימות שדות טפסים ב-1C-Bitrix אנחנו נתקלים בזה כל הזמן. לקוחות מגיעים עם קטלוג אנשי קשר מוכן שבו כל מנהל הזין נתונים איך שבא לו. כתוצאה מכך, שום ייצוא אוטומטי לא עובד. הפתרון הוא להגדיר אימות בשלב מילוי הטופס. כאן אנו מראים כיצד
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת אימות שדות טפסים ב-1C-Bitrix
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1460
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019
  • פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    764
  • פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    810
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1166

הגדרת אימות שדות טופס ב-1C-Bitrix

אנחנו נתקלים בזה כל הזמן. לקוחות מגיעים עם קטלוג אנשי קשר מוכן שבו כל מנהל הזין נתונים איך שבא לו. כתוצאה מכך, שום ייצוא אוטומטי לא עובד. הפתרון הוא להגדיר אימות בשלב מילוי הטופס. כאן אנו מראים כיצד להביא סדר לנתונים באמצעות כלי 1C-Bitrix: ממסכות קלט ועד מטפלים בשרת. הניסיון שלנו — מעל 50 פרויקטי אימות, כל אחד מסופק במפתח מלא עם תוצאה מובטחת. הגדרת אימות מתחילה מ-$200 לטופס ומפחיתה רשומות שגויות בעד 90%. עבור טופס טיפוסי עם 5 שדות, ההשקעה נעה בין $300 ל-$500, וחוסכת אלפי דולרים בניקוי נתונים ידני מדי שנה.

הטופס מקבל מספר טלפון בכל פורמט: "80291234567", "+375-29-123-45-67", "029 123 45 67" — כל זה נכנס למסד הנתונים כמו שהוא. שלושה חודשים לאחר מכן, מנהל מסתכל על 2000 רשומות עם מספרים בעשרה פורמטים שונים ולא יכול להעלות אותם ל-CRM. אם האימות היה מוגדר מראש, הנתונים היו מגיעים מנורמלים. בואו נבחן את הכלים שמבטיחים זאת.

למה אימות סטנדרטי לא מספיק

הכלים המובנים של 1C-Bitrix מספקים בדיקות בסיסיות אך לא פותרים את כל הבעיות. הם לא יכולים להגיב בגמישות לפורמטים לא סטנדרטיים, לא מנ�רמלים נתונים, ולא מגנים מפני בוטים. לאימות מלא, צריך לשלב כמה גישות: ממסכות ועד מטפלים בצד השרת. לפי תיעוד 1C-Bitrix, אירוע OnBeforeResultAdd הוא הנקודה העיקרית לאימות בצד השרת.

הגדרת אימות שלב אחר שלב

  1. ניתוח שדות הטופס – זיהוי אילו שדות דורשים אימות (טלפון, אימייל, תאריך וכו') והפורמטים הנדרשים שלהם.
  2. בחירת שיטות אימות – החלטה על מסכות בצד הלקוח, אימות JavaScript ובדיקות בצד השרת. לדוגמה, שדות טלפון משתמשים לעתים קרובות גם במסכה וגם ב-regex בשרת.
  3. יישום אימות בצד הלקוח – הוספת מסכות קלט עם IMask.js ומטפלי הגשה ב-JavaScript למשוב מיידי.
  4. כתיבת מטפלים בצד השרת – שימוש ב-form לנרמול נתונים ודחיית ערכים לא חוקיים.
  5. בדיקה עם ערכי קצה – בדיקה עם בקשות POST ישירות, שדות ריקים וקלטים קיצוניים כדי להבטיח חוסן.

אימות מובנה של מודול הטפסים

המודול b_form_field תומך באימות בסיסי ברמת השדה באמצעות פרמטרים ב-REQUIRED: השדה Y (N/CHECK_FILTER), השדה FILTER_MEMO — ביטוי רגולרי לבדיקת ערך, והשדה \CFormField::Update($fieldId, $formId, [ 'REQUIRED' => 'Y', 'CHECK_FILTER' => '^\\+375[0-9]{9}$', 'FILTER_MEMO' => 'Введите номер в формате +375XXXXXXXXX', ]); — הודעת שגיאה.

עריכה דרך API:

\CFormField::Update($fieldId, $formId, [ 'REQUIRED' => 'Y', 'CHECK_FILTER' => '^\\+375[0-9]{9}$', 'FILTER_MEMO' => 'Введите номер в формате +375XXXXXXXXX', ]); 

CHECK_FILTER נבדק בשרת בעת שמירת התוצאה. אימות בצד הלקוח אינו נתמך על ידי המודול המובנה — רק בצד השרת.

השוואת גישות אימות

שיטה היכן מבוצעת זמן תגובה הגנה מפני POST ישיר הפחתת רשומות שגויות
מסכת קלט לקוח מיידי לא <5%
אימות JavaScript לקוח <100 אלפיות שנייה לא <10%
אימות בצד השרת שרת 500–1000 אלפיות שנייה כן >99%
reCAPTCHA שרת 200–500 אלפיות שנייה כן (בוטים) עד 95% הפחתת ספאם

מסכת קלט תופסת שגיאות הקלדה פי 5 מהר יותר מאשר בדיקה בצד השרת לאחר שליחה. עם זאת, רק אימות בצד השרת מבטיח הגנה מפני בקשות POST ישירות.

תבניות אימות שדות נפוצות

סוג שדה מסכת דוגמה Regex בשרת
טלפון +{375} (00) 000-00-00 ^\+375[0-9]{9}$
אימייל (ללא מסכה) ^[^\s@]+@[^\s@]+.[^\s@]+$
תאריך 00.00.0000 ^\d{2}.\d{2}.\d{4}$
מספרי (מותאם אישית) ^\d+(.\d+)?$

אימות בצד הלקוח באמצעות JavaScript

למשוב מיידי, אימות בצד החזית מתווסף לתבנית של רכיב bitrix:form.result.new. המטפל נרשם לאירוע submit של הטופס:

document.getElementById('form_<?= $arResult['FORM']['SID'] ?>').addEventListener('submit', function (e) { var errors = []; // Телефон var phone = document.getElementById('field_PHONE').value.replace(/\D/g, ''); if (!/^375\d{9}$/.test(phone)) { errors.push('Телефон: введите номер в формате +375XXXXXXXXX'); document.getElementById('field_PHONE').classList.add('error'); } // Email var email = document.getElementById('field_EMAIL').value; if (email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { errors.push('Email: неверный формат адреса'); document.getElementById('field_EMAIL').classList.add('error'); } if (errors.length > 0) { e.preventDefault(); document.getElementById('form_errors').innerHTML = errors.join('<br>'); } }); 

נרמול לפני שמירה

אימות ללא נרמול הוא פתרון חלקי. מספר הטלפון צריך לא רק להיבדק אלא גם להיות מובא לפורמט אחיד. מטפל לאירוע document.getElementById('form_<?= $arResult['FORM']['SID'] ?>').addEventListener('submit', function (e) { var errors = []; // Телефон var phone = document.getElementById('field_PHONE').value.replace(/\D/g, ''); if (!/^375\d{9}$/.test(phone)) { errors.push('Телефон: введите номер в формате +375XXXXXXXXX'); document.getElementById('field_PHONE').classList.add('error'); } // Email var email = document.getElementById('field_EMAIL').value; if (email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { errors.push('Email: неверный формат адреса'); document.getElementById('field_EMAIL').classList.add('error'); } if (errors.length > 0) { e.preventDefault(); document.getElementById('form_errors').innerHTML = errors.join('<br>'); } }); :

AddEventHandler('form', 'OnBeforeResultAdd', function($formId, &$arFields) { if (isset($arFields['form_field_PHONE'])) { $phone = preg_replace('/\D/', '', $arFields['form_field_PHONE']); // Нормализовать: 80291234567 → 375291234567 if (strlen($phone) === 11 && $phone[0] === '8') { $phone = '375' . substr($phone, 2); } if (strlen($phone) === 9) { $phone = '375' . $phone; } if (strlen($phone) === 12 && str_starts_with($phone, '375')) { $arFields['form_field_PHONE'] = '+' . $phone; } else { global $APPLICATION; $APPLICATION->ThrowException('Неверный формат телефона'); return false; } } }); 

אימות באמצעות מסכות קלט

מסכת קלט מונעת פורמט שגוי במהלך הקלט. ספריית IMask.js משולבת בתבנית הרכיב:

IMask(document.getElementById('field_PHONE'), { mask: '+{375} (00) 000-00-00', }); 

עם המסכה, המשתמש פיזית לא יכול להזין אות בשדה הטלפון. זה מסיר חלק מהעומס מאימות הקצה האחורי, אבל לא מחליף אותו — נתונים יכולים להגיע דרך בקשת POST ישירה שעוקפת את הטופס.

הגנה מפני ספאם

ה-CAPTCHA הסטנדרטי של Bitrix מופעל דרך פרמטר הרכיב OnBeforeResultAdd. עבור טפסי אינטרנט, השתמשו בשדה מסוג AddEventHandler('form', 'OnBeforeResultAdd', function($formId, &$arFields) { if (isset($arFields['form_field_PHONE'])) { $phone = preg_replace('/\D/', '', $arFields['form_field_PHONE']); // Нормализовать: 80291234567 → 375291234567 if (strlen($phone) === 11 && $phone[0] === '8') { $phone = '375' . substr($phone, 2); } if (strlen($phone) === 9) { $phone = '375' . $phone; } if (strlen($phone) === 12 && str_starts_with($phone, '375')) { $arFields['form_field_PHONE'] = '+' . $phone; } else { global $APPLICATION; $APPLICATION->ThrowException('Неверный формат телефона'); return false; } } }); ב-IMask(document.getElementById('field_PHONE'), { mask: '+{375} (00) 000-00-00', }); . חלופה היא Google reCAPTCHA v3 דרך המטפל USE_CAPTCHA: עם ציון reCAPTCHA נמוך, הטופס נדחה בשקט (גישת דבש לבוטים). היישומים שלנו מראים הפחתת ספאם של עד 95%.

בדיקת reCAPTCHA v3 בצד השרת:

$token = $_POST['g-recaptcha-response']; $response = file_get_contents( 'https://www.google.com/recaptcha/api/siteverify?secret=SECRET&response=' . $token ); $data = json_decode($response, true); if ($data['score'] < 0.5) { return false; // Молча отклонить } 

תוצרים

המומחים שלנו, עם ניסיון של מעל 10 שנים עם 1C-Bitrix, מבצעים ניתוח מלא של הטופס, מפתחים ביטויים רגולריים ומסכות, מגדירים מטפלי שרת והגנה מפני ספאם. הכל נבדק על תרחישים אמיתיים. עם סיום, אתם מקבלים תיעוד ומדריך מנהל. אנו מבטיחים שנתונים יגיעו בפורמט אחיד ורשומות שגויות ימוזערו ל-<1%.

מה אתם מקבלים

  • ניתוח: סקירת שדות קיימים ודרישות נתונים
  • פיתוח: ביטויים רגולריים ומסכות לכל שדה
  • יישום: אימות חזיתי (JavaScript) ומטפלי קצה אחורי
  • אנטי-ספאם: שילוב reCAPTCHA v3 או שדות דבש מותאמים אישית
  • בדיקות: בדיקת ערכי קצה ואימות בקשות POST ישירות
  • תוצרים:
    • מסמך מפרט אימות
    • קוד JavaScript לאימות חזיתי
    • מטפלי PHP לנרמול בצד השרת
    • קוד שילוב reCAPTCHA v3
    • דוח בדיקות עם שיעורי שגיאות לפני/אחרי
    • מדריך מנהל (PDF)
    • הדרכה לצוות שלכם (שעה)
    • גישה לפורטל התמיכה שלנו למעקב אחר תקלות
    • חודש תמיכה לאחר השקה

כמה זמן לוקחת ההגדרה?

לוחות הזמנים תלויים במספר השדות ובמורכבות הלוגיקה. בממוצע, הגדרת שדה אחד לוקחת משעתיים; אימות מקיף של טופס (עד 10 שדות) לוקח 2 עד 5 ימים. הערכת פרויקט היא בחינם. צרו קשר כדי לדון בפרטים ולבחור את הפתרון הטוב ביותר לעסק שלכם.

מקרי קצה נפוצים: רווחים מובילים/נגררים, תווים בשדות מספריים, שדות חובה ריקים. אלה נתפסים על ידי חיתוך רווחים לפני אימות בשרת והגדרת תבניות regex מתאימות.