رفتن به مطلب

دریافت نام کاربری یا ایمیل در Custom Actions مربوط به Nexus


ارسال‌های توصیه شده

انجمنتون را به نسخه 4.1 بروز رسانی کنید این نسخه چند وقت دیگه پشتیبانیش به اتمام میرسه . رو نسخه 4.1 پلاگین زرین پال قفل نیست و هر تغییری بخواید قابل انجام هست :give_rose:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • پاسخ 20
  • عمر موضوع
  • آخرین پاسخ

با سلام!

آنچه که من از صحبت های شما فهمیدیم شما می خواهید به اطلاعات کاربری خریدار دست پیدا کنید. و اینکه منظور شما رو از POST کنم، فکر کنم منظورتان ایمیل کردن است. درسته؟

من این کد رو نوشتم، که دوستان برنامه نویس عزیز ما می توانند بیشتر شما رو راهنمائی کنند و نسبت به کد من نظر بدهند:

<?php

class custom_actions_MyCustomAction {

	public function onPaid( $member, $package, $invoice ) {
	
		if ( !$member ) {
			
			ipsRegistry::instance()->output->showError("You are not our site member. please login ...");
            exit('Login Error');
		}
		
		// Look at the 'members' table in your DB
		$info	= [
			'id'		=> $member['member_id'],
			'name'		=> $member['name'],
			'email'		=> $member['email'],
			// and more...
		];
		
		// Get send email
		$message = "Hello %s! \n This is your some information:\n Your id: %d\n Your email: %s";
		// Add more, if you need ...
		$oMessage = nl2br ( sprintf ($message, $info['name'], $info['id'], $info['email']) );
		
		IPSText::getTextClass("email")->subject		= '';				// Email subject
		IPSText::getTextClass("email")->to			= $info['email'];	// Member email
		IPSText::getTextClass("email")->from		= ''; 				// Your email
		IPSText::getTextClass("email")->message		= $oMessage;		// Your message
		IPSText::getTextClass("email")->html_email	= 1; 				// as HTML template
		IPSText::getTextClass("email")->sendMail(); 					// Finally get IPS email function
	}
}

?>

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 16 ساعت قبل، amir christ گفته است :

با سلام!

آنچه که من از صحبت های شما فهمیدیم شما می خواهید به اطلاعات کاربری خریدار دست پیدا کنید. و اینکه منظور شما رو از POST کنم، فکر کنم منظورتان ایمیل کردن است. درسته؟

من این کد رو نوشتم، که دوستان برنامه نویس عزیز ما می توانند بیشتر شما رو راهنمائی کنند و نسبت به کد من نظر بدهند:


<?php

class custom_actions_MyCustomAction {

	public function onPaid( $member, $package, $invoice ) {
	
		if ( !$member ) {
			
			ipsRegistry::instance()->output->showError("You are not our site member. please login ...");
            exit('Login Error');
		}
		
		// Look at the 'members' table in your DB
		$info	= [
			'id'		=> $member['member_id'],
			'name'		=> $member['name'],
			'email'		=> $member['email'],
			// and more...
		];
		
		// Get send email
		$message = "Hello %s! \n This is your some information:\n Your id: %d\n Your email: %s";
		// Add more, if you need ...
		$oMessage = nl2br ( sprintf ($message, $info['name'], $info['id'], $info['email']) );
		
		IPSText::getTextClass("email")->subject		= '';				// Email subject
		IPSText::getTextClass("email")->to			= $info['email'];	// Member email
		IPSText::getTextClass("email")->from		= ''; 				// Your email
		IPSText::getTextClass("email")->message		= $oMessage;		// Your message
		IPSText::getTextClass("email")->html_email	= 1; 				// as HTML template
		IPSText::getTextClass("email")->sendMail(); 					// Finally get IPS email function
	}
}

?>

 

 

کمال تشکر از شما

من این رو تست کردم متاسفانه عمل نکردش

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

من اصلا عینا همین کد رو استفاده کردم، قانونا هم باید به خود ایمیل خریدار یک متن ارسال بشه

اما هیچ متنی ارسال نمیشه

در صورتی که من اگه خودم یک کد php دو سه خطی ارسال ایمیل رو به صورت کاملا خام توی php قرار بدم ایمیل ارسال میشه

 

ممنون میشم راهنمایی کنید

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من اینو تست نکرده بودم، ولی حالا تست کردم:

2016-08-15_181531.png

اینکه در سایت شما کار نمی کنه، آیا در ارسال ایمیل، جاهای خالی رو که من چیزی ننوشتم، رو پر کردید؟ مثلا ایمیل ارسال کننده رو نوشتید؟

باز اگه ارسال نمیشه، مگه نتیجه کار بدست آوردن مشخصات نیست؟ مشخصات که در کد موجود هست، چرا با همان 3 خط کد PHP خودتان ارسال نمی کنید؟ از تابع:

mail()

استفاده کنید، که البته من با توجه به تستی که حالا انجام دادم و نتیجه کار رو هم بصورت اسکرین شات نشان دادم، 100% مطمئن هستم که شما در کدها، جاهای خالی رو با توجه به مشخصات سایت خود پر نکرده اید، و برای همین ارسال نشده.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 19 ساعت قبل، amir christ گفته است :

من اینو تست نکرده بودم، ولی حالا تست کردم:

2016-08-15_181531.png

اینکه در سایت شما کار نمی کنه، آیا در ارسال ایمیل، جاهای خالی رو که من چیزی ننوشتم، رو پر کردید؟ مثلا ایمیل ارسال کننده رو نوشتید؟

باز اگه ارسال نمیشه، مگه نتیجه کار بدست آوردن مشخصات نیست؟ مشخصات که در کد موجود هست، چرا با همان 3 خط کد PHP خودتان ارسال نمی کنید؟ از تابع:


mail()

استفاده کنید، که البته من با توجه به تستی که حالا انجام دادم و نتیجه کار رو هم بصورت اسکرین شات نشان دادم، 100% مطمئن هستم که شما در کدها، جاهای خالی رو با توجه به مشخصات سایت خود پر نکرده اید، و برای همین ارسال نشده.

 

تشکر بابت پاسخگویی شما ♥

ببینید من خودم این کد تنها رو اگر توی php بزارم و لینکش رو به cusntom action بدم کاملا عمل میکنه :

<?php
$msg = "First line of text\nSecond line of text";
$msg = wordwrap($msg,70);
mail("[email protected]","My subject",$msg);
?>

 

کد شما رو به این صورت ویرایش کردم دقیقا :

<?php

class custom_actions_MyCustomAction {

	public function onPaid( $member, $package, $invoice ) {
	
		if ( !$member ) {
			
			ipsRegistry::instance()->output->showError("You are not our site member. please login ...");
            exit('Login Error');
		}
		
		// Look at the 'members' table in your DB
		$info	= [
			'id'		=> $member['member_id'],
			'name'		=> $member['name'],
			'email'		=> $member['email'],
			// and more...
		];
		
		// Get send email
		$message = "Hello %s! \n This is your some information:\n Your id: %d\n Your email: %s";
		// Add more, if you need ...
		$oMessage = nl2br ( sprintf ($message, $info['name'], $info['id'], $info['email']) );
		
		IPSText::getTextClass("email")->subject		= 'my subjct';				// Email subject
		IPSText::getTextClass("email")->to			= $info['[email protected]'];	// Member email
		IPSText::getTextClass("email")->from		= '[email protected]'; 				// Your email
		IPSText::getTextClass("email")->message		= $oMessage;		// Your message
		IPSText::getTextClass("email")->html_email	= 1; 				// as HTML template
		IPSText::getTextClass("email")->sendMail(); 					// Finally get IPS email function
	}
}

?>

اما متاسفانه کار نمیکنه

اطلاعات رو درست وارد کردم ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

 دوست من، اگه به کد های من نگاه کنید، میبینید که:

$member

بصورت یک آرایه هست. این یعنی چه؟ یعنی اینکه شما نمی توانید مقداری که وجود نداره را قرار دهید.

یعنی چه؟ یعنی اینکه اگه به کدها نگاه کنید، من به انگلیسی توضیح دادم، و اطلاعات دیتابیس کاربر را در آرایه دیگری قرار دادم بنام:

$info

و این آرایه بصورت زیر است:

// Look at the 'members' table in your DB
$info	= [
	'id'		=> $member['member_id'],
	'name'		=> $member['name'],
	'email'		=> $member['email'],
	// and more...
];

شما کاری که انجام دادید اینه:

$info['[email protected]']

ببینید در آرایه من اصلا چنین چیزی وجود داره؟ شما فقط می توانید مقادیر id, name, email را داخل info قرار دهید و این کاری که انجام دادید یک خطای PHP است.

شما فقط دو تا گزینه در ارسال ایمیل را باید تغییر دهید (کدهای اصلی برای ارسال ایمیل اینه):

IPSText::getTextClass("email")->subject		= '';				// Email subject
IPSText::getTextClass("email")->to			= $info['email'];	// Member email
IPSText::getTextClass("email")->from		= ''; 				// Your email
IPSText::getTextClass("email")->message		= $oMessage;		// Your message
IPSText::getTextClass("email")->html_email	= 1; 				// as HTML template
IPSText::getTextClass("email")->sendMail(); 					// Finally get IPS email function

اولین مقدار را باید برای subject بدهید:

IPSText::getTextClass("email")->subject		= 'For Test';				// Email subject

و دومی، ایمیل ارسال کننده که برای شماست:

IPSText::getTextClass("email")->from		= '[email protected]'; 				// Your email

به گزینه های دیگر اصلا نباید دست بزنید.

 

حالا این از کدها.

مرحله دوم که ربطی به کدها نداره، و قبلا هم برای این فایل مطالعاتی داشته اید، حتی از سایت مرجع. که میگه که، نامی برای فایل خود انتخاب کنید. مثلا من انتخاب کردم:

test.php

و گفته که فایل خود را با پسوند php ذخیره کنید و در ادامه گفته که کلاس شما باید چنین تعریف بشه:

class custom_actions_(file_name)

یعنی اینکه نام کلاس:

class custom_actions_

باید در همه فایل های کاستوم یکی باشد، فقط در انتها باید نام فایل اضافه شود بدون پسوند php، و ما هم که برای مثال test.php انتخاب کرده ایم، پس نام کلاس میشه:

class custom_actions_test

یعنی شما باید تا حال در کدهای من سه گزینه را تغییر میدادید:

1- نام انتهای کلاس، متناسب با نام فایل شما

2- ایمیل ارسال کننده

3- سابجکت

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 3 ساعت قبل، amirchrist گفته است :

یعنی شما باید تا حال در کدهای من سه گزینه را تغییر میدادید:

1- نام انتهای کلاس، متناسب با نام فایل شما

2- ایمیل ارسال کننده

3- سابجکت

 

مرسی مرسی مرسی مرسی

واقعا ممنونم بابت وقت و حوصله ای که گذاشتید:give_rose:

جواب داد و اطلاعات رو ارسال کرد 

 

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

IPSText::getTextClass("email")->to			= $info['[email protected]'];

کنم تا اون چیزی که میخوام باشه :dance2:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 2 دقیقه قبل، مـهـدی ایـزدی گفته است :

 

مرسی مرسی مرسی مرسی

واقعا ممنونم بابت وقت و حوصله ای که گذاشتید

مشکل کاملا حل شد :give_rose:

خیلی خوشحال شدم. :drinks:

در 31 دقیقه قبل، مـهـدی ایـزدی گفته است :

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


IPSText::getTextClass("email")->to			= $info['[email protected]'];

کنم تا اون چیزی که میخوام باشه :dance2:

آقای مهدی ایزدی، شما بیخیال این کد پائین شوید:

$info['[email protected]']

بالا هم عرض کردم که شما فقط به info عناصری که قبلا تعریف می کنید می توانید قرار دهید.

تا جائی که من متوجه شدم، شما نمی خواهید کلا اطلاعات به کاربر ارسال بشه، و میخواهید اطلاعات برای شما ارسال بشه، درسته؟ چرا به اینصورت نمی نویسید؟

IPSText::getTextClass("email")->to			= '[email protected]';

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1395/05/26, 21:36:00، amirchrist گفته است :

مرسی مرسی مرسی مرسی

 

سلام امیر خان

خدایی دمت گرم داداش برای تایمی که گذاشتی و کمک کردی

ببخشید دلاور ، یه سوال داشتم

من الان میخوام اطلاعات رو ، به جای اینکه ایمیل کنم ،به یه صفحه پست کنم

نمیدونم چی کار کنم

کد زیر رو استفاده کردم...

<?php

class custom_actions_MyCustomAction {

	public function onPaid( $member, $package, $invoice ) {
	
		if ( !$member ) {
			
			ipsRegistry::instance()->output->showError("You are not our site member. please login ...");
            exit('Login Error');
		}
		
		// Look at the 'members' table in your DB
		$info	= [
			'id'		=> $member['member_id'],
			'name'		=> $member['name'],
			'email'		=> $member['email'],
			// and more...
		];
			$url = 'test.com';
			$myvars = 'member=' . $info['name'] . "&email=" .$info['email'];
			$ch = curl_init( $url );
			curl_setopt( $ch, CURLOPT_POST, 1);
			curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
			curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
			curl_setopt( $ch, CURLOPT_HEADER, 0);
			curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
			$response = curl_exec( $ch );
	}
}
?>

امیر جان ، واقعا ممنونم و شرمنده شما

زنده باشی هموطن

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...