nikanwp 629 ارسال شده در آذر 91 گزارش بازنشر ارسال شده در آذر 91 سلام ;من یک وردپرس روی لوکال دارم یک انجمن آی پی بی روی سرور سایتم .میخوام آخرین ارسالهای انجمن رو تو وردپرس به صورت یک پلاگین در بیارم ...سوالی که الان دارم برای require هست .یه سری از اسناد php رو من به فرض تو آی پی بی میام requier میکنم :require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );حالا میخوام این سند رو require کنم توی وردپرس چه پیشنهادی دارید واسش ؟بعد برای اتصال . مستقیم بیام به دیتابیس ipb وصل بشم یا راه حل های دیگه ای دارید ؟ 1 نقل قول لینک به ارسال
Morteza 34190 ارسال شده در آذر 91 گزارش بازنشر ارسال شده در آذر 91 الان اسم تاپیک چی بود؟!!! ویرایش شد.چرا از فید IPB استفاده نمی کنید؟اگر بخواین از توابع IPB استفاده کنید باید کلاسهای اصلی IPB هم اینکلود بشن.(اصلا پیشنهاد نمیشه)برای اتصال به IPB بصورت مستقیم هم باید یوزر و پسورد دیتابیس و آی پی رو هم بزنید که این یعنی پایین اومدن شدید امنیت. چون وردپرس خیلی آسیب پذیر هست و با اینکار شما انجمن رو هم در معرض خظر قرار میدید. 3 نقل قول لینک به ارسال
nikanwp 629 ارسال شده در آذر 91 مالک گزارش بازنشر ارسال شده در آذر 91 (ویرایش شده) از فید که بله اما نه !ببینید این کد رو : <?phpdefine( 'IPB_THIS_SCRIPT', 'public' );require_once( './initdata.php' );require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );require_once( IPS_ROOT_PATH . 'applications/forums/sources/classes/topics.php' );$registry = ipsRegistry::instance(); $registry->init(); $classtopic = new app_forums_classes_topics($registry);$filters = array();$filters['limit'] = 14;$filters['offset'] = 0;$filters['sortField'] = 'last_post';$filters['sortOrder'] = 'DESC';$settings = $registry->settings();$boardurl = $settings['board_url'];$latesttopic = $classtopic->getTopics($filters );header('Content-Type: text/html; charset=UTF-8');echo '<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" lang="fa-IR"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>آخرین ارسال های انجمن</title><style type="text/css">.Clear { clear: both;}.ForumLastTopic { border: 1px solid #DCDCDC; border-radius: 10px 10px 10px 10px; float: left; width: 620px; font-family:Tahoma;font-size:12px;}.ForumLastTopic .Head { background: url("Head.png") repeat-x scroll 0 0 transparent; border-bottom: 2px solid #CFCFCF; border-radius: 10px 10px 0 0; height: 28px;}.ForumLastTopic .Foot { background: url("Foot.png") repeat-x scroll 0 0 transparent; border-radius: 0 0 10px 10px; border-top: 2px solid #CFCFCF; height: 26px;}.ForumLastTopic .Next, .ForumLastTopic .Prev { background: url("Btn.png") repeat-x scroll 0 0 transparent; border: 1px solid #DEDEDE; border-radius: 5px 5px 5px 5px; box-shadow: 0 1px 3px #CECECE; color: #9AAB65; cursor: pointer; display: block; float: right; height: 18px; margin-right: 10px; margin-top: 2px; text-align: center; width: 50px;}.ForumLastTopic #MTFloader img { float: right; height: 16px; margin-right: 10px; margin-top: 5px; width: 16px;}.ForumLastTopic .Forumsbox { color: #959595;}.ForumLastTopic .Forumsbox .col1 { height: 21px; padding-right: 5px; width: 400px;}.ForumLastTopic .Forumsbox .col2 { height: 21px; text-align: center; width: 60px;}.ForumLastTopic .Forumsbox .col3 { height: 21px; text-align: center; width: 60px;}.ForumLastTopic .Forumsbox .col4 { height: 21px; text-align: center; width: 110px;}.ForumLastTopic .Head span.col1 { border-left: 1px solid #D7D7D7; color: #97AD5E; display: block; float: right; line-height: 28px; text-align: center; width: 388px;}.ForumLastTopic .Head span.col2 { border-left: 1px solid #D7D7D7; border-right: 1px solid #FFFFFF; color: #97AD5E; display: block; float: right; line-height: 28px; text-align: center; width: 58px;}.ForumLastTopic .Head span.col3 { border-left: 1px solid #D7D7D7; border-right: 1px solid #FFFFFF; color: #97AD5E; display: block; float: right; line-height: 28px; text-align: center; width: 58px;}.ForumLastTopic .Head span.col4 { border-right: 1px solid #FFFFFF; color: #97AD5E; display: block; float: right; line-height: 28px; text-align: center; width: 100px;}</style></head><body><div class="ForumLastTopic"> <div class="Head"> <span class="col1">عنوان آخرین ارسال های تالار گفتمان</span> <span class="col2">پاسخ</span> <span class="col3">بازدید</span> <span class="col4">آخرین ارسال</span> <div class="Clear"></div> </div> <div id="MTForumBlock"> <table cellspacing="1" cellpadding="0" class="Forumsbox"> <tbody>';foreach ($latesttopic as $topic) {echo " <tr> <td class=\"col1\"><a href=\"".$boardurl."/index.php?showtopic=".$topic['tid']."\" target=\"_blank\" >".$topic['title']."</a></td> <td class=\"col2\">".$topic['posts']."</td> <td class=\"col3\">".$topic['views']."</td> <td class=\"col4\">".$topic['last_poster_name']."</td> </tr>";}echo "</tbody> </table> </div> <div class='Foot'> </div></div></body></html>";?> این کد واسه آی پی بی و پیش نمایشش هم از http://forum.progpar...latest-post.phpمیخواستم بیام اطلاعات دیتابیس آی پی بی رو فایل config درست کنم تو وردپرس و مقداراشو به کاربر input بدم که تو تنظیمات پلاگین وارد که شما فرمودید از نظر امنیتی مشکل داره !یه بحثی هم دارم سر ایمپورت کلاس های آی پی بی که باز فرمودید پیشنهاد نمیشه !!راهکاری اگر دارید ممنون میشم ویرایش شده آذر 91 توسط Morteza کدهای بلند در longbox نقل قول لینک به ارسال
Morteza 34190 ارسال شده در آذر 91 گزارش بازنشر ارسال شده در آذر 91 اگر قرار هست از همین کد استفاده بشه و البته افزونه هم بشه مجبورید از اطلاعات ارتباط با دیتابیس استفاده کنید. ولی خوب کمی ریسک خواهد داشت.در هر صورت برای این روش فکر نمیکنم بجز این راه دیگه ایی باشه. نقل قول لینک به ارسال
nikanwp 629 ارسال شده در آذر 91 مالک گزارش بازنشر ارسال شده در آذر 91 آقا مرتضی روی سیستم دیتالایف هم چک کردم یه همچین ماژولی توسط تیم روسی دیتالایف نوشته شده که اونم اومده اطلاعات دیتابیس آی پی بی رو استفاده کرده !حالا من هم فک نمیکنم غیر این دو راه راهی باشه !سوالی که الان من دارم تو require ها که تو کد بالا میبینید :require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );این مسیری هست که تو خود ای پی بیه . من برای require این مسیر تو وردپرس برای آدرس دهی میخوام یک input تو تنظیمات پلاگین بزارم که کاربر آدرس سایت و محلی که فرومش روش نصبه رو بده و تو اون require این مورد رو اعمال کنم !در مورد امنیتش هم wordpress.org اگر تایید کرد انتشار میدم اگر هم که نه بالاخره یه راهی واسش پیدا میشه ! نقل قول لینک به ارسال
nikanwp 629 ارسال شده در آذر 91 مالک گزارش بازنشر ارسال شده در آذر 91 یکم هم در مورد این مشکل امنیتی که گفتید توضیح بدید نقل قول لینک به ارسال
Morteza 34190 ارسال شده در آذر 91 گزارش بازنشر ارسال شده در آذر 91 بحث مشکل امنیتی توی خود وردپرس هست نه افزونه.ببینید شما میتونی بخشی برای وارد کردن اطلاعات دیتابیس در افزونه تعبیه کنی این مشکلی نداره.بحث این هست اگر وردپرس مشکل امنیتی داشته باشه و زده بشه از اون سمت انجمن هم از دست میره.ولی در هر صورت همون راه اینکلود بجز فید، تنها راه موجود هست. نقل قول لینک به ارسال
nikanwp 629 ارسال شده در آذر 91 مالک گزارش بازنشر ارسال شده در آذر 91 کوئری دارم میزنم از آی پی بی از کلاس دیتابیس وردپرس استفاده کنم ؟ یا همون پیش فرض php . چون واسه wordpress.org میخوام بفرستم شاید قبول نکنه نقل قول لینک به ارسال
Morteza 34190 ارسال شده در آذر 91 گزارش بازنشر ارسال شده در آذر 91 وقتی وردپرس این کلاس رو داره از همون استفاده کنید.کارتون راحتتر هم میشه. 1 نقل قول لینک به ارسال
nikanwp 629 ارسال شده در دی 91 مالک گزارش بازنشر ارسال شده در دی 91 (ویرایش شده) الان پلاگین اوکی شده فقط باید فیلدهایی رو براش بزارم که کاربر بعد از نصب اطلاعات دیتابیس انجمنش رو بده تا از حالت ویرایش دستی اطلاعات بیرون بیاد . حالا من برای امنیتش نخواستم مقداری تو دیتابیس بزارم و در اصل این فرم رو برای کاربر بزارم بعد از سابمیتش اطلاعات تو یک سند config.php در فولدر پلاگین ایجاد بشه و اون مقدار ها به صورت متغیر تو config.php نوشته بشه که بعد من هم ازش استفاده کنم .حالا مشکلی که هست تو ایجاد اون سند هست بعد از سابمیت فرم ایجاد میشه اما تو فولدر پلاگین ایجاد نمیشه !شکل کلی دستورم اینه :<?phpif(isset($_POST['submit'])){$my_file = 'file.txt';$handle = fopen($my_file, 'w');$data = 'This is the data';fwrite($handle, $data);fclose($handle);}?>برای آدرس دهیا از همون ثابتی که در اجرای پلاگینم استفاده کردم اینجا هم استفاده کردم اما باز هم در فولدر پلاگین ایجاد نمیشه و جای دیگه ایجاد میشه !:$my_file = MyPlugin_DIRNAME . '/file.txt'; ویرایش شده دی 91 توسط progpars نقل قول لینک به ارسال
Morteza 34190 ارسال شده در دی 91 گزارش بازنشر ارسال شده در دی 91 بنظر درسته من خودم هم اینطور مینویسم:$path = $_SERVER['DOCUMENT_ROOT']."/wp-content/plugins/PLUGNAME/";$fh = fopen($path.'flie.txt', 'w') or die("can't open file");fwrite($fh, $content);fclose($fh); 1 نقل قول لینک به ارسال
nikanwp 629 ارسال شده در دی 91 مالک گزارش بازنشر ارسال شده در دی 91 میدونید چیه آقا مرتضی من میخواستم این مسیر رو که دارم میدم به صورت اتوماتیک باشه .چون الان با این مقداری که به متغیر $patch دادیم اگر کاربر بیاد اسم پوشه پلاگین رو عوض کنه مشکل بر میخوریم نقل قول لینک به ارسال
Morteza 34190 ارسال شده در دی 91 گزارش بازنشر ارسال شده در دی 91 خوب میشه داینامیک کرد. براساس اسم افزونه و یا آدرس پوشه افزونه همین مدنظرتون هست؟ نقل قول لینک به ارسال
nikanwp 629 ارسال شده در دی 91 مالک گزارش بازنشر ارسال شده در دی 91 با تابع basename اوکی کردم$my_file = $_SERVER['DOCUMENT_ROOT'].'/wp-content/plugins/'. basename(dirname(__FILE__)) .'/s.php'; 1 نقل قول لینک به ارسال
nikanwp 629 ارسال شده در دی 91 مالک گزارش بازنشر ارسال شده در دی 91 الان میخوام واسه نسخه انگلیسیشم کار کنم یه بحث چپ شدن هستمن آخرین ارسال ها رو که نشون میدم جدولی که درست کردم برای فارسی زبانان هست . میخواستم نسخه انگلیس شد علاوه بر فایل زبان چپ چین شه نقل قول لینک به ارسال
Morteza 34190 ارسال شده در دی 91 گزارش بازنشر ارسال شده در دی 91 یک راه ساده:$lang=get_bloginfo("language"); 1 نقل قول لینک به ارسال
nikanwp 629 ارسال شده در دی 91 مالک گزارش بازنشر ارسال شده در دی 91 یک مثال هم واسه کسی که تاپیک رو خوند نیاز به راهنمایی بیشتر داشت :$currentlang = get_bloginfo('language');if($currentlang=="fa-IR"):?>سلام<?php else: ?>hello<?php endif; ?> 1 نقل قول لینک به ارسال
nikanwp 629 ارسال شده در دی 91 مالک گزارش بازنشر ارسال شده در دی 91 بعد در مورد آدرس دهیه این ثابت فک میکنم بهتر باشه و داینامیک تر :define( 'MYPLUGINNAME_PATH', plugin_dir_path(__FILE__) );require(MYPLUGINNAME_PATH .'/ipb_config.php');اینجوری دیگه کلاْ آدرس سایت و پوشه wp-content و ... رو میگیره و نیازی نیست دستی بدیم 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .