سؤال

كيف يمكنني تقديم طلب post إلى مختلف صفحة php داخل php النصي ؟ أنا واحد الأمامية الكمبيوتر صفحة html الخادم ، ولكن عندما ينقر المستخدم على زر أريد الخلفية خادم للقيام ومعالجتها ثم إرسال المعلومات إلى ملقم الواجهة الأمامية لتظهر للمستخدم.كنت أقول أنني يمكن أن يكون لها صفحة php على الكمبيوتر فإنه سيتم إرسال المعلومات مرة أخرى إلى الواجهة الأمامية.لذلك مرة أخرى, كيف يمكن أن أفعل طلب POST إلى آخر صفحة php, من صفحة php?

هل كانت مفيدة؟

المحلول

وربما أسهل طريقة لجعل PHP إجراء طلب POST هي استخدام الضفيرة ، إما باعتبارها <ل أ href = "http://php.net/curl" يختلط = "noreferrer"> تمديد أو ببساطة القصف إلى عملية أخرى. وفيما يلي عينة آخر:

// where are we posting to?
$url = 'http://foo.com/script.php';

// what post fields?
$fields = array(
   'field1' => $field1,
   'field2' => $field2,
);

// build the urlencoded data
$postvars = http_build_query($fields);

// open connection
$ch = curl_init();

// set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);

// execute post
$result = curl_exec($ch);

// close connection
curl_close($ch);

وكما تحقق Zend_Http مجموعة من الفئات في إطار زند، الذي يوفر عميل HTTP قادرة جدا كتابتها مباشرة في PHP (أي ملحقات المطلوبة).

<القوي> 2014 تعديل - حسنا، انها كانت فترة من الوقت منذ أن كتب ذلك. في هذه الأيام انها تستحق التدقيق أسرف في الشراب التي يمكن أن تعمل مرة أخرى مع أو بدون تمديد حليقة.

نصائح أخرى

وعلى افتراض تركيب PHP له ملحق الضفيرة، وربما هو أسهل طريقة (والأكثر اكتمالا، إذا رغبت في ذلك).

ونموذج مقتطف:

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
                      'lname'=>urlencode($last_name),
                      'fname'=>urlencode($first_name),
                      'email'=>urlencode($email)
               );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

والاعتمادات تذهب إلى http://php.dzone.com . أيضا، لا ننسى لزيارة صفحة مناسبا (ق) في دليل PHP

لمعالجة PHP، والنظر في الضفيرة . وسوف تسمح لك لاستدعاء صفحات على نهاية ظهرك واسترجاع البيانات منه. أساسا كنت تفعل شيئا من هذا القبيل:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL,$fetch_url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch,CURLOPT_USERAGENT, $user_agent;
curl_setopt ($ch,CURLOPT_CONNECTTIMEOUT,60);
$response = curl_exec ( $ch );
curl_close($ch);

ويمكنك أيضا أن ننظر في PHP HTTP تمديد .

  1. مثل بقية المستخدمين يقولون انه هو أسهل أن تفعل هذا مع الضفيرة.

  2. إذا حليقة ليس متاح لك ربما http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

  3. إذا لم يكن هذا ممكنا هل يمكن كتابة مآخذ نفسك http://petewarden.typepad.com/searchbrowser/2008/06/how-to-post-an.html

لأولئك الذين يستخدمون الضفيرة، لاحظ يؤخذ هذا الخيار CURLOPT_POST كقيمة منطقية، ولذلك لا يوجد في الواقع لا حاجة لوضع ذلك إلى عدد من المجالات التي تقوم بالإرسال.
وضع CURLOPT_POST إلى TRUE (أي أي عدد صحيح باستثناء صفر) سوف اقول فقط الضفيرة لتشفير البيانات كما التطبيق / x-شبكة الاتصالات العالمية urlencoded شكل، على الرغم من أنني أراهن هذا ليس ضروريا تماما عندما كنت تمرير سلسلة urlencoded كما CURLOPT_POSTFIELDS، منذ الضفيرة ينبغي أن أقول بالفعل الترميز من نوع القيمة (سلسلة مقابل مجموعة) التي يتم تعيين هذا الخيار الأخير ل.

لاحظ أيضا أنه منذ PHP 5، يمكنك استخدام وظيفة http_build_query لجعل PHP urlencode مجموعة الحقول بالنسبة لك، مثل هذا:

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));

والحل هو في الهدف = "_ فارغة" مثل هذا:

HTTP: //www.ozzu. كوم / الموقع تصميم منتدى / متعددة شكل تقديم-إجراءات t25024.html

وتحرير شكل مثل هذا:

و<form method="post" action="../booking/step1.php" onsubmit="doubleSubmit(this)">

واستخدام هذا البرنامج النصي:

    <script type="text/javascript">
<!--
function doubleSubmit(f)
{
  // submit to action in form
  f.submit();
  // set second action and submit
  f.target="_blank";
  f.action="../booking/vytvor.php";
  f.submit();
  return false;
}
//-->
</script>

وعلى الرغم من أن ليست مثالية، إذا لا خيار حليقة نفعل ذلك لك، قد يكون حاول استخدام shell_exec ()؛

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top