اذهب إلى المحتوى
  • 0

بعض الخواص في الموقع لا تعمل في الأيفون

اسماعيل صدوقي

السؤال

مرحبا لدي موقع عند تجربته في هاتف أندرويد و في الحاسوب يعمل بشكل عادي، لكن بعد ارساله للعميل أخبرني أنه لا يعمل في جهاز الأيفون في كل من متصفح جوجل و سفاري؟

س1:هل لدى أحدكم هاتف أيفون يقوم بتجربة التصويت و إخباري اذا زر التصويت يعمل هذا الرابط:

http://voting-system-sadouki.herokuapp.com/VXgptEmRD

س2: ليس لدي هاتف أيفون كيف بإمكاني الآن تتبع المشكلة؟ماذا تفعل لو كنت في مكاني؟

تم التعديل في بواسطة اسماعيل صدوقي
تعديل السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 3 دقائق مضت قال Wael Aljamal:

المشكلة موجودة، زر التصويت لا يعمل، لا يتم تحديث العداد.

لكن الزر يعمل في هواتف الأندرويد و الحاسوب بشكل عادي، فقط المشكلة في هواتف الأيفون، ما تفسيرك لذلك؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 ساعات قال اسماعيل صدوقي:

لكن الزر يعمل في هواتف الأندرويد و الحاسوب بشكل عادي، فقط المشكلة في هواتف الأيفون، ما تفسيرك لذلك؟

توجه لمتصفح chrome ثم Developer Tools/Settings/Overrides ثم User agent واختر نوع المستخدم iPhone/iPad أو Safari

يفترض أن يعمل المتصفح مثل Safari بكل خصائص front-end ضمنه.

السبب على الأغلب:: هل تستخدم أي مكتبات أو خاصيات غير مدعومة على Safari أو ios web بشكل عام؟ تأكد من إصدار المكتبات، ويمكنك مشاركة هذه المعلومات لنعمل على حل المشكلة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 ساعات قال Wael Aljamal:

توجه لمتصفح chrome ثم Developer Tools/Settings/Overrides ثم User agent واختر نوع المستخدم iPhone/iPad أو Safari

عند استخدامها لا يحدث اي مشاكل,

بحثت عن بعض المواقع التي تحاكي اجهزة الأيفون وجدت هذا الموقع:

http://www.responsinator.com/?url=voting-system-sadouki.herokuapp.com%2FVXgptEmRD

عند الضغط على زر تصويت يظهر في console خطأ 419: message    "CSRF token mismatch."

610484a2639b3_Screenshotfrom2021-07-3100-00-33.png.3c1d119635d0e96e047cdc2a97c85d32.png

الكود الذي استخدمه لارسال التصويت لقاعدة البيانات:

$.ajax({
                type: 'post',
                url: "{{ route('vote') }}",
                data: {
                    '_token': "{{ csrf_token() }}",
                    'id': id,
                    'voted': voted,
                    'unique_url': unique_url
                },
                success: function (data) {
                  
                    if(data.status == true) {
                      // code
             
                    } else {
                      // code
                    }
                    
                }, error: function(reject) {
                    
                }

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 19 دقائق مضت قال اسماعيل صدوقي:

الكود الذي استخدمه لارسال التصويت لقاعدة البيانات:

لنحل مشكلة csrf سنقوم بوضع عنصر html وهو meta tag يخزن هذه القيمة:

ضعه في الترويسة مثلا.. (صفحة HTML الرئيسية للموقع main Layout

<meta name="csrf-token" content="{{ csrf_token() }}" />

كما يمكن يمكن عمل زر ومن ثم إخفاءه :

type="hidden"

ويمكن هكذا
<input type="hidden" name="_token" value="{!! {{ 'csrf_token()' }} !!}">

ثم عندما تريد إرسال الطلبية نجلب قيمته meta:

<script type="text/javascript">
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
</script>

ونمررها في الترويسة..

نضع هذه الشيفرة في المسارين التاليين حسب إصدار لارافل، وأرى أنك تستخدم إصدار قديم

resources/js/bootstrap.js file for Laravel 5.7 

and 

resources/assets/js/bootstrap.js for Laravel 5.6

هل تضع قيمة للجلسة session ؟ مثل Timeout ؟

يمكن زيادة مدة الجلسة:

config/session.php

'lifetime' => 360

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 21 دقائق مضت قال Wael Aljamal:

لنحل مشكلة csrf سنقوم بوضع عنصر html وهو meta tag يخزن هذه القيمة:

ضعه في الترويسة مثلا.. (صفحة HTML الرئيسية للموقع main Layout


<meta name="csrf-token" content="{{ csrf_token() }}" />

كما يمكن يمكن عمل زر ومن ثم إخفاءه :


type="hidden"

ويمكن هكذا
<input type="hidden" name="_token" value="{!! {{ 'csrf_token()' }} !!}">

ثم عندما تريد إرسال الطلبية نجلب قيمته meta:


<script type="text/javascript">
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
</script>

ونمررها في الترويسة..

نضع هذه الشيفرة في المسارين التاليين حسب إصدار لارافل، وأرى أنك تستخدم إصدار قديم


resources/js/bootstrap.js file for Laravel 5.7 

and 

resources/assets/js/bootstrap.js for Laravel 5.6

هل تضع قيمة للجلسة session ؟ مثل Timeout ؟

يمكن زيادة مدة الجلسة:


config/session.php

'lifetime' => 360

 

قمت بكافة التعديلات و للأسف مازالت نفس المشكلة.

بالنسبة لإصدار لارافيل أستعمل لارفيل 8!

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 7 دقائق مضت قال اسماعيل صدوقي:

قمت بكافة التعديلات و للأسف مازالت نفس المشكلة.

بالنسبة لإصدار لارافيل أستعمل لارفيل 8!

ضمن main layout لنبطل التخزين المؤقت:

@guest
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    <meta http-equiv="refresh" content="{{config('session.lifetime') * 60}}">
@endguest

ربما سبب المشكلة في ملفات الكوكيز، لاحظت Apple Bug Reporter PID #13966978.

حيث إن قمت بتثبيت عدة قيم كوكيز مباشرة فهذا لن يعمل، بل يجب وضع قيمة بسيطة كأول كوكيز يتم تخزينها:

setcookie("hi","true");

ثم أكمل باقي الكوكيز.

إن لم تعمل ربما يحل المشكلة التالي:

Cross-domain cookies/sessions in Safari 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...