الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

المساعدة في ارسال المتغيرات

مغلق
بدأه roby2411 في 15 سبتمبر 2006 · 15 رد · 1,171 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخوانى الاعزاء

$msg = "<?xml version=\"1.0\"?><SIGNData><SIGNMessage><Submit DeliveyReport=\"Yes\" ReadReply=\"No\" ReplyCharging=\"No\" Adaptation=\"Yes\" Redistribution=\"No\"><ID>-1</ID><Type>MT_TEST</Type><From AddrType=\"AT_EMAIL\" UserID=\"test\" UserCredit=\"10\">test</From><Recipients><To AddrType=\"AT_MISSDN\">202</To></Recipients><Subject>PHP</Subject><ObjectList><Object></Object></ObjectList><SmilFrame ID=\"0\"><Duration>3</Duration></SmilFrame><SmilFrame ID=\"1\"><Duration>3</Duration></SmilFrame><ServiceCode></ServiceCode><LinkedID></LinkedID><ClassType> MM_CT_PERSONNEL</ClassType><Priority> MM_PT_NORMAL</Priority><SubmitTime>2006-07-05T12:25:14-0400</SubmitTime><ExpiryTime>2006-07-08T00:00:00-0400</ExpiryTime><DeliveryTime>2006-07-05T00:00:00-0400</DeliveryTime><ReplyDeadLine></ReplyDeadLine></Submit></SIGNMessage></SIGNData>";

فليدلنى احدكم علي دالة تقوم بارسال هذا المتغير $msg الى عنوان انترنت كالتالى http://192.168.1.1:5050 بدون عمل فورم ودون نقر ازرار

اريد دالة حالما تكون لديها النمتغير تقوم بارساله للسيرفر

ولكم جزيل الشكر

#2

أنت تريد الإرسال من سيرفر إلى سيرفر ولا تريد استخدام المتصفح

والجواب على ذلك يتطلب معرفة كيف يستقبل السيرفر الآخر هذه المتغير

لا أعتقد أنه سيستقبله كطلب GET لأن النص طويل .

وإذا كانت يستقبله كطلب POST انظر إلى هذه الموضوع

/index.ph...=101776&hl=

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#3

اخى ابو محمد جزاكم الله خير للاهتمام ولكن لنشرح الموضوع بصورة اخرى

<form action="http://www.sitename.com/file.php" method="post">
<input type="hidden" name="userid" value="11">
<input type="hidden" name="password" value="xxx">
<input type="text" name="usercode" >
<input type="sumit" >
</form>

سيكون نتيجه التنفيذ كالتايى

http://www.sitename.com/file.php?userid=11...p;usercode=code

ولكنى لا اريد ان يعرف الزائر كلمة السر بمشاهدة مصد ر الصفحة واريد ان يكون الفورم هكذا

<form action="process.php" method="post">
<input type="text" name="usercode" >
<input type="sumit" >
</form>

وفي صفحة process.php يحث التالى

تقوم الصفحة باستلام المتغير usercode ثم تجهيز الرابط كالتالى

http://www.sitename.com/file.php?userid=11...t&usercode=$usercode

ثم تقوم بارساله مباشرة دون الحاجة لعمل فورم اى ان الدالة ستكون بالصورة التالية

function send_data($usercode){
send http post ( 'http://www.sitename.com' , 'userid=11&password=test&usercode=$usercode'
}

والآن ما هى الدالة التى يجب ان استخدمها؟؟؟

وكيف تعمل وكيف يتم ارسال المتغيرات لها

#4

عندما يكون نوع الطلب method="GET" في الفورم تظهر كلمة السر في العنوان

أما إذا كان method="post" فلا تظهر ننتيجة الطلب في العنوان

أولاً عندما طرحت السؤال تبين لي أنك تريد الإرسال من سيرفر إلى سيرفر ولكن اتضح لي بالأمثلة أنك تريد إرسال الطلب من لمتصفح إلى السيرفر sitename.com

ثانياً لماذا تجعل الباسوورد في نفس كود الصفحة ؟؟

<input type="hidden" name="password" value="xxx">

لماذا لا يقوم المستخدم بإدخاله هو حتى تعرف مصداقيته ؟؟

ثالثاً : لما ترسل usercode إلى sitename.com حتى يرسل الباسوورد إلى نفسه هو ؟؟

طيب الموقع sitename.com عارف الباسوورد كيف يرسله لنفسه ؟؟

معليش أنا أسئلتي كثيرة ولكن أشعر أنك تريد شيء ما قد تساعدك هذه الأسئلة في حله .

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#5

عزيزى الغالي ابو محمد

الموضوع ببساطة هو انى اريد ان اقوم بنقل متغير من صفحة PHP الى سيرفر اخر وليس لصفحة PHP علي نفس السيرفر وبدون استخدام فورم او عمل submit بل اريد العملية تلقائية

ثانيا يجب ارسال المتغير الخاص ب userid و الباسورد الى السيرفر متبوعين بالكود الذى ادخله المستخدم وهقولك ليه

تخيل انا عندى سيرفر بيقدم خدمة ارسال كروت معايده وانا هسمح للناس يستخدموا السيرفر بتاعى لارسال الكروت بس الخدمة دى باشتراك

فانا كده السيرفر بتاعى لازم يستلم من الموقع الخارجي اليوزر والباسورد علشان يتاكد ان الموقع مشترك معانا

وبعدين يستلم منه الكود اللى راح يبعتله الكارت علي اساسه

وعلشان كده انا لازم ابعت المتغيرين الاوليين وبعدهم المتغير الحر اللى بيدخل الزائر

وانا فعلا اللى مجننى انى مش قادر ابعت المتغيرات بدون عمل فورم

طيب خليني اقولك علي فكرة

تخيل عندنا موقع في عملية دخول وبعد عملية الدخول بنوجه المستخدم لصفحة معالجة هتتعرف علي اسمه وكلمه السر وتتأكد انه راجل تمام ومشترك

عايزين بعد ما نتأكد نروح باعتينه لموقع تانى خارجى يعمل فيه عمليه معينة بس الموقع ده انا اللى مشترك فيه بنفسي مش المشترك بتاعى

مش معقول هخليه يدخل الاسم وكلمة السر بتوعى وكمان صعب احطهم في الفورم لانى كده هكشفهم كمتغيرات

كمان مش ممكن اعمل المعالجة علي السيرفر التانى لانه اصلا ملوش علاقة بالمشتركين بتوعى فالحل البديل انى اعمل صفحة تتأكد من اسم المستخدم وكلمة السر ولو تمام هتروح باعتاه لسيرفر تانى باسم مستخدم وكلمة سر جداد هما بتوعى انا ورقم كود خاص بيه في صورة اوتوماتيكية اما لو هوا مش مشترك مش هتنقله علي السيرفر التانى وهتطلعله ان بياناته غلط

انا عايز امرر متغير من غير فورم وهى دي المشكلة اللى مقابلانى

#6

فكرتك جميلة

عدلت لك الكود التالي :

function sendpost($url, $ReqBody ) {;
		$Result = array ();
	$ContentLength =strlen($ReqBody);
	// أخذ معلومات عن url
	$urlInfo = parse_url ($url);

	$Req = sprintf (
	"POST %s HTTP/1.1\n".
	"Host: %s\n".
	"Content-Type: application/x-www-form-urlencoded\n".
	"Content-Length: %s\n\n".
	"%s\n",
	$urlInfo['path'] , $urlInfo['host'], $ContentLength, $ReqBody);
	// Open the connection to the host
	$errno = '';
	$errstr = '';
	// إنشاء إتصال وتخزين قيمة الخطأ إن حصل خطأ
	$socket = fsockopen($urlInfo['host'], 80, &$errno, &$errstr);
	if (!$socket)
		//إذا ظهر خطأ سيتعيد لك الدالة رقم الخطأ ورسالته
		$Result["errno"] = $errno;
		$Result["errstr"] = $errstr;
		return $Result;
	}
	// إرسال الطلب 
	fputs($socket, $Req);

	//أخذ نتيجة الطلب على شكل مصفوفة 
	while (!feof($socket))
		$Result[] = fgets($socket, 128);
	}
	// إعلاق الإتصال
	fclose($socket);
}

أنا لم أجرب الكود وهو يعطيك قيمة الخطأ إن حصل خطأ في الإتصال وإلا فإنه يعيد لك نتيجة الطلب على شكل مصوفوة كل سطر في بند منها .

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 16 سبتمبر 2006 في 23:59

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#7

سيدي الفاضل .. بكل بساطة وسواء من سيرفر لاخر او داخل نفس السيرفر .. استخدام دالة header .. كالتالي :

طبعا قيم المتغيرات سيتم استلامها من فورم داخل الموقع الذي سيرسل البيانات ..

دمتم بخير

تم تعديل هذه المشاركة بواسطة محمد رمضان في 17 سبتمبر 2006 في 00:49

#8

:( :wacko:

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 17 سبتمبر 2006 في 00:51

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#9

ابو محمد . مالمشكلة اذا كان الامر كله سيتم داخليا من خلال صفحة بي اتش بي بعد تشفير المتغيرات من خلال صفحة الموقع .. اي انك لن تتطر لنقل بيانات واضحة في الهيدر من خلال الهيدر .. ممكن ان تكون هذه البيانات مشفرة عشر مرات ومرة بمائة دالة تحليل .. ميكروسوفت نفسها تستخدم نفس الاسلوب اذا كنت بتشتغل على الهوتميل جرب وشوف ... اذف الى ذلك سيتم نقل البيانات بعد معالجتها وتشفيرها في صفحة داخلية ....

اما الدالة fsockopen لا تعمل بكفاءة حتى 50 % اذا فتحت الموقع مرة مش هتفتح عشر مرات ... الا اذا خليتها تجيب اخر صفحة تم انتاجها على السيرفر بمساعدة بروتوكول .. ما بالك بصفحات متغيره مثلا بمعدل كل دقيقة - على سبيل المثال ... لا اقصد هنا تماما لكن هذا ما يحدث مع كل زيارة للصفحة ..

هل لنا ان توضح بدلا من المتعاض ...

تم تعديل هذه المشاركة بواسطة محمد رمضان في 17 سبتمبر 2006 في 05:34

#10
اقتباس
هل لنا ان توضح بدلا من الامتعاض ...

آسف

لاحظ هو يريد عدم ظهور PASSWORD في العنوان لأن نشره في العنوان يسبب مشكلة أمنية .

أما الشفير بواسطة ssl فهو لا يشفر المتغيرات في العنوان وإنما يشفر جسم الطلب . وجسم الإجابة .

إذاً فما الحل ؟؟

الحل هو إرسال المتغيرات بطريقة POST .

وكيف نرسلها بهذه الطريقة بدون استخدام FORM ؟؟

الحل باستخدام دوال socket كما هو مشروح في الكود .

طبعاً الأمر ما هو بالسهولة هذه ، ولكن دع صاحب الشأن يحاول وإن شاء الله لا بيخل عليه الأعضاء بالتوجيه .

الدالة header لا تنفذ من سيرفر إلى سيرفر وإنما تنفذ في المتصفح، يقرأ الترويسة الخاصة بالإنتقال ثم يتحول إلي السيرفر الجديد.

اقتباس
اضف الى ذلك سيتم نقل البيانات بعد معالجتها وتشفيرها في صفحة داخلية ....

ممكن تشرح لي كيف؟ أنت تستخدم الheader لتحويل الزائر من سيرفر إلى سيرفر أين هذه الصفحة الداخلية وما هي طريفتها ؟؟

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 17 سبتمبر 2006 في 14:57

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#11

ما اقصده هو كالتالي :

ان يتم عمل فورم يرسل البيانات وليكن مثلا الاسم والمعرف الى صفحة داخلية على نفس السيرفر الأول ..

الصفحة الداخلية ستستقبل من خلال الـ post مثلا .. فيكون الكود كالتالي :

<?

$user=$_POST["user"];

$pass=$_POST["pass"];


$pass=md5(md5(md5($pass)));

header(" Location: http://www.othersite.com/info.php?user=...ss=$pass);


?>

بكده يتم نقل البيانات بعد تشفيرها وده اسلوب ليس سيئا . شفر البيانات زي ماتحب و افحصها في الموقع التاني ..

تم تعديل هذه المشاركة بواسطة محمد رمضان في 17 سبتمبر 2006 في 17:01

#12

هذا الكود :

$pass=$_POST["pass"];

هل هو استجابة لفورم من المتصفح من جهاز العضو

ولكن الأخ roby2411 يقول:

اقتباس
مش معقول هخليه يدخل الاسم وكلمة السر بتوعى وكمان صعب احطهم في الفورم لانى كده هكشفهم كمتغيرات

إذا لا نريد استخدام فورم

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#13

أيضاً السيرفر الآخر هو لا يملك حق التحكم فيه حتى يرسل الباسوور مشفر مرتين وعن طريق GET ، فهل تريده يجري تعديلات على السيرفر الآخر حتى يستقبل مثل هذا الطلب .

فالسيرفر الآخر حسب ما فهمته لا يستقبل كلمة السير إلى عن طريق post .

أيضاً الباسوورد ليس هو للعضو إنما هو لصاحب الموقع هل تريده أن يرسل كلمة السرية للأعضاء .

إن شاء الله أكون أوصلت المعلومة التي فهمتها ، وسامحني على سوء الشرح والأسلوب

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#14

جزاكم الله عنى كل الخير واسكنكم فسيح جناته

جزاكم الله خيرا قد تم حل المشكله بهذا الكود واضعه هنا للفائدة العامة

$server = "192.168.1.101";
$port = "80";

$header = "Host: $server\r\n";
$header .= "User-Agent: PHP Script\r\n";
$header .= "Connection: keep-alive\r\n\r\n";

$fp = fsockopen($server, $port);
if($fp) {
   fputs($fp, "GET /sendvalue/webuser?user=test&password=test&text=Here%20is%20your%20Code%20ABCK012F/ HTTP/1.1\r\n");
  fputs($fp, $header);
fclose($fp);
echo("tested ok");
}

?>

Server : The server IP or Url .

Port : Port u use to senf values .

Header : The data header and u may change it from case to case due the solution u do .

Fsockoen : open a connection to the server.

fputs : Send ur data "Above I used GET method it may be POST too.

fclose : Close the connection.

and then replace the echo("tested ok") by ur code or page

وجزاكم الله كل خير مرة اخرى

#16

السلام عليكم

اقتباس
الحل فى c URL

بدون أن أفهم الموضوع ولكن يبدو الكلام على نقل المتغيرات دون ظهورها فى المتصفح بأمان ..

شكرا اخوي anwareca على هذا الموقع

وايضا اناعملت كلاس بسيطة لارسال البيانات الى سيرفر أخر اي من سيرفر الى سيرفر

مثل الطريقة التي كان يتكلم عنها أخوي أبو محمد اللحياني

بتقدر تزيد وتعدل عليها وان تضع اكواد لمعالجة اي خطأ في عملية الاتصال او ان المدخلات كانت غير مطابقة للمواصفات ... انا لم اضغها

form.txt

تم تعديل هذه المشاركة بواسطة Mo7eb_Alrasool في 20 سبتمبر 2006 في 08:44

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…