PDA

View Full Version : مبتدی: فرستادن اطلاعات با متد پست



mst_ab
پنج شنبه 26 آذر 1388, 09:58 صبح
یه سوال ساده :

می خوام یه متنی رو با متد پست به یه فرم دیگه ( که در سرور دیگه ای هست) بفرستم ، خیلی ساده هست ، ولی مشکلی که پیش میاد اینه که فایلی که قراره اون متن رو بفرسته،خودش فرم هست . بذارید بیشتر توضیح بدم ، من یه اسکریپت نوشتم که عکس رو تبدیل به متن می کنه :

imagep.5gigs.net

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

ساختارش به این صورت هست:


اطلاعات اچ تی ام ال فرم......

شروع php

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
{
تولید متن
}

پایان php

حالا چطوری متن تولید شده رو با متد پست به یه صفحه ی دیگه بفرستم؟؟؟؟!:متفکر:

payamsp
پنج شنبه 26 آذر 1388, 15:08 عصر
یه فرم با فیلد hidden ایجاد کن و با جاواسکریپت submit کن به اون صفحه ای که می خوای .

امیـرحسین
پنج شنبه 26 آذر 1388, 20:22 عصر
این لینکها رو ببینید

Execute a HTTP POST Using PHP CURL (http://davidwalsh.name/execute-http-post-php-curl)
Submitting a form post with PHP and CURL (http://www.electrictoolbox.com/php-curl-form-post/)

mst_ab
پنج شنبه 26 آذر 1388, 21:06 عصر
یه فرم با فیلد hidden ایجاد کن و با جاواسکریپت submit کن به اون صفحه ای که می خوای .
مرسی از هر دو ، اطلاعات باید در زمان اجرای کد ها فرستاده بشه ، از جاوا اسکریپت نمیشه استفاده کرد ، چون نباید رفرش بخوره ، بازم ممنون، آقا امیر حسین دست شما درد نکنه حسابی کمکم کردین، cUrl به دردم خورد.

تشکر زیاد مجدداً از هر دو نفر .........!

mst_ab
جمعه 27 آذر 1388, 23:22 عصر
سلام مجدد، ببخشید من هر کار کردم نتونستم ،درست با این curl کار کنم ، wamp که اصلاً curl رو نمیشناسه ، مجبورم روی هاست آپلود کنم ،بعدشم برای اینکه بفهمم که فرم math.php اطلاعات رو گرفته یا نه باید چی کار کنم، من توی math.php این کد ها رونوشتم (محتوای math.php )که اگر اطلاعات به این فرم فرستاده شد، یه فایل تکست بسازه.

کدهای image2text.php( فرستنده یک آیدی و مقدار)


$code=این مقدار ، همان مقداری است که باید فرستاده شود ، و قبلاً تولید شده.

// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "math.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'code='.$code);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
;محتوای math.php به خاطر اینکه ببینم واقعاً اطلاعات فرستاده شده یا نه.


<?php
$file=fopen('salam.txt','w');
fwrite($file,$_POST[code]);
fclose($file);
?>

حالا پیدا کنید پرتقال فروش را!

امیـرحسین
شنبه 28 آذر 1388, 03:53 صبح
اول اینکه WAMP این اکستنژن رو داره فقط باید فعالش کنید. روی آیکونش کلیک کنید، از منوی PHP و PHP Extensions، گزینه php_curl رو تیک بزنید.

دوم اینکه cURL میتونه خروجی رو هم بگیره. باید CURLOPT_RETURNTRANSFER رو مقدار بدید:

curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);
....
$output = curl_exec($ch);
شما یه flag توی فایل math چاپ کنید. اینجوری از فایل اول می تونید وضعیت رو متوجه بشید. مثلا اینجوری

if(isset($_POST['code']))
echo 'request recieved';
این عبارت میره توی متغیر output$ که تو خط قبلی مشخص شد. حالا میشه چک کرد که اگر مقدار output$ این جمله بود یعنی همه چیز درسته. با این روش میشه وضعیت رو کامل چک کنید.

mst_ab
شنبه 28 آذر 1388, 16:47 عصر
curl درست شد واقعاً ممنون ، خیلی کارم راحت شد!، من اون آپشنی که شما گذاشتی هم ست کردم، math.php رو هم اصلاح کردم ، ولی output رو که اکو می کنم ، هیچی نشون نمیده ، اصلاً کد ها رو درست نوشتم؟

الان محتوی دو تا فایل اینجوریه ، ولی هیچ چی برنمیگرده ،حتی من شرط توی math.php رو هم برداشتم ، یعنی در هر صورت ، اون مقدار رو برمی گردونه :

image2text:


// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);
curl_setopt($ch, CURLOPT_URL, "math.php");
//curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'code='.$code);

// grab URL and pass it to the browser
$output = curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);



math.php:


echo 'request recieved';


اصلاً من درست فیلد هایی که باید پست بشن رو ست کردم؟?


curl_setopt($ch, CURLOPT_POSTFIELDS, 'code='.$code);
؟؟؟

امیـرحسین
شنبه 28 آذر 1388, 21:18 عصر
با تابع curl_getinfo وضعیت رو چک کنید.

mst_ab
شنبه 28 آذر 1388, 22:51 عصر
فهمیدم ! یه or die گذاشتم برای تابع

$output = curl_exec($ch)
فهمیدم که این اجرا نمیشه . چرا؟!

mst_ab
دوشنبه 30 آذر 1388, 12:08 عصر
کسی نیست یه کمکی برسونه؟!

mst_ab
دوشنبه 30 آذر 1388, 12:24 عصر
مشکل حل شد ، از آدرس math.php بود که باید به صورت کامل نوشته بشه با http://localhost

از دوستانی که کمکم کردند تشکر !
CURL هم خیلی به درد می خوره ، فکر می کنم اگر سایتی کپتچا نداشته باشه ، میشه پسورد یک یوزر نیم رو راحت در آوورد .

یا حتی یه اسپایدر کوچیک ساخت .