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

Fopen معطل, كيف استخدم Stream_get_meta_data اذا؟؟

مغلق
بدأه Xacker في 29 أغسطس 2007 · 7 رد · 900 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الشفرة التي كتبتها:

<?
				$arr = array("do", "agent", "email");
				foreach($arr as $param) {
						if (isset($_POST[$param])) {
								global $$param;
								$$param = $_POST[$param];
						}
				}
		$postdata = http_build_query(
			array(
			'do' => '$do',
			'agent' => '$agent',
			'email' => '$email'
				)
		);
		$options = array('http' =>
			array(
			'method' => 'POST',
			'content' => $postdata
			)
		);
		$context = stream_context_create($options);
		$result = fopen('http://www.website.com/', 'r', FALSE, $context);
		$meta = stream_get_meta_data($result);
		for ($i=0;isset($meta["wrapper_data"][$i]);$i++)
		{
			if (strstr(strtolower($meta["wrapper_data"][$i]), "Location"))
			{
				$loc = substr($meta["wrapper_data"][$i], 9);
				break;
			}
		}
		fclose($result);
		echo $loc;
?>

مبسّطة قدر الإمكان, المشكلة حسبما فهمت ان stream_get_meta_data لا يعمل الا بـ fopen

طيب و fopen معطل لأسباب معروفة ولنفرض لا استطيع طلب تفعيلها من قبل الشركة. ما العمل او بالاحرى ما البديل عنها؟

ملاحظة: احاول قدر الإمكان عدم استبدال stream_get_meta_data بـ $http_response_header

تم تعديل هذه المشاركة بواسطة Junkie في 29 أغسطس 2007 في 05:51

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#2

لو الاستضافة بتاعتك فيها Curl جرب التالى

<?php
ob_start();
	// initialize curl with given uri
	$ch = curl_init("http://www.google.com");
	// make sure we get the header
	curl_setopt($ch, CURLOPT_HEADER, 1);
	// make it a http HEAD request
	curl_setopt($ch, CURLOPT_NOBODY, 1);

	$okay = curl_exec($ch);
	curl_close($ch);
	// get the output buffer
	$head = ob_get_contents();
	// clean the output buffer and return to previous
	// buffer settings
	ob_end_clean();

	// gets you the numeric value from the Content-Length
	// field in the http header
	echo $head;
?>

ولو فية Sockets و مفيش Curl ممكن تتعمل بطريقة تانية

تم تعديل هذه المشاركة بواسطة ASDen في 29 أغسطس 2007 في 07:15

#3

ما حدث هو التالي, الكود التالي:

<?
				$arr = array("do", "agent", "email");
				foreach($arr as $param) {
						if (isset($_POST[$param])) {
								global $$param;
								$$param = $_POST[$param];
						}
				}
ob_start();
$ch = curl_init("http://www.testurl.com/?do=" .$do. "&agent=" .$agent. "&email=" .$email);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
$okay = curl_exec($ch);
$head = ob_get_contents();
ob_end_clean();
echo $head;
?>

من المفترض بالموقع الذي اتصل به لو البيانات خاطئة يتم اعادة Location معين ولو صحيحة يتغير الـ Location الى آخر

في الحالتين صح ام خطأ الـ Location نفسه

جربت برنامج يقوم بارسال HTTP request تتم العملية بشكل صحيح. في السكربت لا

حاولت استخدم CURLOPT_POST, CURLOPT_POSTFIELDS, CURLOPT_FRESH_CONNECT ايضا لا فائدة

وضح لي بالله عليك ما السبب لان العمل متوقف منذ عدة ايام بسبب هذا الموضوع.

جزيت الخير

السلام عليكم

تم تعديل هذه المشاركة بواسطة Junkie في 31 أغسطس 2007 في 02:57

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

آسف على التأخير

هل جربت استخدام الSockets انظر

1.مشاركة jbr at ya-right dot com هنا

2. مشاركة karadog at gmail dot com هنا

اقتباس
جربت برنامج يقوم بارسال HTTP request تتم العملية بشكل صحي

ما هو هذا البرنامج ربما يفعل شيئا خاصا

اقتباس
حاولت استخدم CURLOPT_POST, CURLOPT_POSTFIELDS, CURLOPT_FRESH_CONNECT ايضا لا فائدة

هل تخزن الCookies انظر للمثال هنا

#5

شىء اخر هل الFopen Url ممنوعة لأن الاستضافة مجانية أم هناك أسباب أخرى لأنها متاحة فى استضافات أخرى

#6

الاستضافة ليست مجانية لكنها ممنوعة من الاستضافة نفسها

سأنظر الأمثلة التي وضعت, لم استخدم sockets من قبل

تم تعديل هذه المشاركة بواسطة Junkie في 4 سبتمبر 2007 في 16:38

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

على أية حال مادام الFopen تعمل معك و لكن المشكلة فى الاستضافة ممكن تحط Fopen Script فى استضافة مجانية و تكلمة من استضافتك

و متخافش على السرعة لأن دى Server to Server . و أعتقد أن هذة فكرة بسيطة و فى الأغلب فعالة

#8

على ماذا انتهى الموضوع ؟ أرجو المشاركة فى الحل

,,,, وشكرا

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

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