رفتن به مطلب

ایجاد محدودیت برای کاربران


پست های پیشنهاد شده

سلام به همه دوستان

من یه فایلی رو کد نویسی کردم که برای فعال شدن شماره سریال را میده و کد فعال سازی میخواد. میخوام فرم تو سایت بذرارم که سریال رو بگیر و کد فعال سازی بده. میخواستم راهنماییم کنید که ایا افزونه ای هست که تعداد دفعات گرفتن کد محدود باشه مثلا 3 بار بتونن کد رو بگیرن.

با تشکر

لینک به ارسال

اگر کاربران ثبت نام شده باشند و شما هم کمی کد نویسی را بشناسید می تونید خودتون انجامش بدید

یک زمینه کاربری بسازید مثلا به نام usercodecount آی دی کاربر را با یک فیلد هیدن بگیرید و به اکشن ارسال کنید و در اکشن این کدها را بگذارید:


<?php
if(isset($_POST['user_id'])) {
$user_id = $_POST['user_id'];
$usercodecount = get_user_meta($user_id, 'usercodecount', true);
if($usercodecount >3) {
$code = '0';
}
elseif($usercodecount >0) {
$usercodecount +=1;
update_user_meta($user_id, 'usercodecount', $usercodecount);
$code = '1';
}
else {
add_user_meta($user_id, 'usercodecount', '1');
$code = '1';
}
if($code == '1') {
// اکشن ساخت کد دوم
}
else {
echo 'کد جدید نمی تواند تولید شود. درخواست شما بیش از ظرفیت مجاز است.';
}
?>

لینک به ارسال

بله خوب بهترین محل ذخیره این اطلاعات دیتابیسه

اگر قراره بعد از سه بار دریافت کد کاربری منقضی بشه می تونیدذ برای اون هم یک تابع بنویسید تا کل اطلاعات و متاهای کاربر از دیتابیس پاک بشه

لینک به ارسال

ببخشید یه سوال دیگه داشتم.چطور میتونم این کار انجام بدم که فقط اونایی که خرید کردندفقط به لینک دریافت کد دسترسی داشته باشن؟

لینک به ارسال

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

لینک به ارسال
  • 2 هفته بعد...

سلام...یه سوال دیگه پیش اومده برام

من میتونم چند زمینه کاربری یکسان داشته باشم.چون من تعداد فایلهام چند تاست و باید برای هر کدوم تعداد دانلود ذخیره کنم. یا اینکه باید برای هر فایل یه زمینه کاربری ایجاد کنم؟

لینک به ارسال

کدتون کلا تغییر می کنه و باید بر اساس آرایه بندی نوشته بشه

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


<?php
$usercodecount = get_user_meta($user_id, 'usercodecount');
$usercodecount = $usercodecount['down_name'];
$usercodecount +=1;
?>

down_name نام فایله

لینک به ارسال

من خودم یه الگوریتمی تو ذهنم دارم.ولی چندتا سوال داشتم اگه این حل بشن شاید خودم بتونم کدش بنویسم.

میشه تو ارایه ها جستجو کرد؟

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

لینک به ارسال

تو آرایه می شه جستجو کرد ولی این ارایه خاص چیزی برای جستجو نداره نمونه خرویش اینه:


array(
'down1' => '2',
'down2' => '1',
'down3' => '2','
}

که یک طرف هر نتیجه نام فایلیه که برای دانلود گذاشتید و یک طرف یک عدد بین یک تا سه نام ها که ثابتند و اعداد یک تا سه هم که نیازی به جستجو ندارند

سئوال دومتون رو متوجه نشدم کد مگه تو کجا قرار داره؟

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


$user = get_userdata($user_ID);
$name = $user->user_firstname;
$family = $user->user_lastname;
$usercodecount = get_user_meta($user->ID, 'usercodecount');

لینک به ارسال

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

فایل a رو خریده الان میاد رو لینک فایل a کلیک میکنه میره به فایل b.php. الان باید ببینه تو متا یوزر شخص b هست یا نه اگه هست یوزرایی که تابحال استفاده کرده و کد گرفته رو بهش نشون بده تو جدول اگه نه یه ارایه به متا یوزر شخص اضافه کنم

لینک به ارسال

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

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

لینک به ارسال

متوجه نمی شم روشی که من عرض کردم متا ولوی که خواهید داشتید آرایه ای از اعداد یک تا سه است شما می تونید user_query براش بنویسید و با سه تا کوئری سه لیست مختلف از کاربرانی که نرم افزاری را یک بار دانلود کرده اند دو بار یا سه بار تهیه کنید

با تابعی که دادم هم می توانید جدولی را برای کاربر جاری بسازید که وضعیت دانلودهاش را مشخص کنه به چه چیز دیگری نیاز دارید؟

لینک به ارسال

واقعا ممنونم واسه پاسخهایی که میدید...حالا اگه کاربر 3 بار رمز گرفت و بعد دوباره رفت محصول رو خرید ایا میشه کاری کرد که دوباره بتونه 3 بار کد بگیره...درباره user_query توضیح مختصری میدید

لینک به ارسال

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

برای user_query بخونید

http://codex.wordpress.org/Class_Reference/WP_User_Query

و ژنراتورش

http://generatewp.com/wp_user_query/

لینک به ارسال

سلام واقعا ممنونم واسه راهنماییهای استادانتون...

اگه بخوام متا یه فایل صفر کنم باید از update_user_meta استفاده کنم...همنطور که تو ارایه ای که واسه هر فایل خودتون بالا مثال زدید میشه مقدار یه کلید صفر کرد با روش update_user_meta.. مثلا کاربر down1 دوباره خرید کرده میشه فقط مقدار این کلید صفر بشه و فایلهای دیگه همون مقدار قبلیشون داشته باشن؟

لینک به ارسال

سلام. من کد رو نوشتم ولی توابعی که واسه وردپرس هستند رو نمیشناسه چطوری باید توابع وردپرس امپورت کنم تو کدم...توابعی مثل get_user_meta , get_current_user_id

لینک به ارسال


<?php
$filename=basename($_SERVER['SCRIPT_NAME']);
$user_ID = get_current_user_id();
$filename=substr($filename,0,strlen($filename)-4);
$get_code=get_user_meta($user_ID, '_code_count', true);
$code_count=count($get_code[$filename]);
if ($code_count<2 && $code_count>0):?>
<table>
<tr>
<th> سریال </th>
<th> کد قفل گشا </th>
</tr>
<?php foreach ($get_code[$filename] as $serial=>$code):?>
<tr>
<th> <?php echo $serial; ?> </th>
<th> <?php echo $code; ?> </th>
</tr>
<?php endforeach; ?>
</table>

<?php elseif ($code_count>0 && $code_count<3): ?>
<table>
<tr>
<th> سریال </th>
<th> کد قفل گشا </th>
</tr>
<?php foreach ($get_code[$filename] as $serial => $code): ?>
<tr>
<th> <?php echo $serial ; ?> </th>
<th> <?php echo $code ; ?> </th>
</tr>
<?php endforeach; ?>
</table>
<?php endif; ?>
<?php if ($code_count<2 ):?>
<form action="code_abniye_1388.php" method="POST">
serialnumber: <input type="text" name="serial" value="<?php echo $user_ID;?>"/>
<input type="hidden" name="user_id" value=" <?php echo $user_ID; ?>"/>
<input type="hidden" name="filename" value="<?php echo $filename; ?>"/>
<input type="submit" value="دریافت کد"/>
</form>
<?php endif; ?>

لینک به ارسال

تست کنید


<?php
global $user_ID;
if(is_user_logged_in()) :
$filename=basename($_SERVER['SCRIPT_NAME']);
$filename=substr($filename,0,strlen($filename)-4);
$get_code=get_user_meta($user_ID, '_code_count', true);
$code_count=count($get_code[$filename]);
if ($code_count<2 && $code_count>0):?>
<table>
<tr>
<th> سریال </th>
<th> کد قفل گشا </th>
</tr>
<?php foreach ($get_code[$filename] as $serial=>$code):?>
<tr>
<th> <?php echo $serial; ?> </th>
<th> <?php echo $code; ?> </th>
</tr>
<?php endforeach; ?>
</table>
<?php elseif ($code_count>0 && $code_count<3): ?>
<table>
<tr>
<th> سریال </th>
<th> کد قفل گشا </th>
</tr>
<?php foreach ($get_code[$filename] as $serial => $code): ?>
<tr>
<th> <?php echo $serial ; ?> </th>
<th> <?php echo $code ; ?> </th>
</tr>
<?php endforeach; ?>
</table>
<?php endif; ?>
<?php if ($code_count<2 ):?>
<form action="code_abniye_1388.php" method="POST">
serialnumber: <input type="text" name="serial" value="<?php echo $user_ID;?>"/>
<input type="hidden" name="user_id" value=" <?php echo $user_ID; ?>"/>
<input type="hidden" name="filename" value="<?php echo $filename; ?>"/>
<input type="submit" value="دریافت کد"/>
</form>
<?php endif; ?>
<?php endif; ?>

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...