PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کش کردن متغییر آی پی در Yii



Marshall
December 12th, 2019, 02:49
با سلام اساتید محترم
چطوری میشه توی فریمورک yii مقدار ip رو کش کرد؟
یعنی یه ip رو برای تموم کاربران تا چند ساعت کش کنیم که فقط این آپی نشون داده بشه؟
آیا راهی هست؟
خیلی ممنون میشم راهنمایی کنید بهش نیاز دارم
با تشکر

rezaonline.net
December 12th, 2019, 16:51
//set
Yii::$app->cache->set ( $key, $value, 60 * 60); //1h


//get
Yii::$app->cache->get( $key) ;


پارامتر سوم به ثانیه هست مدت زمان ذخیره کش هست .

Marshall
December 12th, 2019, 18:15
//set
Yii::$app->cache->set ( $key, $value, 60 * 60); //1h


//get
Yii::$app->cache->get( $key) ;


پارامتر سوم به ثانیه هست مدت زمان ذخیره کش هست .


سلام
از لطف و محبت شما خیلی ممنونم
من اگه متغیر آی پی:


$userIp = 5.200.14.17

باشه چطوری باید توی کدهای شما واردش کنم و بعدا چطوری اونو با echo فراخوانی کنم؟
چون تازه کارم رو با yii شروع کردم
خیلی ازتون ممنون و سپاسگزارم

starting
December 12th, 2019, 19:38
سلام
از لطف و محبت شما خیلی ممنونم
من اگه متغیر آی پی:


$userIp = 5.200.14.17

باشه چطوری باید توی کدهای شما واردش کنم و بعدا چطوری اونو با echo فراخوانی کنم؟
چون تازه کارم رو با yii شروع کردم
خیلی ازتون ممنون و سپاسگزارم

value برای ست کردنهر مقداری هست حالا میتونید همه رو اینجا ذخیره کنید یا دونه دونه براش کلید مختلف بسازید
یک چیزی هست مثل کوکی شما آی پی اول رو کش میکنید و بد از اون تا هر زمانی آی پی اول رو درنظر میگیرید

Marshall
December 12th, 2019, 20:21
value برای ست کردنهر مقداری هست حالا میتونید همه رو اینجا ذخیره کنید یا دونه دونه براش کلید مختلف بسازید
یک چیزی هست مثل کوکی شما آی پی اول رو کش میکنید و بد از اون تا هر زمانی آی پی اول رو درنظر میگیرید

با سلام
ببخشید میشه با مقدار آی پی که دادم تابع رو برام درست کنید و بعد هم مقدار رو فراخوانی کنم!
خیلی ممنون می شم

starting
December 12th, 2019, 22:51
با سلام
ببخشید میشه با مقدار آی پی که دادم تابع رو برام درست کنید و بعد هم مقدار رو فراخوانی کنم!
خیلی ممنون می شم




$userIp = 5.200.14.17;
Yii::$app->cache->set ( 'user_ip', $userip, 60 * 60);

Marshall
December 13th, 2019, 00:41
خیلی ممنون از محبت شما دوست عزیز

یعنی اینطوری همه ی کاربران همین آپی رو برای مدت یکساعت می بیند؟

الان من نمی تونم echo کنم ببینم ip واقعا برای همه این است؟

مثلا این آی پی کاربران است که متغیر هستند!

من می خوام آی پی یکی از کاربران تا زمان بخصوصی cache بشه و همه ی کاربران بجای اینکه ip خودشون رو ببیند ip ی که کش شده رو ببیند و باز هم بعد از یک ساعت دیگه یه آی دیگه کش بشه و این روند ادامه داشته باشه

من به echo هم نیاز دارم که تابعش رو فراخوانی کنم!

starting
December 13th, 2019, 01:13
خیلی ممنون از محبت شما دوست عزیز

یعنی اینطوری همه ی کاربران همین آپی رو برای مدت یکساعت می بیند؟

الان من نمی تونم echo کنم ببینم ip واقعا برای همه این است؟

مثلا این آی پی کاربران است که متغیر هستند!

من می خوام آی پی یکی از کاربران تا زمان بخصوصی cache بشه و همه ی کاربران بجای اینکه ip خودشون رو ببیند ip ی که کش شده رو ببیند و باز هم بعد از یک ساعت دیگه یه آی دیگه کش بشه و این روند ادامه داشته باشه

من به echo هم نیاز دارم که تابعش رو فراخوانی کنم!

درود
ببینید وقتی یکی سوال میپرسه از یک فریمورک بنا بر این میزاریم ایشون php بلد هست و گیر اون بخش خاص فریمورک هست
بهرحال


Yii::$app->cache->set ( 'user_ip', Yii::$app->getRequest()->getUserIP(), 60 * 60);
$ip_az_cache=Yii::$app->cache->get( 'user_ip') ;
// hala $ip_az_cache har ja khasti cho kon ya mostaghim Yii::$app->cache->get( 'user_ip') ; echo kon
//ama dorostesh ine chek koni bebini baraye in user ip cache dari (kamtar az zaman masalan 1 saat) agar nabood az ip jadidd echo koni
if (Yii::$app->cache->get( 'user_ip')){
echo Yii::$app->cache->get( 'user_ip');
}else{
echo Yii::$app->getRequest()->getUserIP();
}

Marshall
December 13th, 2019, 01:48
درود
ببینید وقتی یکی سوال میپرسه از یک فریمورک بنا بر این میزاریم ایشون php بلد هست و گیر اون بخش خاص فریمورک هست
بهرحال


Yii::$app->cache->set ( 'user_ip', Yii::$app->getRequest()->getUserIP(), 60 * 60);
$ip_az_cache=Yii::$app->cache->get( 'user_ip') ;
// hala $ip_az_cache har ja khasti cho kon ya mostaghim Yii::$app->cache->get( 'user_ip') ; echo kon
//ama dorostesh ine chek koni bebini baraye in user ip cache dari (kamtar az zaman masalan 1 saat) agar nabood az ip jadidd echo koni
if (Yii::$app->cache->get( 'user_ip')){
echo Yii::$app->cache->get( 'user_ip');
}else{
echo Yii::$app->getRequest()->getUserIP();
}



از لطف و محبت شما بسیار ممنون و سپاسگزارم

ببخشید شما رو هم به زحمت انداختم

ببخشید این رو هم می تونید جواب بدید؟

من با این توضیحات و کدهای شما کد زیر رو نوشتم:





<?php Yii::$app->cache->set( 'in_page', $_SERVER['HPPT_REFERER'], 60 * 60);


$inpage_cache=Yii::$app->cache->get( 'in_page') ;


?>
<?php echo $inpage; ?>




انتظار داشتم کاربران وقتی از این صفحه به اون صفحه سایت که میرن فقط زیر تموم صفحات $_SERVER['HPPT_REFERER'] ذخیره شده را ببیند ولی با هر بار صفحه عوض کردن آدرس اینم عوض میشه!

خیلی ممنون میشم اینم جواب بدید

بخاطر کمکتون هم خیلی ازتون ممنون و سپاسگزارم

starting
December 13th, 2019, 02:01
از لطف و محبت شما بسیار ممنون و سپاسگزارم

ببخشید شما رو هم به زحمت انداختم

ببخشید این رو هم می تونید جواب بدید؟

من با این توضیحات و کدهای شما کد زیر رو نوشتم:





<?php yii::$app->cache->set( 'in_page', $_server['hppt_referer'], 60 * 60);


$inpage_cache=yii::$app->cache->get( 'in_page') ;


?>
<?php echo $inpage; ?>




انتظار داشتم کاربران وقتی از این صفحه به اون صفحه سایت که میرن فقط زیر تموم صفحات $_server['hppt_referer'] ذخیره شده را ببیند ولی با هر بار صفحه عوض کردن آدرس اینم عوض میشه!

خیلی ممنون میشم اینم جواب بدید

بخاطر کمکتون هم خیلی ازتون ممنون و سپاسگزارم
شما باید از ایندکس

$_server['remote_addr']
استفاده کنید رفر برای آدرس ارجاع هست نه آی پی کاربر


- - - Updated - - -

البته اگر منظورتون اینه میخواید رفر اولی ثبت بشه اینم باید کش کنید بهمون شکل آی پی
البته نیاید باز همون کدها رو بنویسید بهتره بزاریدش در یک آرایه و کل آرایه رو کش کنید یا برای استفاده کامل کل هدر رو تبدیل کنید به یک جیسون و کل جیسون رو کش کنید و اگر سختتون هست خب مجدد کدها رو بزارید و بازنویسی کنید برای رفرال (گرچه اصولی نیست اما خب ...)

Marshall
December 13th, 2019, 02:32
شما باید از ایندکس

$_server['remote_addr']
استفاده کنید رفر برای آدرس ارجاع هست نه آی پی کاربر


- - - Updated - - -

البته اگر منظورتون اینه میخواید رفر اولی ثبت بشه اینم باید کش کنید بهمون شکل آی پی

البته نیاید باز همون کدها رو بنویسید بهتره بزاریدش در یک آرایه و کل آرایه رو کش کنید یا برای استفاده کامل کل هدر رو تبدیل کنید به یک جیسون و کل جیسون رو کش کنید و اگر سختتون هست خب مجدد کدها رو بزارید و بازنویسی کنید برای رفرال (گرچه اصولی نیست اما خب ...)


با سلام و از محبت شما بسیار سپاسگزارم

من جواب اول شما رو گرفتم و می دونم remote_addr برای برگرداندن آی پی کاربر است

در کدهای بعد از راهنمایی شما که گفتید من آدرس ارجاع صفحه رو هم خواستم اضافه کنم به همون صورتی که کدها رو نوشتم
ولی با هر بار عوض کردن صفحه آدرس ارجاع صفحه هم عوض میشه!
من انتظار داشتم آدرس ارجاع صفحه برای یک ساعت ثابت بمونه و با عوض کردن صفحات توسط کاربران این مقدار عوض نشه!

starting
December 13th, 2019, 02:39
با سلام و از محبت شما بسیار سپاسگزارم

من جواب اول شما رو گرفتم و می دونم remote_addr برای برگرداندن آی پی کاربر است

در کدهای بعد از راهنمایی شما که گفتید من آدرس ارجاع صفحه رو هم خواستم اضافه کنم به همون صورتی که کدها رو نوشتم
ولی با هر بار عوض کردن صفحه آدرس ارجاع صفحه هم عوض میشه!
من انتظار داشتم آدرس ارجاع صفحه برای یک ساعت ثابت بمونه و با عوض کردن صفحات توسط کاربران این مقدار عوض نشه!

خب شما دارید بدون اینکه بررسی کنید کش هست یا نیست هر بار مقدار جدید بهش میدید!

باید بشکل زیر باشه

<?php
if (!Yii::$app->cache->get( 'in_page')){
Yii::$app->cache->set( 'in_page', $_SERVER['HPPT_REFERER'], 60 * 60);
}
$inpage_cache=yii::$app->cache->get( 'in_page') ;
?>

<?php echo $inpage_cache; ?>



موفق باشید

Marshall
December 13th, 2019, 02:51
خب شما دارید بدون اینکه بررسی کنید کش هست یا نیست هر بار مقدار جدید بهش میدید!

باید بشکل زیر باشه

<?php
if (!Yii::$app->cache->get( 'in_page')){
Yii::$app->cache->set( 'in_page', $_SERVER['HPPT_REFERER'], 60 * 60);
}
$inpage_cache=yii::$app->cache->get( 'in_page') ;
?>

<?php echo $inpage_cache; ?>



موفق باشید


دوست عزیزم از لطف و محبت شما بسیار ممنون و سپاسگزارم
منو تا دنیا دنیاست شرمنده ی خودتوت کردید
با این کد آخری شما چیزی که میخواستم بدست آوردم
بازم ازتوت ممنون و سپاسگزارم
ببخشید یه خواهش دیگه هم دارم
میشه اون یکی تاپیک منو هم نگاه کنید و اگه زحمتی براتون نداره اونم جواب بدید!
خدا بهتون سلامتی بده


و ببخشید یه چیز دیگه توی کامنت هاتون نوشتید اگه از این روش استفاده کنم اصولی نیست اگه کارم رو هم راه بندازه!

Marshall
December 13th, 2019, 05:24
خب شما دارید بدون اینکه بررسی کنید کش هست یا نیست هر بار مقدار جدید بهش میدید!

باید بشکل زیر باشه

<?php
if (!Yii::$app->cache->get( 'in_page')){
Yii::$app->cache->set( 'in_page', $_SERVER['HPPT_REFERER'], 60 * 60);
}
$inpage_cache=yii::$app->cache->get( 'in_page') ;
?>

<?php echo $inpage_cache; ?>



موفق باشید


ببخشید اگه بخواهیم برای هر ip یک آدرس ارجاع ثبت بشه اون موقع باید تابع رو چطوری تعییر بدیم؟!


یعنی هر ip اولین صفحه ارجایی که باهاش اومده تا یک ساعت ثبت بشه!

و به نا به دلایلی که دیدم اگه کاربران از سایت دیگه اومده باشند آدرس ارجاع اونها رو اون سایتی که ازش اومدن ثبت می کنه در حالیکه من می خواستم آدرس ارجاع فقط متعلق به سایت خودم باشه برای همین به جای استفاده از $_SERVER['HTTP_REFERER'] از $_SERVER['QUERY_STRING']; استفاده کردم و دیدم اون چیزی که من انتظارش رو داشتم برآورده می کنه فقط در انتها می خوام برای هر ip یک $_SERVER['QUERY_STRING']; ثبت بشه یعنی هر ip صفحه $_SERVER['QUERY_STRING']; خودش رو داشته باشه و تا یک ساعت ثبت بشه!

starting
December 13th, 2019, 22:58
ببخشید اگه بخواهیم برای هر ip یک آدرس ارجاع ثبت بشه اون موقع باید تابع رو چطوری تعییر بدیم؟!


یعنی هر ip اولین صفحه ارجایی که باهاش اومده تا یک ساعت ثبت بشه!

و به نا به دلایلی که دیدم اگه کاربران از سایت دیگه اومده باشند آدرس ارجاع اونها رو اون سایتی که ازش اومدن ثبت می کنه در حالیکه من می خواستم آدرس ارجاع فقط متعلق به سایت خودم باشه برای همین به جای استفاده از $_SERVER['HTTP_REFERER'] از $_SERVER['QUERY_STRING']; استفاده کردم و دیدم اون چیزی که من انتظارش رو داشتم برآورده می کنه فقط در انتها می خوام برای هر ip یک $_SERVER['QUERY_STRING']; ثبت بشه یعنی هر ip صفحه $_SERVER['QUERY_STRING']; خودش رو داشته باشه و تا یک ساعت ثبت بشه!
ببین اینکاری که من دارم برای شما میکنم اصولی نیست
1.چون نیاز هست در چند فایل تغییر داده بشه
2.باید بدونم اصلا هدف چیه
3.باید دیباگ بشه کد

اگر مورد اول و دوم هم باشه این رفع اشکال برای شما نیست و بنوعی یک کار غیر اصولی هست

اما با اینحال من طوری کد رو نوشتم که نیاز نباشه در فایل کانفیگ شما تغییری بدید و همه حالات رو در نظر گرفتم (دیباگش با خودتون)


<?php

if (!Yii::$app->cache->get( $_server['remote_addr'])){
Yii::$app->cache->set( $_server['remote_addr'], array('ip'=>$_server['remote_addr'] ,'ref'=>$_SERVER['HPPT_REFERER']), 60 * 60);
if (Yii::$app->cache->get( 'info')){
$info0=json_decode(Yii::$app->cache->get( 'info'));
}else{
$info0[]=null;
}

$info0[]=array('ip'=>$_server['remote_addr'] ,'ref'=>$_SERVER['HPPT_REFERER']);
$info_json=json_encode($info0);
Yii::$app->cache->set( 'info', $info_json , 60 * 60*3);
}else{
if (Yii::$app->cache->get( 'info')){
$info= json_decode(Yii::$app->cache->get( 'info'));
}else{
$info0[]=null;
}
}

if (count($info[0])){
foreach ($info as $key=>$value){
echo 'ip: '. $key .' refer: '.$value .'<br>';
}
}
?>

Marshall
December 13th, 2019, 23:41
ببین اینکاری که من دارم برای شما میکنم اصولی نیست
1.چون نیاز هست در چند فایل تغییر داده بشه
2.باید بدونم اصلا هدف چیه
3.باید دیباگ بشه کد

اگر مورد اول و دوم هم باشه این رفع اشکال برای شما نیست و بنوعی یک کار غیر اصولی هست

اما با اینحال من طوری کد رو نوشتم که نیاز نباشه در فایل کانفیگ شما تغییری بدید و همه حالات رو در نظر گرفتم (دیباگش با خودتون)


<?php

if (!Yii::$app->cache->get( $_server['remote_addr'])){
Yii::$app->cache->set( $_server['remote_addr'], array('ip'=>$_server['remote_addr'] ,'ref'=>$_SERVER['HPPT_REFERER']), 60 * 60);
if (Yii::$app->cache->get( 'info')){
$info0=json_decode(Yii::$app->cache->get( 'info'));
}else{
$info0[]=null;
}

$info0[]=array('ip'=>$_server['remote_addr'] ,'ref'=>$_SERVER['HPPT_REFERER']);
$info_json=json_encode($info0);
Yii::$app->cache->set( 'info', $info_json , 60 * 60*3);
}else{
if (Yii::$app->cache->get( 'info')){
$info= json_decode(Yii::$app->cache->get( 'info'));
}else{
$info0[]=null;
}
}

if (count($info[0])){
foreach ($info as $key=>$value){
echo 'ip: '. $key .' refer: '.$value .'<br>';
}
}
?>

با سلام
از لطف و محبت شما بسیار سپاسگزارم
من این کد رو برای ثبت نام کاربران میخوام که وقتی کسی با لینک معرف یکی میاد اون ref فقط برای اون ثبت بشه و کاربر دیگه اگه اومد و ثبت نام کرد همون ref قبلی که برای یه کار دیگه ثبت شده به نام اون هم ثبت نشه!
یعنی هر کاربر که با آدرس ارجاع بخصوص خودش میاد کش کنم تا یه زمانی که بهش فرصت ثبت نام بدم و برای بقیه که در همین زمان میخوان ثبت نام کنن ref اون یکی ثبت نشه و هر کاربر ref خودش رو داشته باشه و ref هر کسی واسه ip خودش تا یه زمانی ثبت بشهـباز هم از لطف و محبت شما که خیلی زحمت کشیدید و من هم خیلی زحمتتون دادم بی نهایت سپاسگزارم
شرمنده دوست عزیز

Marshall
December 14th, 2019, 14:07
ببین اینکاری که من دارم برای شما میکنم اصولی نیست
1.چون نیاز هست در چند فایل تغییر داده بشه
2.باید بدونم اصلا هدف چیه
3.باید دیباگ بشه کد

اگر مورد اول و دوم هم باشه این رفع اشکال برای شما نیست و بنوعی یک کار غیر اصولی هست

اما با اینحال من طوری کد رو نوشتم که نیاز نباشه در فایل کانفیگ شما تغییری بدید و همه حالات رو در نظر گرفتم (دیباگش با خودتون)


<?php

if (!Yii::$app->cache->get( $_server['remote_addr'])){
Yii::$app->cache->set( $_server['remote_addr'], array('ip'=>$_server['remote_addr'] ,'ref'=>$_SERVER['HPPT_REFERER']), 60 * 60);
if (Yii::$app->cache->get( 'info')){
$info0=json_decode(Yii::$app->cache->get( 'info'));
}else{
$info0[]=null;
}

$info0[]=array('ip'=>$_server['remote_addr'] ,'ref'=>$_SERVER['HPPT_REFERER']);
$info_json=json_encode($info0);
Yii::$app->cache->set( 'info', $info_json , 60 * 60*3);
}else{
if (Yii::$app->cache->get( 'info')){
$info= json_decode(Yii::$app->cache->get( 'info'));
}else{
$info0[]=null;
}
}

if (count($info[0])){
foreach ($info as $key=>$value){
echo 'ip: '. $key .' refer: '.$value .'<br>';
}
}
?>
با سلام
بابت کدها خیلی ازتون ممنون
کدهای خوبی بود وقتی استفاده کردم صفحات رو که رفرش می کردی برای آپی های مختلف به خوبی کار می کرد (به ازای رفرش کردن)
من چند تا صفحه باز کردم و صفحات رو رفرش می کردم وقتی فقط رفرش می کردم خیلی خوب کار می کرد ولی وقتی یکی از این صفحه به اون صفحه می رفتی همه داده ها یکی می شدند! و روی کش ثابت خودشون نمی موندن (دوست نداشتم با توجه به زحمت زیادی که برای کدها کشیده بودید بهتون نتیجه رو اطلاع ندم دیگه مجبورم از همون کدهای اولی استفاده کنم که زحمتش رو کشید درسته واسه همه آی پی ها یک کش ذخیره شده رو نشون میده ولی متاسفانه مجبورم :-) چون کدهای آخری که نوشتید همه کش های ای پی ها بعد از این صفحه و اون صفحه کردن متاسفانه یکی می شدند)
در هر صورت بی نهایت از شما ممنون و سپاسگزارم که وقت گذاشتید و کمکم کردید
اینجا بین شکلک ها تنها چیزی که دیدم ندارم شکلک گله، هرچند گلهای اینجا مجازی هستند ولی برای محبتی که در حق من کردید ازتون بسیار ممنون و سپاسگزارم

starting
December 14th, 2019, 16:09
درود
من دیباگ نکردن کدها رو یعنی اصلا yii هم نصب ندارم
یک چیزی شریع زدم (با در نظر گرفتن این موضوع که شما تسلط ندارید روی کدها)
بهرحال خواستی یک دسترسی بده حلش کنم

Marshall
December 14th, 2019, 17:39
درود
من دیباگ نکردن کدها رو یعنی اصلا yii هم نصب ندارم
یک چیزی شریع زدم (با در نظر گرفتن این موضوع که شما تسلط ندارید روی کدها)
بهرحال خواستی یک دسترسی بده حلش کنم


با سلام خیلی از لطف و محبتتون ممنونم
سایت هم واسه من نیست و برای یکی از دوستانمه (بهش میگم واسه دسترسی اگه قبول کرد چشم براتون ارسال می کنم)
من کدها رو در آخر اینطوری ویرایش کردم


<?php$_1 = intval($_SERVER['QUERY_STRING']);
if (!Yii::$app->cache->get($_SERVER['QUERY_STRING'])){
Yii::$app->cache->set($_SERVER['QUERY_STRING'], array('ip'=>$_SERVER['QUERY_STRING'] , $_1), 100);
if (Yii::$app->cache->get('info')){
$new=Yii::$app->cache->get('info');
}else{
$new=0;
}
$new=$_1;
Yii::$app->cache->set('info', $new , 100);
}else{
if (Yii::$app->cache->get('info')){
$info= Yii::$app->cache->get('info');
}else{
$new=0;
}
}
?>


<?php echo Yii::$app->cache->get('info'); ?>

می خواستم خروجی که از کدها می گیرم فقط برای هر آپ پی در هر صفحه یک عدد باشه کدهایی که شما اول نوشته بودید توی هر صفحه ای که باز می کردید خیلی داده ها رو می نوشت از جمله آی پی و آدرس آرجاع ها رو، و اگه یه صفحه دیگه با آی پی دیگه باز می کردید باز هم توی صفحه جدید داده ی اون صفحه و داده صفحه قبل هم نشون داده می شد برای همین داده ها رو در انتها به این شکل درآوردم. الان همون طوری که من انتظار دارم کدها عمل می کنند (البته شاید چون تسلط کافی به برنامه نویسی ندارم) ولی وقتی صفحات رو عوض می کنم باز هم برای همه آی پی ها یه چیز ثابت ثبت می شه!
من خواستم خروجی که از کدها بدست میاد فقط عدد باشه (خروجی کدهای شما بیشتر بود)
فکر کنم اشتباه از من بوده و من کدها رو اشتباه ویرایش کردم!

می می خوام در انتها هر صفحه ای که باز می شه به ازای آی پی های مختلف وقتی echo می گیرم یک عدد باشه برای همین از intval و $_SERVER['QUERY_STRING استفاده کردم، کدهایی که شمار رحمتش رو کشیدید و من رو شرمنده کردید همه ی داده ها رو توی صفحه پشت سر هم ردیف می کرد. اینطوری:


[0,{"ip":"95.143.192.110","ref":"24"},{"ip":"5.204.111.230","ref":"24"},{"ip":"95.143.192.110","ref":"24"}]

من می خواستم وقتی از هر صفحه echo می گیرد یه عدد ساده بدست بیاد مثال: 24
و برای صفحه بعدی مثلا 0
و برای صفحه بعدی 10

sam_pontiac
December 18th, 2019, 11:19
من فقط می خواهم واسه کش کردن اینکارو انجام بدم
مثلا یک نفر با کد معرف وارد سایت میشه که ثبت نام کنه
فرضا domain.com/r=32
من می خواهم این کد معرف فقط روی کامپیوتر اون کار کنه و اگه یکی دیگه خواست در همین زمان ثبت نام کنه اگه کد معرف داشت کد معرف اون ثبت بشه اگه نداشت صفر ثبت بشه!
من با استفاده از تابع $_SERVER['QUERY_STRING'] فقط عدد رو باقی میذارم که از لینک معرفش فقط عدد بمونه مثلا 32
الان می خوام چه با کش کردن و یا چه با تابع $_SESSION اینکار انجام بشه و کد معرف هر کسی فقط روی کامپیوتر خودش تا زمانی که من تعیین می کنم فعال باشه!

سلام
با توجه به این پیامتون.
شما میخواید که کد معرفی که دارید در اولین استفاده، برای اون آی پی یونیک بشه و دیگه کسی نتونه ازش استفاده کنه.صحیح؟
اگر چنین چیزی میخواید، با اینکه من ساختار جدول شما رو نمیدونم و همچنین نمیدونم که آیا برای این کدهای معرف از دیتابیس اقدام کردید یا بصورت دستی از داخل فایل تعیین میکنید.
اگر در دیتابیس ذخیره میشه، چنانچه یک column به جدول مرتبط باهاش اضافه کنید با عنوان user_up و varchar باشه، میتونید با یک شرط محدودیت مدنظر تون رو اعمال کنید.
چطور؟
تو فانکشن و یا فایل مورد نظر ( که البته با توجه به توضیحاتی که دادین قطعا در یک تابع هست که در تمامی وبسایت فراخوانی شده ):

میایم مثلا برای اینجا در نظر میگیریم که در جدول مرتبط باهاش 3 column داریم با نام id و referrer و user_ip

0- بیاید ابتدای امر بررسی کنید که اگر مقدار "r" در کوئری استرینگ ( domain.com/?r=32 مثلا ) موجود بود :
1- اول چک کنه داخل جدول مرتبط که مقدار user_ip خالی هست یا خیر.( SELECT FROM ... WHERE referrer = $r مثلا الی آخر )
2- در صورت خالی نبودنش ، آی پی ثبت بشه. ( UPDATE ...set value.... WHERE refferer = $r )
3- در غیر اینصورت هم نیازی به آپدیت و ... نیست و چنانچه آی پی ثبت شده بود، مقدار "r" رو نادید بگیره و بعنوان یک کاربر بدون معرف درنظر گرفته بشه.

دیگه نیازی به کش کردن و باقی مسائل ندارید.
صرفا یک column تعریف کردید تو جدول مرتبط باهاش که ذخیره ساز آی پی کاربر هست.
اگر این مقدار خالی بود ، که مقدار "r" رو در نظر میگیره و آی پی رو در user_ip مرتبط با r ذخیره میکنه !
در غیر اینصورت، این مقدار رو نادیده میگیره و اصلا لحاظ نمیکنه.

Marshall
December 18th, 2019, 13:03
سلام
با توجه به این پیامتون.
شما میخواید که کد معرفی که دارید در اولین استفاده، برای اون آی پی یونیک بشه و دیگه کسی نتونه ازش استفاده کنه.صحیح؟
اگر چنین چیزی میخواید، با اینکه من ساختار جدول شما رو نمیدونم و همچنین نمیدونم که آیا برای این کدهای معرف از دیتابیس اقدام کردید یا بصورت دستی از داخل فایل تعیین میکنید.
اگر در دیتابیس ذخیره میشه، چنانچه یک column به جدول مرتبط باهاش اضافه کنید با عنوان user_up و varchar باشه، میتونید با یک شرط محدودیت مدنظر تون رو اعمال کنید.
چطور؟
تو فانکشن و یا فایل مورد نظر ( که البته با توجه به توضیحاتی که دادین قطعا در یک تابع هست که در تمامی وبسایت فراخوانی شده ):

میایم مثلا برای اینجا در نظر میگیریم که در جدول مرتبط باهاش 3 column داریم با نام id و referrer و user_ip

0- بیاید ابتدای امر بررسی کنید که اگر مقدار "r" در کوئری استرینگ ( domain.com/?r=32 مثلا ) موجود بود :
1- اول چک کنه داخل جدول مرتبط که مقدار user_ip خالی هست یا خیر.( SELECT FROM ... WHERE referrer = $r مثلا الی آخر )
2- در صورت خالی نبودنش ، آی پی ثبت بشه. ( UPDATE ...set value.... WHERE refferer = $r )
3- در غیر اینصورت هم نیازی به آپدیت و ... نیست و چنانچه آی پی ثبت شده بود، مقدار "r" رو نادید بگیره و بعنوان یک کاربر بدون معرف درنظر گرفته بشه.

دیگه نیازی به کش کردن و باقی مسائل ندارید.
صرفا یک column تعریف کردید تو جدول مرتبط باهاش که ذخیره ساز آی پی کاربر هست.
اگر این مقدار خالی بود ، که مقدار "r" رو در نظر میگیره و آی پی رو در user_ip مرتبط با r ذخیره میکنه !
در غیر اینصورت، این مقدار رو نادیده میگیره و اصلا لحاظ نمیکنه.

با سلام و متشکرم از محبت شما که جواب دادید
برای کد معرف از دیتابیس استفاده می کنم و یک فیلد براش ساختم که توی قسمت کاربران اگه شناسه کاربر با شناسه ی معرف یکی بود اون کاربر با لینک معرف اون یوزر ثبت بشه
توضیحاتی که شما دادید خیلی خوب بودند ولی به نظر خودم اینطوری بهتره که کد معرف و آی پی کاربر کش بشه، دوست خوبمون جناب استاتر زحمت نوشتن تابعش رو کشیدنش، تابعش خیلی خوب بود و برای هر آی پی کار می کرد فقط در صورتی که صفحات رو جابجا می کردی با هم قاطی می شدن و همه میشدن یک کد معرف!

Marshall
December 19th, 2019, 16:06
سلام
با توجه به این پیامتون.
شما میخواید که کد معرفی که دارید در اولین استفاده، برای اون آی پی یونیک بشه و دیگه کسی نتونه ازش استفاده کنه.صحیح؟
اگر چنین چیزی میخواید، با اینکه من ساختار جدول شما رو نمیدونم و همچنین نمیدونم که آیا برای این کدهای معرف از دیتابیس اقدام کردید یا بصورت دستی از داخل فایل تعیین میکنید.
اگر در دیتابیس ذخیره میشه، چنانچه یک column به جدول مرتبط باهاش اضافه کنید با عنوان user_up و varchar باشه، میتونید با یک شرط محدودیت مدنظر تون رو اعمال کنید.
چطور؟
تو فانکشن و یا فایل مورد نظر ( که البته با توجه به توضیحاتی که دادین قطعا در یک تابع هست که در تمامی وبسایت فراخوانی شده ):

میایم مثلا برای اینجا در نظر میگیریم که در جدول مرتبط باهاش 3 column داریم با نام id و referrer و user_ip

0- بیاید ابتدای امر بررسی کنید که اگر مقدار "r" در کوئری استرینگ ( domain.com/?r=32 مثلا ) موجود بود :
1- اول چک کنه داخل جدول مرتبط که مقدار user_ip خالی هست یا خیر.( SELECT FROM ... WHERE referrer = $r مثلا الی آخر )
2- در صورت خالی نبودنش ، آی پی ثبت بشه. ( UPDATE ...set value.... WHERE refferer = $r )
3- در غیر اینصورت هم نیازی به آپدیت و ... نیست و چنانچه آی پی ثبت شده بود، مقدار "r" رو نادید بگیره و بعنوان یک کاربر بدون معرف درنظر گرفته بشه.

دیگه نیازی به کش کردن و باقی مسائل ندارید.
صرفا یک column تعریف کردید تو جدول مرتبط باهاش که ذخیره ساز آی پی کاربر هست.
اگر این مقدار خالی بود ، که مقدار "r" رو در نظر میگیره و آی پی رو در user_ip مرتبط با r ذخیره میکنه !
در غیر اینصورت، این مقدار رو نادیده میگیره و اصلا لحاظ نمیکنه.

سلام
راستی دیشب این کش کردن رو درست کردم البته با کوکی ها، و همون چیزی شد که می خواستم، بازم از لطف و محبتهای شما سپاسگزارم، فقط یه چیز می مونه که اونم تاپیک پیدا کردن دوستان دوستان هست، میشه با افزودن یه فیلد بهش موقع ثبت نام بگم به ازای ثبت نام + 1 به تعدادهای کاربر معرف اصلی اضافه کن ولی من می گم وقتی کوئریش رو میشه نوشت احتیاج به ساخت فیلد نیست! مثلا برای همین کش کردن که از کوکی های مرورگر استفاده کردم، شما گفتید یه فیلد دیگه براش بسازم، یا اون یکی تاپیک هم یکی دیگه گفتند براش یه فیلد اضافی بسازید! گفتم کوئریش هست و احتیاج به ساخت فیلد نداره!
میشه ازتون خواهش کنم دوباره اون تاپیک دوستان دوستان رو نگاه کنید که ببینید میشه یه کاریش کرد؟!
خیلی ممنون میشم
بازم از لطف و محبت شما بسیار ممنون و سپاسگزارم