PDA

View Full Version : سوال: نحوه مدیریت لینک ها



محمد شهرکی
چهارشنبه 24 اسفند 1390, 15:25 عصر
سلام دوستان . می خوام بدونم چطور می تونم تو سایت بخشی درست کنم که کاربر حتما ثبت نام کرده باشه تا بتونه لینک دانلود رو ببینه . ممنون میشم به طور جامع توضیح بدید . اگه هم مقاله یا تاپیکی در این مورد سراغ دارید که کمک بیشتری می کنه لطفا لینکش رو هم قرار بدید . بازم ممنون

alismith
چهارشنبه 24 اسفند 1390, 16:05 عصر
سلام

دوست عزیز سوال شما هم خیلی جامع هستشا!!

session مربوط به login بودن کاربر رو کنترل کن، اگر True بود لینک ها رو نمایش بده و اگر False بود نمایش نده، اگر هم لینک ها در محتوای مطالب وب سایت بود، محتوا رو از طریق parser ای که خودت مینویسی کنترل کن و در خروجی ای که نشون میدی لینک ها رو حذف کن و اگر کاربر login کرده بود parser رو با مقدار True صدا بزن یا call کن که لینک ها رو پاک نکنه


موفق باشید

محمد شهرکی
چهارشنبه 24 اسفند 1390, 23:31 عصر
خیلی ممنون دوسته عزیز .
سئوال ا : میشه در رابطه با parser بیشتر توضیح بدی , اینکه کارش چیه و نحوه استفادش به چه صورتیه .
سئوال 2 : فرض کن این امکان پدید اومد و فقط کاربرایه سایت دسترسی به لینک ها داشتن , فرض کنید شخصی بعد از اینکه ثبت نام کرد و لینک برایه او نمایش داده شد , لینک رو کپی کنه و بزاره داخله سایتش اونوقت که اوضاع ناجور میشه و همه بدون ثبت نام در سایته من از لینک هام استفاده می کنن و پهنایه باند من از بین میره , چطور می تونم جلویه این کار رو بگیرم . یکی از دوستان توصیه کرد که کدی باید بنویسی تا لینک هایی که واسه دانلود گذاشتی هر چند ساعت اسمش عوض بشه , آیا به نظرت این روش درسته یا روشه دیگه ای هم هست که من خبر ندارم . به هر حال من دنبال روشی خوب می گردم که بتونم این امکان رو فراهم کنم .

alismith
پنج شنبه 25 اسفند 1390, 19:05 عصر
سلام

من یک parser برای BBCode نوشتم الان، که اینجا میذارم تا با نحوه استفاده آن اشنا شوید

در این مثال متغییر $text همان محتوای شما هست که می توانید از database آن را استخراج کنید



/**
* bbcodeParser_strip function
* Author alismith
* @param $Str => your string
* @param $replacement => replace string
* @param $bbcode => choose bbocode tag (array|string)
* @param $html => True: replace html tag , False: replace with $replacement value
* return string [$ret]
**/
function bbcodeParser_strip($str,$replacement,$bbcode,$html ){

$patterns['b'] = "/\(.*?)\[\/b\]/i";
$patterns['u'] = "/\[u\](.*?)\[\/u\]/i";
$patterns['i'] = "/\[i\](.*?)\[\/i\]/i";
$patterns['url'] = "/\[url\=(.*)\](.*)\[\/url\]/i";
$patterns['img'] = "/\[img\](.*?)\[\/img\]/i";

$replace['b'] = "<b>$1</b>";
$replace['u'] = "<u>$1</u>";
$replace['i'] = "<i>$1</i>";
$replace['url'] = "<a href=\"$1\">$2</a>";
$replace['img'] = "<img src=\"$1\"\/>";

$t = $str;

if(!isset($bbcode)) return false;

if(is_array($bbcode)){

foreach($bbcode as $k){

$cp = $patterns[$k];

if($html){

$cr = $replace[$k];

}else{

$cr = $replacement;

}


//return $t

$t = preg_replace($cp,$cr,$t);

}


}else{


$cp = $patterns[$bbcode];
$cr = ($html)? $replace[$bbcode] : $replacement;

//return $t

$t = preg_replace($cp,$cr,$t);

}


$ret = $t;


//return result

return $ret;

}


$text = "alismithGoogle! (http://www.google.com)Test[b]boldText";



echo bbcodeParser_strip($text,'please Login','url',false);
echo "\n<br/>";
echo bbcodeParser_strip($text,'',array('url','b'),false );
echo "\n<br/>";
echo bbcodeParser_strip($text,'',array('url','b'),true) ;



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



موفق باشید

alismith
پنج شنبه 25 اسفند 1390, 19:22 عصر
دوست عزیز شما این فایل رو دانلود کنی بهتره، کدها رو از پست قبلی کپی نکن، در مثال بالا bbcode به html تبدیل و compile شده!

محمد شهرکی
سه شنبه 01 فروردین 1391, 08:18 صبح
سلام دوسته عزیز . خیلی ممنون از راهنمائیت ،‌ من بخش اول سئوالم که مربوط به دانلود لینک ها منوط به ثبت نام کاربر بود رو گرفتم . اما حالا فرض کنید این اتفاق افتاد و کاربر ثبت نام کرد ،‌ کاربر بعد از مشاهده لینک می تونه لینکی که ما در اختیارش قرار دادیم رو کپی و به شخص دیگری بده ،‌ در صورتی که اون شخص نه به سایت ما سر زده و نه در سایت ما ثبت نام کرده ، ‌من در بخش دوم سئوالم می خواستم بدونم چطوری میشه جلویه این عمل رو گرفت و فقط لینک های دانلود از سایت ما حق دانلود را داشته باشند .

Reza1607
سه شنبه 01 فروردین 1391, 20:38 عصر
http://barnamenevis.org/showthread.php?215150-snippet-%D9%87%D8%A7%DB%8C-php&p=954537&viewfull=1#post954537

تو اين پست يك كد گذاشتم

محمد شهرکی
سه شنبه 08 فروردین 1391, 12:09 عصر
http://barnamenevis.org/showthread.php?215150-snippet-%D9%87%D8%A7%DB%8C-php&p=954537&viewfull=1#post954537

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

Reza1607
سه شنبه 08 فروردین 1391, 13:09 عصر
اين كدي كه بهتون دادم دقيقا همين كار رو مي كنه
الان براتون توضيح مي دم كه به چه صورت هستش
شما در زماني كه فايل رو آپلود مي كنيد اسم و مسير واقعي فايل و همچنين يك اسم جعلي ( مستعار ) براي فايل در داخل بانك ذخيره مي كنيد مثلا يك فايل صوتي به اسم music.mp3 در مسير http://mydomain.com/files/music.mp3 و اين اسم مستعار اين فايل ahang.mp3 هستش حالا مي خواين اين فايل رو در اختيار ديگران قرار بدين كاري كه مي كنيد اينه كه شما اسم مستعار فايل رو به كاربر نشون مي دين يعني لينكي به اين صورت http://mydomain.com/files/ahang.mp3 خوب اگه كاربر بياد روي اين لينك كليك كنه فايلي وجود نداره كه بخواد دانلود كنه ولي شما در يك فايل ميايد چك مي كنيد كه آيا اين كاربر كه ميخواد دانلود كنه عضو هست يا نه؟ اگه عضو نبود كه به صفحه ورود منتقل ميشه ولي اگه عضو بود شما چون مسير واقعي و البته صحيح فايل رو داريد ميايد اطلاعات رو مي خونيد و اطلاعات رو به اسم مستعار اون فايل براي كاربر به مرورگرش مي فرستيد

بخشيد كه نتونستم بهتر از اين توضيح بدم