PageSourceSearch

https://saniawatch.com/contact-us/

html saniawatch.com collected 2026-10-02 00:18:28 UTC 19,090 bytes, 390 lines download raw bytes

1
2
3
4<!DOCTYPE html>
5<html lang="fa_IR"> 
6<head>
7<title>گالری ثانیا واچ</title>
8<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
9<meta name="theme-color" content="#000000">
10<meta name="apple-mobile-web-app-status-bar-style" content="black">
11<meta name="mobile-web-app-capable" content="yes">
12<link rel="icon" type="image/png" href="https://saniawatch.com/assets/images/fav/favicon-96x96.png" sizes="96x96" />
13<link rel="icon" type="image/svg+xml" href="https://saniawatch.com/assets/images/fav/favicon.svg" />
14<link rel="shortcut icon" href="https://saniawatch.com/assets/images/fav/favicon.ico" />
15<link rel="apple-touch-icon" sizes="180x180" href="https://saniawatch.com/assets/images/fav/apple-touch-icon.png" />
16<meta name="apple-mobile-web-app-title" content="Sania" />
17<link rel="manifest" href="https://saniawatch.com/assets/images/fav/site.webmanifest" />
18<link rel="preload" href="/assets/transition-effect/css/style.css?v=1" as="style" onload="this.onload=null;this.rel='stylesheet'">
19<noscript><link rel="stylesheet" href="/assets/transition-effect/css/style.css?v=1"></noscript>
20<link rel="stylesheet" href="/assets/css/saberiteam.css?v=3">
21<link rel="preload" href="/assets/css/responsive.css?v=2" as="style" onload="this.onload=null;this.rel='stylesheet'">
22<noscript><link rel="stylesheet" href="/assets/css/responsive.css?v=2"></noscript>
23</head><body>
24
25
26
27
28
29
30<div class="sp-overlay" id="spOverlay" style="display:none;"></div>
31<div class="sp-modal" id="spModal" style="display:none;" role="dialog" aria-modal="true">
32  <div class="sp-head">
33    <h3 class="sp-title" id="spTitle"></h3>
34    <button class="sp-close" id="spClose" type="button" aria-label="Close">×</button>
35  </div>
36  <p class="sp-body" id="spBody"></p>
37  <div class="sp-actions">
38    <button class="sp-btn sp-primary" id="spOk" type="button"></button>
39  </div>
40</div>
41
42
43
44
45
46
47
48<section id="hero-contactus">
49    
50
51 <div class="cf-page">
52    <div class="cf-shell">
53
54      <!-- LEFT -->
55      <aside class="cf-left">
56        <h2 class="cf-left-title">ارتباط با ما، آغاز یک گفتگوی حرفه‌ای</h2>
57        <p class="cf-left-sub">باعث افتخار ماست که پذیرای پیام شما باشیم.</p>
58
59        <div class="cf-info">
60          <div class="cf-info-item">
61            <!-- phone icon -->
62            <svg class="cf-ico" viewBox="0 0 24 24" fill="none" aria-hidden="true">
63              <path d="M6.6 3.8c.6-1 2-1.3 3-.6l1.6 1.1c.9.6 1.2 1.8.7 2.7l-.9 1.5c-.2.4-.2.9 0 1.3 1 2.1 2.7 3.8 4.8 4.8.4.2.9.2 1.3 0l1.5-.9c.9-.5 2.1-.2 2.7.7l1.1 1.6c.7 1 .4 2.4-.6 3-1 .6-2.1 1-3.2 1-8.2 0-14.9-6.7-14.9-14.9 0-1.1.4-2.2 1-3.2Z" stroke="white" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
64            </svg>
65            <div> <a href="tel:+989121000743">09121000743</a></div>
66          </div>
67
68          <div class="cf-info-item">
69            <!-- mail icon -->
70            <svg class="cf-ico" viewBox="0 0 24 24" fill="none" aria-hidden="true">
71              <path d="M4 7.5A2.5 2.5 0 0 1 6.5 5h11A2.5 2.5 0 0 1 20 7.5v9A2.5 2.5 0 0 1 17.5 19h-11A2.5 2.5 0 0 1 4 16.5v-9Z" stroke="white" stroke-width="1.6"/>
72              <path d="m6 8 6 4.3L18 8" stroke="white" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
73            </svg>
74            <div><a href="mailto:[email protected]">[email protected]</a></div>
75          </div>
76
77          <div class="cf-info-item">
78            <!-- location icon -->
79            <svg class="cf-ico" viewBox="0 0 24 24" fill="none" aria-hidden="true">
80              <path d="M12 21s7-5.2 7-11.3A7 7 0 0 0 5 9.7C5 15.8 12 21 12 21Z" stroke="white" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
81              <path d="M12 12.2a2.3 2.3 0 1 0 0-4.6 2.3 2.3 0 0 0 0 4.6Z" stroke="white" stroke-width="1.6"/>
82            </svg>
83            <div>
84            <a target="_blank" href="https://maps.app.goo.gl/eaJFJwCGf3L4sKdY7">
85             نیاوران، مجتمع حیات سبز، واحد 919
86             </a>
87             </div>
88          </div>
89        </div>
90
91        <div class="cf-hours">
92          <div class="cf-hours-row">
93            <span>همه روزه</span>
94          </div>
95          <div class="cf-hours-row">
96            <!-- clock icon -->
97            <svg class="cf-ico" viewBox="0 0 24 24" fill="none" aria-hidden="true">
98              <path d="M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z" stroke="white" stroke-width="1.6"/>
99              <path d="M12 7v5l3 2" stroke="white" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
100            </svg>
101            <div>10 الی 21</div>
102          </div>
103        </div>
104
105        <div class="cf-social" aria-label="social links">
106          <!-- instagram -->
107            <a href="https://t.me/saniawatch/"><svg viewBox="0 0 192 192" xmlns="http://www.w3.org/2000/svg" fill="none"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><path stroke="#ffffff" stroke-width="12" d="M23.073 88.132s65.458-26.782 88.16-36.212c8.702-3.772 38.215-15.843 38.215-15.843s13.621-5.28 12.486 7.544c-.379 5.281-3.406 23.764-6.433 43.756-4.54 28.291-9.459 59.221-9.459 59.221s-.756 8.676-7.188 10.185c-6.433 1.509-17.027-5.281-18.919-6.79-1.513-1.132-28.377-18.106-38.214-26.404-2.649-2.263-5.676-6.79.378-12.071 13.621-12.447 29.891-27.913 39.728-37.72 4.54-4.527 9.081-15.089-9.837-2.264-26.864 18.483-53.35 35.835-53.35 35.835s-6.053 3.772-17.404.377c-11.351-3.395-24.594-7.921-24.594-7.921s-9.08-5.659 6.433-11.693Z"></path></g></svg></a>
108            <a href="https://www.instagram.com/saniawatch.gallery/"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 18C15.3137 18 18 15.3137 18 12C18 8.68629 15.3137 6 12 6C8.68629 6 6 8.68629 6 12C6 15.3137 8.68629 18 12 18ZM12 16C14.2091 16 16 14.2091 16 12C16 9.79086 14.2091 8 12 8C9.79086 8 8 9.79086 8 12C8 14.2091 9.79086 16 12 16Z" fill="#ffffff"></path> <path d="M18 5C17.4477 5 17 5.44772 17 6C17 6.55228 17.4477 7 18 7C18.5523 7 19 6.55228 19 6C19 5.44772 18.5523 5 18 5Z" fill="#ffffff"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M1.65396 4.27606C1 5.55953 1 7.23969 1 10.6V13.4C1 16.7603 1 18.4405 1.65396 19.7239C2.2292 20.8529 3.14708 21.7708 4.27606 22.346C5.55953 23 7.23969 23 10.6 23H13.4C16.7603 23 18.4405 23 19.7239 22.346C20.8529 21.7708 21.7708 20.8529 22.346 19.7239C23 18.4405 23 16.7603 23 13.4V10.6C23 7.23969 23 5.55953 22.346 4.27606C21.7708 3.14708 20.8529 2.2292 19.7239 1.65396C18.4405 1 16.7603 1 13.4 1H10.6C7.23969 1 5.55953 1 4.27606 1.65396C3.14708 2.2292 2.2292 3.14708 1.65396 4.27606ZM13.4 3H10.6C8.88684 3 7.72225 3.00156 6.82208 3.0751C5.94524 3.14674 5.49684 3.27659 5.18404 3.43597C4.43139 3.81947 3.81947 4.43139 3.43597 5.18404C3.27659 5.49684 3.14674 5.94524 3.0751 6.82208C3.00156 7.72225 3 8.88684 3 10.6V13.4C3 15.1132 3.00156 16.2777 3.0751 17.1779C3.14674 18.0548 3.27659 18.5032 3.43597 18.816C3.81947 19.5686 4.43139 20.1805 5.18404 20.564C5.49684 20.7234 5.94524 20.8533 6.82208 20.9249C7.72225 20.9984 8.88684 21 10.6 21H13.4C15.1132 21 16.2777 20.9984 17.1779 20.9249C18.0548 20.8533 18.5032 20.7234 18.816 20.564C19.5686 20.1805 20.1805 19.5686 20.564 18.816C20.7234 18.5032 20.8533 18.0548 20.9249 17.1779C20.9984 16.2777 21 15.1132 21 13.4V10.6C21 8.88684 20.9984 7.72225 20.9249 6.82208C20.8533 5.94524 20.7234 5.49684 20.564 5.18404C20.1805 4.43139 19.5686 3.81947 18.816 3.43597C18.5032 3.27659 18.0548 3.14674 17.1779 3.0751C16.2777 3.00156 15.1132 3 13.4 3Z" fill="#ffffff"></path> </g></svg></a>
109            <a href="https://wa.me/+989121000743"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M6.014 8.00613C6.12827 7.1024 7.30277 5.87414 8.23488 6.01043L8.23339 6.00894C9.14051 6.18132 9.85859 7.74261 10.2635 8.44465C10.5504 8.95402 10.3641 9.4701 10.0965 9.68787C9.7355 9.97883 9.17099 10.3803 9.28943 10.7834C9.5 11.5 12 14 13.2296 14.7107C13.695 14.9797 14.0325 14.2702 14.3207 13.9067C14.5301 13.6271 15.0466 13.46 15.5548 13.736C16.3138 14.178 
10917.0288 14.6917 17.69 15.27C18.0202 15.546 18.0977 15.9539 17.8689 16.385C17.4659 17.1443 16.3003 18.1456 15.4542 17.9421C13.9764 17.5868 8 15.27 6.08033 8.55801C5.97237 8.24048 5.99955 8.12044 6.014 8.00613Z" fill="#ffffff"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 23C10.7764 23 10.0994 22.8687 9 22.5L6.89443 23.5528C5.56462 24.2177 4 23.2507 4 21.7639V19.5C1.84655 17.492 1 15.1767 1 12C1 5.92487 5.92487 1 12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23ZM6 18.6303L5.36395 18.0372C3.69087 16.4772 3 14.7331 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C11.0143 21 10.552 20.911 9.63595 20.6038L8.84847 20.3397L6 21.7639V18.6303Z" fill="#ffffff"></path> </g></svg></a>
110        </div>
111      </aside>
112
113      <!-- RIGHT -->
114      <main class="cf-right">
115        <form class="cf-form" action="#" method="post" id="contactForm">
116        <input type="hidden" name="csrf_token" value="a8c86c7fd0d112fdbe29bceb83637a295d937124f0e9410d3bb4626d79119666">
117          <div class="cf-grid-2">
118            <div class="cf-field">
119              <label class="cf-label" for="cf-firstname">نام و نام خانوادگی</label>
120              <input class="cf-input" id="cf-firstname" name="firstname" type="text" placeholder="با حروف فارسی وارد نمایید" />
121            </div>
122
123            <div class="cf-field">
124               <label class="cf-label" for="cf-phone">شماره همراه</label>
125            <input class="cf-input" id="cf-phone" name="phone" type="tel" placeholder="09120000000" />
126            </div>
127          </div>
128
129          <div class="cf-field">
130            <label class="cf-label" for="cf-email">ایمیل</label>
131            <input class="cf-input" id="cf-email" name="email" type="email" placeholder="[email protected]" />
132          </div>
133
134
135          <div class="cf-field">
136            <label class="cf-label" for="cf-message">پیام شما</label>
137            <textarea class="cf-textarea" id="cf-message" name="message" placeholder="پیام شما با دقت بررسی شده و در اسرع وقت پاسخ داده خواهد شد."></textarea>
138          </div>
139
140          <div class="cf-actions">
141            <button class="cf-btn" type="submit">ارسال پیام</button>
142          </div>
143        </form>
144      </main>
145
146    </div>
147  </div>
148<a class="back_to_home" href="https://saniawatch.com/">بازگشت به خانه <svg viewBox="-19.04 0 75.803 75.803" xmlns="http://www.w3.org/2000/svg" fill="#ffffff" stroke="#ffffff"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <g id="Group_64" data-name="Group 64" transform="translate(-624.082 -383.588)"> <path id="Path_56" data-name="Path 56" d="M660.313,383.588a1.5,1.5,0,0,1,1.06,2.561l-33.556,33.56a2.528,2.528,0,0,0,0,3.564l33.556,33.558a1.5,1.5,0,0,1-2.121,2.121L625.7,425.394a5.527,5.527,0,0,1,0-7.807l33.556-33.559A1.5,1.5,0,0,1,660.313,383.588Z" fill="#ffffff"></path> </g> </g></svg></a>
149
150</section>
151
152
153
154
155
156<script src="../assets/js/jquery.min.js"></script>
vendor: 1 bytes, line 156
156
157<script>
158jQuery(function ($) {
159  'use strict';
160
161  var $form = $('#contactForm').length ? $('#contactForm') : $('.cf-form').first();
162  if (!$form.length) return;
163
164  var $name  = $form.find('#cf-firstname');
165  var $phone = $form.find('#cf-phone');
166  var $email = $form.find('#cf-email');
167  var $msg   = $form.find('#cf-message');
168  var $btn   = $form.find('button[type="submit"]');
169  var $csrf  = $form.find('input[name="csrf_token"]'); // اگر داری
170
171  // UX + Hardening ساده
172  $name.attr({ autocomplete: 'name', maxlength: 60 });
173  $phone.attr({ inputmode: 'numeric', autocomplete: 'tel', maxlength: 14 });
174  $email.attr({ autocomplete: 'email', maxlength: 120 });
175  $msg.attr({ maxlength: 1500 });
176
177  function clamp(s, max) {
178    s = String(s || '');
179    return s.length > max ? s.slice(0, max) : s;
180  }
181
182  function normalizeSpaces(s) {
183    return String(s || '')
184      .replace(/\s+/g, ' ')
185      .replace(/[\u200f\u202a-\u202e]/g, '') // حذف bidi controls (امنیت/نمایش)
186      .trim();
187  }
188
189  function toEnglishDigits(input) {
190    var fa = 'Û°Û±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹';
191    var ar = '٠١٢٣٤٥٦٧٨٩';
192    return String(input)
193      .replace(/[Û°-Û¹]/g, function (d) { return String(fa.indexOf(d)); })
194      .replace(/[Ù -Ù©]/g, function (d) { return String(ar.indexOf(d)); });
195  }
196
197  // --- نام فقط حروف (بدون عدد/علامت) ---
198  function normalizeFullName(raw) {
199    var s = normalizeSpaces(raw);
200    // نگه داشتن فقط: حروف فارسی/عربی + فاصله + نیم‌فاصله
201    // هر چیز دیگه حذف میشه (عدد/علامت/لاتین/...)
202    s = s.replace(/[^\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF\s\u200c]/g, '');
203    s = normalizeSpaces(s);
204    return s;
205  }
206
207  function isValidFullName(name) {
208    // حداقل ۲ کاراکتر، فقط حروف + فاصله/نیم‌فاصله
209    return /^[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF\s\u200c]{2,60}$/.test(name);
210  }
211
212  // --- شماره فقط عدد + تبدیل فارسی/عربی به انگلیسی + افزودن 0 + 11 رقم ---
213  function normalizeMobile(raw) {
214    var s = toEnglishDigits(raw);
215
216    // فقط رقم نگه دار
217    s = s.replace(/[^\d]/g, '');
218
219    // اگر 98... یا 0098... بود تبدیلش کن به 0...
220    if (s.indexOf('0098') === 0) s = '0' + s.slice(4);
221    else if (s.indexOf('98') === 0) s = '0' + s.slice(2);
222
223    // اگر با 0 شروع نشد، 0 اولش بگذار
224    if (s && s.charAt(0) !== '0') s = '0' + s;
225
226    return s;
227  }
228
229  function isValidIranMobile(m) {
230    // دقیقاً 11 رقم و شروع با 09
231    return /^09\d{9}$/.test(m);
232  }
233
234  // اعمال لحظه‌ای قوانین روی ورودی‌ها
235  $name.on('input blur', function () {
236    var n = normalizeFullName($(this).val());
237    if ($(this).val() !== n) $(this).val(n);
238  });
239
240  $phone.on('input blur', function () {
241    var n = normalizeMobile($(this).val());
242    // اینجا نذاریم هر لحظه 0 اضافه کنه و کاربر اذیت بشه؟
243    // طبق خواسته‌ات، اضافه کردن 0 را انجام می‌دهیم.
244    if ($(this).val() !== n) $(this).val(n);
245  });
246
247  function isValidEmail(email) {
248    if (!email) return true;
249    return /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/i.test(email);
250  }
251
252  $form.on('submit', function (e) {
253    e.preventDefault();
254
255    var fullName = normalizeFullName(clamp($name.val(), 60));
256    var phone    = normalizeMobile(clamp($phone.val(), 30));
257    var email    = normalizeSpaces(clamp($email.val(), 120)).toLowerCase();
258    var message  = normalizeSpaces(clamp($msg.val(), 1500));
259    var csrfTok  = $csrf.length ? normalizeSpaces(clamp($csrf.val(), 200)) : '';
260
261    // فیلدهای اجباری: نام، شماره، پیام (ایمیل اختیاری)
262    // اگر CSRF داری و می‌خوای اجباری باشه: csrfTok هم اضافه کن
263    var requiredOk = !!(fullName && phone && message);
264
265    if (
266      !requiredOk ||
267      !isValidFullName(fullName) ||
268      !isValidIranMobile(phone) ||
269      !isValidEmail(email)
270    ) {
271        simplePopup({
272        title: "راهنمای سایت",
273        text: "کاربر عزیز لطفا اطلاعات خواسته شده را کامل وارد نمایید.",
274        buttonText: "متوجه شدم"
275        });
276      return;
277    }
278
279    // مقادیر نرمال‌شده رو برگردون توی فیلدها
280    $name.val(fullName);
281    $phone.val(phone);
282
283    $btn.prop('disabled', true).attr('aria-busy', 'true');
284
285    var payload = {
286      fullname: fullName,
287      phone: phone,
288      email: email ? email : null,
289      message: message
290    };
291
292    // اگر CSRF داری و endpoint چکش می‌کنه:
293    if (csrfTok) payload.csrf_token = csrfTok;
294
295    $.ajax({
296      url: 'https://saniawatch.com/core/contactus.php',
297      type: 'POST',
298      data: JSON.stringify(payload),
299      contentType: 'application/json; charset=utf-8',
300      dataType: 'json',
301      headers: {
302        'Accept': 'application/json',
303        'X-Requested-With': 'XMLHttpRequest'
304      }
305    })
306    .done(function () {
307        simplePopup({
308        title: "راهنمای سایت",
309        text: "همراه عزیز، پیام‌تان با موفقیت دریافت شد. همکاران ما در اسرع‌وقت با شما ارتباط خواهند گرفت.",
310        buttonText: "متوجه شدم"
311        });
312      $form[0].reset();
313    })
314    .fail(function () {
315             simplePopup({
316        title: "راهنمای سایت",
317        text: "ارسال پیام با خطا مواجه شد.",
318        buttonText: "متوجه شدم"
319        });
320    })
321    .always(function () {
322      $btn.prop('disabled', false).removeAttr('aria-busy');
323    });
324  });
325});
326</script>
326
327
328
329<script>
330  (function($){
331    // نگهداری callback جاری (برای هر بار باز شدن)
332    var current = { onOk: null, onClose: null };
333
334    window.simplePopup = function(options){
335      var o = $.extend({
336        title: "",
337        text: "",
338        buttonText: "باشه",
339        onOk: null,      // function(close){}
340        onClose: null    // function(){}
341      }, options || {});
342
343      current.onOk = o.onOk;
344      current.onClose = o.onClose;
345
346      $('#spTitle').text(o.title || '');
347      $('#spBody').text(o.text || '');
348      $('#spOk').text(o.buttonText || 'باشه');
349
350      // نمایش
351      $('#spOverlay').fadeIn(120);
352      $('#spModal').fadeIn(120);
353
354      return {
355        close: closePopup
356      };
357    };
358
359    function closePopup(){
360      $('#spModal').fadeOut(120);
361      $('#spOverlay').fadeOut(120, function(){
362        if(typeof current.onClose === 'function') current.onClose();
363        current.onOk = null;
364        current.onClose = null;
365      });
366    }
367
368    // رویدادهای ثابت برای بستن (این‌ها برای باز کردن نیستند)
369    $(document).on('click', '#spOverlay, #spClose', function(){
370      closePopup();
371    });
372
373    $(document).on('click', '#spOk', function(){
374      if(typeof current.onOk === 'function'){
375        current.onOk(closePopup); // اجازه میدی داخل callback خودت ببندی
376      } else {
377        closePopup();
378      }
379    });
380
381    $(document).on('keydown', function(e){
382      if(e.key === 'Escape') closePopup();
383    });
384
385  })(jQuery);
386</script>
386
387
388
389</body>
390</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.