• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل سایت با بعضی مرورگرها
#1
Exclamation 
سلاااام
یه مشکل دارم که الان چند هفته هست که نتونستم حلش کنم.من سایتم رو آپلود کردم، تو بخش لاگین کاربر تو بعضی مرورگرهای بعضی سیستم ها لاگین انجام میشه و طبق مقدار json که برمیگرده توسط جی کوئری صفحه رفرش میشه.
اما تو بعضی ها مخصوصا IE لاگین انجام میشه، json هم درست برمیگرده اما رفرش انجام نمیشه.وقتی دستی رفرش میکنم صفحه رو، میبنم که کاربر وارد شده.
دلیل این چی میتونه باشه؟
این کد لاگین:
کد پی‌اچ‌پی:
function loginUser()
    {
    
$strs explode('/'$_SERVER['HTTP_REFERER'] );
    
    if ( 
strcmp($strs[2] ,$_SERVER['HTTP_HOST'])!=0)
   {
    
header("HTTP/1.1 404 OK");
    exit;
   }
        
//print $_POST['username'];die();
        
$username trim($_POST['username']);
        
$password trim($_POST['password']);
        
        if(empty(
$username) || empty($password))
            {
               echo  
$error "نوشتن نام کاربری و گذرواژه الزامی ست.";
            }
            else
            {
            
$data=array('username'=>htmlentities(check_input($username),ENT_QUOTES"UTF-8"),
                        
'password'=>md5($password));
          
//print_r($data);die();
            
$user=new user();
            
$result=$user->loginUser($data);
            
//print_r($result);die();
            
if ($result['status']) 
                {
                    
$_SESSION['username']=$result['username'];
                    
$_SESSION['u_id']=$result['id'];
                    echo 
$user->returnJson(1);
                }
                else
                {
                    echo 
$user->returnJson(0);
                }
            }
    } 
این هم کد جی کوئری:
کد:
function signin()
    {
        $("#btn_signin").live("click",function(){
            if($("#username").val()!="" && $("#password").val()!=""){
                $("#frm_signin").ajaxSubmit({
                     url:"index.php?op=loginUser",
                     dataType:"json",
                     success:function(jret){
                         if(jret.status==1)
                         {
                             $(".err").hide();
                             location.reload();
                         }
                         else
                         {
                            $(".err").html("نام کاربری یا رمز عبور اشتباه است").show();
                         }
                     }
                    });
            }
            else
            {
                $(".err").html("لطفا نام کاربری و رمز عبور خود را وارد کنید.").show();
            }
        })
    }
  پاسخ
تشکر شده توسط :
#2
بصورت پیش فرض متد reload از کش خونده میشه

میتونید از کد زیر استفاده کنید، ایشالا که حل میشه:

کد:
location.reload(true)
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : Reza ali786 parlaq
#3
(۱۳۹۱ مهر ۲۷, ۱۱:۰۳ ب.ظ)hamid_80386 نوشته: بصورت پیش فرض متد reload از کش خونده میشه

میتونید از کد زیر استفاده کنید، ایشالا که حل میشه:

کد:
location.reload(true)

ممنون که جواب دادین ولی حل نشد.
به نظرتون میتونه مشکل از json باشه؟یعنی نتونه بخونه؟ یا اصلا json فرستاده نشده باشه؟
  پاسخ
تشکر شده توسط :
#4
من تو نسخه های مختلف IE این تابع رو تست کردم، مشکل از reload نمیتونه باشه.

یه alert داخل و خارج شرط بزن ببین اصلا خروجی میده؟

کد:
if(jret.status==1)
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط : parlaq
#5
والا نمیدونم، باید تست بشه، ولی با توجه به شرط هات بعید میدونم

اما یه توصیه، برای لاگین از ایجکس استفاده نکنید، کلاً به امنیت لطمه جدی وارد میکنه...
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#6
اگر هدر json رو میفرستی که هیچ اگر نه از این استفاده کن شاید حل بشه.
کد پی‌اچ‌پی:
header('Content-Type: application/json; charset=utf-8'); 
  پاسخ
تشکر شده توسط :
#7
(۱۳۹۱ مهر ۲۹, ۰۲:۴۷ ب.ظ)Ehsan نوشته: من تو نسخه های مختلف IE این تابع رو تست کردم، مشکل از reload نمیتونه باشه.

یه alert داخل و خارج شرط بزن ببین اصلا خروجی میده؟

کد:
if(jret.status==1)
تست کردم ولی هیچی برنمیگردونه.مشکل از چیه؟
  پاسخ
تشکر شده توسط :
#8
غیر از IE با مرورگر دیگه ای هم مشکل داری؟ با کدوم نسخه آی ای مشکل داری؟ اگه توی آی ای ۹ و ۱۰ بدون مشکل کار میکنه به نظرم لزومی نداره برای نسخه های پایین تر وقت بگذاری فقط یه پیغام خطا بگذار برای آی ای ۸ و پایین تر
  پاسخ
تشکر شده توسط :
#9
(۱۳۹۱ مهر ۲۹, ۰۳:۵۲ ب.ظ)asdb20 نوشته: اگر هدر json رو میفرستی که هیچ اگر نه از این استفاده کن شاید حل بشه.
کد پی‌اچ‌پی:
header('Content-Type: application/json; charset=utf-8'); 

این کد رو قبل از برگشت json گذاشتم ولی ارور میده که هدر قبلا فرستاده شده و ...
  پاسخ
تشکر شده توسط :
#10
اولین خط اسکریپت php این رو بذار
کد پی‌اچ‌پی:
ob_start(); 
و هدر هم قبل از ارسال json
اگر نشد کد js رو این طور ویرایش کن ببین نوعش چیه
کد پی‌اچ‌پی:
success:function(jret){
            
alert(typeof jret);
                         if(
jret.status==1
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان