آگهی
article

ارسال پارامتر به URL و دریافت مقادیر با PHP

php-curl-file-get-contents

زمانی که از ارسال پارامتر در وب صحبت می کنیم، بیشتر ذهنمان معطوف به فرم های HTML و متد POST یا GET می شود، البته این شیوه مرسوم و پرکاربردی برای ارسال داده ها از مرورگر (سمت کاربر) به یک سایت (سمت سرور) است، اما گاهی مواقع نیاز است که از این قالب سنتی پا را فراتر بنهیم و از روش های دیگری نیز استفاده کنیم، به فرض از همین استاندارد POST و GET در ارسال درخواست های آژاکسی (Ajax) نیز به سرور استفاده می شود، از طرفی کدها و توابعی در PHP وجود دارد که می توانند علاوه بر ارسال پارامترها به یک سرور (آدرس URL)، پاسخ آن را نیز دریافت کنند، امکان بالقوه ای که می تواند کاربردهای زیادی داشته باشد، از جمله مهمترین این توابع file_get_contents و cURL هستند که در ادامه آموزش به آنها خواهیم پرداخت.

تابع file_get_contents


از تابع file_get_contents در PHP برای خواند اطلاعات یک فایل یا آدرس URL استفاده می شود، به عنوان مثال:
<?php
$homepage = file_get_contents('https://webgoo.ir/');
echo $homepage;
?>
کد بالا با ارسال یک درخواست به آدرس تعیین شده، پاسخ سرور (که صفحه اول سایت «وبگو» است) را به صورت رشته متنی دریافت می کند، اکنون اگر با دستور echo از متغیر فرضی homepage خروجی بگیریم، اطلاعات دریافت شده نمایش داده می شوند.
تابع file_get_contents  پنج آرگومان به شرح زیر می پذیرد:
- آرگومان اول (filename): نام (یا آدرس) فایل یا URL.
- آرگومان دوم (use_include_path): فراخوانی فایل از دایرکتوری include_path در تنظیمات PHP.
- آرگومان سوم (context): محتوایی که به همراه درخواست ارسال می شود، این محتوا باید توسط تابع  stream_context_create (و بر اساس استانداردهای HTTP context options) ساخته شود تا معتبر باشد، تنظیمات قابل اعمال در این قسمت عبارتند از: method، header، user_agent، content، proxy، request_fulluri، follow_location، max_redirects، protocol_version، timeout و ignore_errors؛ اطلاعات بیشتر:
http://php.net/manual/en/context.http.php
- آرگومان چهارم (offset): محل و خط شروع خواندن اطلاعات (این قابلیت به دلیل پشتیبانی نشدن برای فایل های لوکال و محدودیت هایش، چندان کاربردی نیست).
- آرگومان پنجم (maxlen): حداکثر کاراکتری که تابع خواهد خواند (در حالت پیش فرض تمام اطلاعات خوانده می شود).

تابع file_get_contents و متد POST


تابع file_get_contents علاوه بر دریافت پاسخ یک سرور، این توانایی را دارد که در چاچوب متد POST پارامترهایی نیز به سرور مقصد ارسال نماید، همان طور که در توضیح آرگومان های آن گفته شد، این پارامترها باید در چارچوب استاندارد HTTP بوده و پیش از ارسال توسط تابع stream_context_create معتبر شوند، به این ترتیب می توان نحوه کار فرم های HTML را به راحتی شبیه سازی کرد، ضمن اینکه علاوه بر ارسال پارامترها، می توان هم زمان نتیجه درخواست را نیز دریافت کرد، به مثال زیر توجه کنید.
<?php
//مقادیری که باید ارسال شوند
$data = http_build_query(
    array(
    'var_1' => 'content_1',
    'var_2' => 'content_2',
    'var_3' => 'content_3'
    )
);
//تنظیم سربرگ های http
$http = array('http' =>
    array(
    'method'  => 'POST',
    'header'  => 'Content-type: application/x-www-form-urlencoded',
    'content' => $data
    )
);
//معتبر سازی با stream_context_create
$context = stream_context_create($http);
//ارسال درخواست و دریافت نتیجه
$result = file_get_contents('http://www.example.com/submit/get.php', FALSE, $context);
?>
نکته: برای نمایش نتیجه دریافتی می توانید از یک دستور ساده echo استفاده کرده و از متغیر result خروجی بگیرید.

تابع cURL


یکی از قدرتمند ترین کتابخانه های مربوط به کار با پروتکل های وب در PHP، کتابخانه libcurl است که از نسخه 4.0.2 به آن افزوده شده است، البته این کتابخه به صورت پیش فرض در مفسر PHP وجود ندارد، اما به جهت کاربردی بودن، معمولا در اکثر سرورها به صورت پیش فرض فعال است، به طور ساده کتابخانه libcurl دربرگیرنده مجموعه توابعی است که کار با پروتکل های وب (از جمله HTTPS، HTTP، FTP و...) را به صورت حرفه ای و با قابلیت های زیاد ممکن می کند، به مثال زیر توجه کنید.
<?php
$content = 'PHP cURL';
$curl = curl_init('http://www.example.com/submit/get.php');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'var='.$content);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, FALSE);
$result = curl_exec($curl);
curl_close($curl);
?>
همان طور که در مثال بالا مشخص است، توابع مربوط به این کتابخانه با پیشوند _curl شروع می شوند، اما توضیح مختصری درباره برخی توابع این کتابخانه:
- تابع curl_init: با دریافت یک آدرس url، نشست cURL را آغاز می کند.
- تابع curl_setopt: تنظیم پارامترهای مورد نیاز برای اجرای صحیح یک نشست cURL.
- تابع curl_exec: اجرای یک نشست cURL.
- تابع curl_close: پایان یک نشست cURL.
- تابع curl_error: آخرین خطای رخ داده در نشست را نمایش می دهد.
- تابع curl_errno: شماره خطای برگردانده شده را نمایش می دهد.
البته توابع مربوط به این کتابخانه محدود به موارد گفته شده نمی شود:
http://www.php.net/manual/en/book.curl.php
به مثالی کاربردی توجه کنید.
<?php
//تنظیم آدرس url
$curl = curl_init('http://www.example.com/submit/get.php');
//تنظیم ارسال از طریق متد POST
curl_setopt($curl, CURLOPT_POST, 1);
//تنظیم پارامترها
curl_setopt($curl, CURLOPT_POSTFIELDS, 'var_1=content_1&var_2=content_2&var_3=content_3');
//تعین اینکه پاسخ سرور دریافت شود یا خیر
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
//اجرای نشست
$result = curl_exec($curl);
//پایان نشست
curl_close($curl);
?>
توضیح:
- آدرس url مقصد را در قسمت curl_init مشخص کنید.
- در تنظیمات مربوط به CURLOPT_POST، متد استفاده شده در درخواست را مشخص می کنیم، اگر مقدار 1 یا TRUE باشد، مقادیر CURLOPT_POSTFIELDS از طریق متد POST ارسال شده و پارامترهای احتمالی در آدرس URL نادیده گرفته می شوند (امکان ترکیب متد POST و GET در این حالت وجود ندارد).
- در تنظیمات قسمت CURLOPT_POSTFIELDS، پارامترها و مقادیر آنها را تعیین کنید، این پارامترها در واقع نقش نام فیلد و مقادیر آنها نقش مقدار فیلد را در یک فرم HTML بازی می کنند.
- در قسمت CURLOPT_RETURNTRANSFER، مشخص می کنیم که آیا پاسخ سرور نیز پس از ارسال درخواست دریافت شود یا خیر، اگر مقدار TRUE باشد، پاسخ به صورت رشته متنی دریافت می شود و اگر FALSE باشد، پاسخ دریافت نمی شود.
- برای تکمیل یک نشست cURL باید حتما با تابع curl_exec آن را اجرا کنیم.
- در نهایت نیز با تابع curl_close، نشست cURL را خاتمه می دهیم.
نکته: برای نمایش نتیجه دریافتی می توانید از یک دستور ساده echo استفاده کرده و از متغیر result خروجی بگیرید.
sectionدسته بندی: آموزش کاربردی » PHP
related مطالب بیشتر:
» آموزش ساخت نقشه XML سایت (Sitemap) با PHP و MySQL
» ساخت فید خوان آر اس اس (RSS Feed Reader) با PHP
» محدود کردن لینک دانلود مستقیم فایل ها با PHP و htaccess
» نمایش قسمتی از متن و پاراگراف با PHP
» تبدیل تاریخ میلادی، شمسی با مبدل JDF در PHP
commentنظرات (۱۱۱ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: reza
زمان: ۱۷:۰۲:۳۲ - تاریخ: ۱۳۹۲/۱۰/۲۵
با سلام
آیا راهی وجود دارد که پس از بالا آمدن سایت و اجرای اسکریپت ها سایت به نمایش درآید؟
برای مثال آیا کدی فرضی شبیه زیر وجود دارد؟
<?php
$curl = curl_init('http://www.example.com');
curl_setopt($curl, CURLOPT_run script, TRUE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($curl);
curl_close($curl);
echo $result;
?>
پاسخ: 
سلام
منظور سوالتان مشخص نیست! هنگامی که سرور خروجی را به مرورگر ارسال می کند سایت بارگذاری شده و ارتباط مرورگر با سرور قطع می شود، اما اینکه سایت چه زمانی برای کاربر قابل روئیت باشد را باید با نوشتن کدهای اسکریپتی (مانند جاوا اسکریپت) و به طور مثال در نظر گرفتن یک timeout تعیین کرد.
نویسنده: reza
زمان: ۱۹:۵۶:۱۱ - تاریخ: ۱۳۹۲/۱۰/۲۵
با سلام
فرض کنید مثلا در یک سایت چند کد جاواسکریپت و یا .. است. وقتی که ما از کد زیر استقاده می کنیم
<?php
$curl = curl_init('http://www.example.com');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($curl);
curl_close($curl);
echo $result;
?>
در اصل کار خاصی را انجام نمی دهیم فقط سورس سایت
http://www.example.com 
را در سایت خود نمایش میدهیم بنابراین کدهای جاوا اسکریپت و یا ajax در آن کار نمی کنند.
من می خواهم ببینم آیا راهی وجود داره که خروجی سایت رو نشون بده ؟
یعنی مثل اینکه یک سایت رو save کنیم و بعد نمایش بدیم
امیدوارم منظورم رو متوجه شده باشید.
پاسخ: 
سلام
منظور سوالتان مشخص نیست!
"...کدهای جاوا اسکریپت و یا ajax در آن کار نمی کنند..."؟! با این روش سایت مقصد بدون هیچ مشکلی نمایش داده می شود و کدها نیز کار می کنند، تنها آدرس سایت شما در مرورگر نشان داده می شود.
"...آیا راهی وجود داره که خروجی سایت رو نشون بده..."؟! خیلی واضح نیست! سایت مورد نظر به صورت یک رشته متنی در متغیر result مقداردهی می شود، و خروجی آن در واقع همان کدهای سایت است.
"...مثل اینکه یک سایت رو save کنیم و بعد نمایش بدیم..." واضح نیست! وقتی محتوای یک سایت را دریافت می کنید، دقیقا مثل این است که آن را به فرض در دیتابیس داشته باشید.
نویسنده: reza
زمان: ۱۷:۲۶:۱۳ - تاریخ: ۱۳۹۲/۱۰/۲۶
با سلام
کد زیر یکی از کد های آموزشی سایت خودتان راجع به آموزش آژاکس است.
<script language="javascript" type="text/javascript">
<!--
//تابعی که در تمام مرورگرها پشتیبانی می شود
function ajaxFunction(){
var ajaxRequest;

try{
//Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
}
catch(e){
//Internet Explorer
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
//در صورت بروز خطا
alert("متاسفانه مرورگر شما از آژاکس پشتیبانی نمی کند");
return false;
}
}
}
// این تابع اطلاعات ارسالی از سرور را دریافت می کند
ajaxRequest.onreadystatechange = function(){
//بررسی درست بودن حالت آماده
if(ajaxRequest.readyState == 4){
document.myForm.time.value = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", "time.php", true);
ajaxRequest.send(null);
}
//-->
</script>
</head>
<body>
<form name='myForm' action='#'>
نام: <input type='text' name='username' onchange='ajaxFunction();'/>
<br />
<br />
زمان: <input type='text' name='time' />
</form>
در این کد پس از نوشتن نام زمان آن لحظه را خروجی میدهد
اما با تابع CURL نمی توان درخواستی را فرستاد که زمان را نتیجه دهد؟!!!!!
یعنی چطور باید" ارسال آژاکسی" با تابع CURL فرستاد؟؟
با تشکر
پاسخ: 
سلام
زمانی که کد در صفحه اصلی خودش نمایش داده می شود، آدرس نسبی فایل (که درخواست آژاکس به آن ارسال می شود) نیز بر اساس آدرس حقیقی سایت حساب می شود، به فرض اگر با مرورگر آدرس زیر را فراخوانی کنید:
http://yoursite.com/frame
و در کد درخواست آژاکسی به فایلی به نام get.php ارسال شود، در واقع آدرس این فایل به صورت زیر برای مرورگر تفسیر می شود:
http://yoursite.com/frame/get.php
قاعدتا زمانی که با curl محتوا را به دامنه خود می آورید، باید در سرور دامنه شما، چنین فایلی وجود داشته باشد، چون آدرس جدید مطابق با سایت شما محاسبه می شود، اگر این فایل در سایت شما در دایرکتوری frame نباشد، خطای 404 Not Found دریافت می کنید.
نتیجه: curl یک تابع سمت سرور است و تنها نحوه ایجاد خروجی را مشخص می کند، از نظر مرورگر تفاوتی نمی کند که خروجی دریافت شده متعلق به کد یک سایت بوده یا خیر، مرورگر پاسخ دریافتی از سرور را بر اساس رفتار عادی خود پردازش می کند که نتیجه این رفتار در صورت عدم وجود فایل get.php در هاست شما، پیام 404 است!
نویسنده: reza
زمان: ۱۸:۳۹:۱۹ - تاریخ: ۱۳۹۲/۱۰/۲۶
با سلام
لطفا مثالی بزنید که با تابع curl بتوان آدرس سایت خودتون
webgoo.ir/example/ajax/simple-ajax-form.html
رو نمایش بده یعنی ارسال آزاکسی بده و بعد زمان رو نشون بده.
با تشکر
پاسخ: 
سلام
چنین کاری به لحاظ امنیت سرور امکانپذیر نیست!
نمی توانید از دامنه خود به سرور سایت دیگر درخواست ارسال کنید (مگر اینکه سایت مقصد این اجاز را بدهد).
نویسنده: reza
زمان: ۰۱:۱۶:۲۳ - تاریخ: ۱۳۹۲/۱۰/۲۷
با سلام
به نظر می رسد منظور من را از سوال های قبلی را درست متوجه نشده باشید !!!
شما فرض کنید کد زیر در یک وب سایت باشد
<script language="javascript" src="/team.js" type="text/javascript"></script>	
و مثلا تا زمانی که دکمه ای در کیبورد فشرده نشود کد بالا کار نکند و همچنین ممکن است این کد با کد های php هم ترکیب شده باشد.
حال ما وقتی بخواهیم با curl این سایت را به نمایش درآوریم باید چکار کنیم؟؟
و همچنین به جز مشکل بالا مشکل دیگری هم داریم.
با توجه به
"/team.js"
وقتی سورس سایت example.com را در سایت خود نمایش دهیم این کد به عبارتی خراب می شود.
پس در کل چطور باید کد های جاوا یا جاوااسکریپتی که فقط با رویداد حالتی مثلا زدن یک دکمه کار می کنند را با تابع curl نمایش داد؟؟
لطفا اگر امکان دارد کتابی جامع و کامل در زمینه curl معرفی کنید
با تشکر
پاسخ: 
سلام
مشکل کار نکردن کد به curl ارتباط (مستقیمی) ندارد! همان طور که در پاسخ به سوالات قبلی گفتیم، این متفاوت بودن آدرس صفحه است که منجر به عدم بارگذاری فایل ها با آدرس نسبی و در نتیجه از کار افتادن امکانات وابسته به آنها می شود (متاسفانه ظاهرا اطلاعات شما در زمینه مبانی وب کافی نیست)، اگر با نحوه کار آدرس دهی به صورت نسبی آشنا باشید، پاسخ سوالاتتان در موارد قبلی کاملا داده شده، در مورد کتاب باید عرض کنیم مبحث تابع curl به اندازه ای پیچیده نیست که برایش کتابی مجزا منتشر شود، شاید در قسمتی از کتاب های مربوط به آموزش PHP به این تابع اشاره ای شده باشد.
نویسنده: reza
زمان: ۲۳:۱۳:۱۵ - تاریخ: ۱۳۹۲/۱۰/۲۷
با سلام
به نظر می رسد شما فکر می کنید که اطلاعات من در زمینه مبانی وب کافی نیست.
شاید حرف شما درست باشد!!!!!!
لطفا به سایت زیر بروید
http://worldometers.info
این سایت آمار و اطلاعات را زنده نمایش می دهد به وسیله ترکیبی از برنامه نویسی آژاکس و جاوا اسکریپت!
لطفا کدی را به من معرفی کنید که بتواند سایت بالا را در دامنه خودم نمایش دهد، چه با curl و چه با file_get_contents، فرقی نمی کند.
آن وقت منظورم را از تمامی سوالات بالا خواهید فهمید، این کار قطعا امکان پذیر است .
با تشکر فروان و سپاس فراوان به خاطر پاسخگویی به تمامی سوالات.
پاسخ: 
سلام
برای اینگونه موارد توابع سمت سرور مناسب نیستند، باید از روش هایی مانند iframe استفاده کنید:
<iframe src="http://www.worldometers.info" width="800" height="600" frameborder="0"></iframe>
راه حل دیگر این است که با تابع curl صفحه را به صورت مداوم از سایت اصلی دریافت ، در دیتابیس یا فایل ذخیره و سپس در صفحه خود یک کد آژاکسی داشته باشید که پاسخ دریافت شده توسط curl را (که در دیتابیس یا در یک فایل متنی ذخیره شده) فراخوانی کرده و در مرورگر نمایش دهد.
نویسنده: reza
زمان: ۱۸:۴۸:۱۳ - تاریخ: ۱۳۹۲/۱۰/۲۸
با سلام
توضیحات شما کاملا درست است اما دریافت صفحه با تابع curl هیچ فایده ای ندارد زیرا همانطور که قبلا هم گفتم چیزی به عنوان آمار و ارقام در سورس سایت
http://worldometers.info
وجود ندارد که بتوان آن را ذخیره کرد.
به همین علت بود که همیشه از شما سوال می کردم که چطور باید خروجی سایت را ذخیره کرد نه سورس آن را!!!!!!
لطفا خودتان هم امتحان کنید تا متوجه منظور من بشوید.
این نکته را هم بگویم که ذخیره سایت بالا با browser ها مثلا فایرفاکس کاملا امکان پذیر است .
اما با curl فکر نکنم.
آیا هیچ راه حلی وجود ندارد که بتوان سایت را ذخیره کرد؟ (یعنی خروجی سایت نه سورس آن)
با تشکر
پاسخ: 
سلام
متوجه منظورتان هستیم اما کاری که شما می خواهید انجام دهید به سادگی امکانپذیر نیست، چون باید فایل های JS و CSS را به صورت جداگانه از DOM استخراج کنید که کار ساده ای نیست، در موارد اینچنین باید سورس ها را بررسی و لینکی که در پاسخ آن صرفا اعداد دریافت می شود را پیدا کنید و به آن درخواست curl بدهید (قاعدتا با انبوه کدهای موجود و پارامترهای به کار رفته در دستورات اسکریپتی سایت مورد نظر، خیلی ساده به نظر نمی رسد).
نویسنده: ali
زمان: ۰۹:۲۳:۵۳ - تاریخ: ۱۳۹۲/۱۰/۳۰
سلام من در حال طراحی یک کنترل پنل برای سایت هستم که نسبتا تموم شده اما میخوام یه پنل دیگری طراحی کنم که کاربر بتونه ابزارهای که می خواد تو کنترل پنل بیاره مثلا عکس آیکون اسم آیکون و مسیرش تو سایت را بفرسته تو قسمتی از کنترل پنل که مشخص شده برای این کار باید چیکار کنم
چه کدی باید با php بزنم
پاسخ: 
سلام
لطفا از طرح سوالات کلی خودداری کنید!
پاسخ روشنی برای سوالتان وجود ندارد، باید گام به گام متناسب با سیستم مورد نظرتان کدنویسی کنید، به فرض اگر به آپلود نیاز است، باید بخشی برای این کار تعریف کنید (توابع مربوط به فایل، کار با متدها، آرایه ها و...)، در کل اگر برنامه نویس باشید می توانید مراحل را تعریف و کدهای هر قسمت را بنویسید و در قالب یک مجموعه به هم ارتباط دهید.
نویسنده: نیلوفر
زمان: ۰۱:۵۳:۱۸ - تاریخ: ۱۳۹۲/۱۱/۰۱
سلام من از فرم ها استفاده کردم : یه مقداری رو وارد میکنم و اون میره در دیتابیس ذخیره میشه و سپس نمایش داده میشه.حالا میخوام وقتی اون مقدار رو وارد میکنم ، دیگه صفحه رفرش نشه و بلافاصله بعدش نمایش بده؟؟ میشه یه نمونه کد بهم معرفی کنید ؟؟ ممنون
پاسخ: 
سلام
به نظر باید از آژاکس (Ajax) بدین منظور استفاده کنید، لطفا به آموزش های مربوطه مراجعه کنید.
نویسنده: سینا
زمان: ۱۲:۰۲:۳۸ - تاریخ: ۱۳۹۲/۱۱/۱۰
سلام و عرض خسته نباشید بابت سایت خوبتون میخواستم بدونم چطور میشه در فرم ثبت نام کاربران از وجود یا عدم وجود ایمیل کاربر اطمینان حاصل کرد که تقلبی نباشه
پاسخ: 
سلام
راهی برای تشخیص اینکه ایمیل کاربر واقعی است یا خیر وجود ندارد! تنها استفاده از قابلیت هایی مانند OpenID و آن هم در برخی سرویس دهنده های ایمیل ممکن است (که البته نیاز به ورود کلمه عبور از طرف کاربر دارد، لذا خیلی برای این مورد کاربردی نیست).
نویسنده: ali
زمان: ۱۸:۱۰:۱۹ - تاریخ: ۱۳۹۲/۱۱/۱۲
سلام خسته نباشید من از تابع
file_get_contents("http://cdn.tsetmc.com/Loader.aspx");
استفاده کردم و ادرس فوق را هم تحت هر شرایطی چه base64 , utf8 امتحان کردم اما جواب نگرفتم . و منظورم اینه که فونت ها کاملا به هم ریخته بودند و اصلا حتی با استفاده از تابع file_put_contetents هم نتوانستم فایل ذخیره شده در کامپیوتر را با فونت مربوطه فراخوانی کنم این در حالیه که وقتی سورس این سایت به خصوص را می بینم هیچ موردی ندارد و قابل رویت با فونت های فارسی است . ممنون می شوم راهنمایی بفرمایید چه کدی استفاده کنم تا این سورس قابل رویت باشه و فونت های اون به هم ریخته نباشد.
پاسخ: 
سلام
از کد زیر برای دریافت و ذخیره سازی سایت مزبور استفاده کنید:
<?php
function fileGetContentsCurl($url){
$curl = curl_init();
$agent = 'Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2';
$header = array('Accept-Charset: UTF-8');
curl_setopt($curl, CURLOPT_FAILONERROR, TRUE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_MAXREDIRS, 2);
curl_setopt($curl, CURLOPT_USERAGENT, $agent);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
curl_setopt($curl, CURLOPT_URL, $url);
$data = curl_exec($curl);
curl_close($curl);

return $data;
}
$html = fileGetContentsCurl('http://cdn.tsetmc.com/Loader.aspx');
file_put_contents('text.txt', $html);
?>
نکته: تابع cURL باید در هاستتان فعال باشد.
نویسنده: محمد
زمان: ۱۳:۱۴:۰۰ - تاریخ: ۱۳۹۲/۱۱/۲۲
سلام ممنونم از توضیحاتتان میشه یه راهنمایی بکنید محتویات این ادرس زیر را با curl چطوری میشه گرفت
تشکر فراوان و اگه میشه یک کم توضیحات بیشتر از curl درسایتتان بدهید چون وسعت این تابع خیلی زیاد است
http://cdn.tsetmc.com/Loader.aspx?ParTree=111C1116
و میشه یه راهنمایی کلی بکنید تا متوجه بشویم که چطوری شما curl را برای صفحات وب تعریف می کنید منظورم اینه که ما خودمون بتونیم کدی رو بفهمیم چطوری تعریف کنیم تا به مقصودمون برسیم
پاسخ: 
سلام
curl نمی تواند اطلاعات این صفحه را به طور کامل دریافت کند، چون خروجی صفحه با دستورات جاوا اسکریپت ایجاد می شود نه متن و HTML ساده، استخراج اطلاعات این صفحه نیاز به بررسی های دقیق و آزمایش و خطا دارد که کار تقریبا وقتگیری است.
نویسنده: کوشا
زمان: ۰۰:۱۴:۰۶ - تاریخ: ۱۳۹۲/۱۲/۱۰
سلام
میشه یک فرم رو به یک URL خاص ارسال کنیم. چون من تو این زمینه واقعاً گیر کردم دیگه نمی دونم آیا راهی هست یا نه؟
شاید منظورم رو متوجه نشده باشید. من می خوام یک فرم را به آدرسی مثل
mysite.php?item=1&value=temp
بفرستم. نه به مثلاً صفحه ی
mysite.php 
من در حال ساخت یک CMS هستم. مثلاً تو یه قسمتی وقتی فرم رو پر می کنم باید ارسال بشه به یک صفحه ی کلاً مجزا و بعد درج بشه که البته این زیاد مشکل نیست مشکل اونجاست که مثلاً کاربر اگر یک فیلد رو پر نکنه باید به کاربر پیغام بدم که این رو پر نکردی که طراحی این قسمت اگر url صفحه بدون ؟ و اینها بود خیلی راحت بود البته یه راهی با سشن پیدا کردم که مثلاً هر چیزی رو که کاربر پر کرده دونه دونه تو سشن ببرم و بعد اگر هم یکی رو وارد نکرد اونی که وارد شده رو دیگه وارد نکنه و تو سشن داشته باشمش که توی Value فرمم echo کنم. زیاد نوشتم ببخشید.
فقط می خواستم بدونم آیا راهی جز این است یا خیر؟
خیلی ممنون
پاسخ: 
سلام
نمی دانیم دقیقا قصد طراحی چه ساختاری را دارید، اما این نوع موارد از روش های مختلف قابل انجام است، ساده ترین حالت این است که مقادیر ارسال شده را به صورت مستقیم با کدهای PHP در قسمت value فرم echo کنید (تا با ارسال مجدد فرم، دوباره ارسال شوند)، حالت دیگر استفاده از سشن یا کوکی است که در موارد خاص خود کاربرد دارد.
نویسنده: کوشا
زمان: ۱۵:۲۷:۳۶ - تاریخ: ۱۳۹۲/۱۲/۱۱
با سلامی مجدد
فکر می کنم مشکلم با php-self حل شده باشه فقط نمی دونم آیا امنیت لازم را دارد یا خیر؟ چون همان طور که خودتان می دانید این کار باعث میشه که فرم به همون صفحه ارسال بشه و این کار من رو خیلی راحت کرد.
به نظر شما این کار امنیت لازم رو داره.
پاسخ: 
سلام
استفاده از
$_SERVER['PHP_SELF'];
به خودی خود هیچ مشکل امنیتی ایجاد نمی کند (این متغیر صرفا آدرس فایل را خروجی می دهد)، انتخاب های دیگر می تواند خالی گذاشتن قسمت action یا استفاده از
$_SERVER['REQUEST_URI'];
است.
نویسنده: مهران
زمان: ۱۸:۰۲:۳۳ - تاریخ: ۱۳۹۲/۱۲/۱۷
درود بر شما.
من یه سوال داشتم
فرض کنید من یک رکورد حاوی مقادیری رو دارم و در بانک اطلاعاتی ذخیره می کنم.
اما این رکورد یک فیلد هم به نام فعال یا غیر فعال داره
که من میخوام بعد از پرداخت این فیلد متناسب با جواب سرور تغییر بکنه مشکلی که هست اینه که کاربر زمانی که فرم رو ثبت می کنه اطلاعات ثبت میشه و سپس به صفحه پرداخت منتقل میشه
با فرض اینکه پرداخت رو درست انجام بده ، سرور به من یه پارامتر میده که مثلا پرداخت انجام شد. اما متغیری که برای شناسایی رکورد به سمت سرور میفرستم خوب طبیعتا بر نمی گرده و من نمیتونم آیتم مورد نظر رو ویرایش کنم. از سشن هم استفاده کردم نشد. گویا به خاطر عدم دانش بنده است. لطف می کنین اگر جواب بدین
پاسخ: 
سلام
در سیستم های پرداخت معمولا امکان تنظیم یک لینک بازگشتی وجود دارد، در این لینک بازگشتی می توانید به فرض id مربوط به کاربر را (برای امنیت بیشتر) رمزنگاری کرده و به عنوان یک پارامتر ارسال و پس از پرداخت دریافت کنید (و در سرورتان حالت رمزی را به حالت معمولی تبدیل کرده و از سایر پارامترها برای موارد مد نظر استفاده کنید).
همچنین در این روش به جای رمزی کردن می توانید سشن id را به عنوان کد شناسایی کاربر به درگاه ارسال کرده و به عنوان پارامتر بازگشتی دریافت کنید.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




3 × 3
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشد که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form حامد
در:
عالی بود
۲۱:۳۸:۳۱ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام خیلی ممنون بابت پاسخ سریعتون خیلی دنبال همین دو خط کد بودم برای یادگیری سریع ریجکس ولی با سرچ پیدا نکردم و...
۱۸:۰۳:۴۳ ۱۳۹۸/۱۱/۰۷

form فرید
در:
درود بشما، میخواستم بدونم مثل کلمه @، کلمه ایی ساین هم داریم؟ با تشکر
۱۲:۱۹:۰۷ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام میشه لطفا به سوالم جواب بدید من می خوام با استفاده از عبارات با قاعده تمام تگ های html رو تشخیص بدم...
۱۰:۱۳:۰۵ ۱۳۹۸/۱۱/۰۷

form PewDiePie
در:
سلام چطور می تونم این کد رو یه لینک هم بهش اضافه کنم یعنی این که وقتی عکس رو می بینی طرف بتونه...
۲۳:۳۶:۲۶ ۱۳۹۸/۱۱/۰۶

form رسول
در:
سلام میخوام بجای نمایش متن، متن موجود در یه لینکو بهم نشون بده ممنون میشم کمکم کنید
۱۳:۳۸:۱۸ ۱۳۹۸/۱۱/۰۶

form حسن
در:
من مطابق کد نوشته شده شما میخواستم آدرس
۱۴:۱۰:۱۳ ۱۳۹۸/۱۱/۰۵

form saemrezaei
در:
سلام واقعا عالییه خیلی استفاده کردم به وبلاگم سر بزن لطفا.
۱۳:۳۷:۳۴ ۱۳۹۸/۱۱/۰۵

form نصراله رضایی
در:
سلام در ادمین های گذشته که باز می کنم تصاویر مشاهده نمی شود و من را به آدرس Huge domains.com ارجاع می...
۲۲:۳۹:۵۳ ۱۳۹۸/۱۱/۰۴

form نقدی زاده
در:
واقعا مرسی یه overflow-y:hidden به body دادم اسکرل افقی برای صفحه نمایش تبلت از بین رفت
۱۴:۴۴:۱۳ ۱۳۹۸/۱۱/۰۴

form وحید پوربشیری
در:
سلام لطفا یکی که خوب جاوا اسکریپت بلده بیاد به این آیدی ت.ل.گ.ر.ا.م Alpha2020@ یه کد برام بنویسه پول هم میدم
۱۱:۱۲:۳۲ ۱۳۹۸/۱۱/۰۲

form امین
در:
سلام تشکر بابت راهنماییتون. منظور من این بود که: الان با ثبت نام کاربر a در سایت اطلاعاتش در دیتابیس ثبت میشه و یک پوشه...
۰۳:۱۲:۴۰ ۱۳۹۸/۱۱/۰۲

form شریفی
در:
سلام معنی متن زیر چیست؟
۱۸:۲۸:۰۹ ۱۳۹۸/۱۱/۰۱

form امین
در:
سلام خسته نباشید یه اسکریپت دارم که وقتی کاربر ثبت نام میکنه یه پوشه و محتواش ایجاد میشه. میخوام یه صفحه با هر ثبت نام...
۱۴:۱۸:۵۱ ۱۳۹۸/۱۰/۳۰

form Admin
در:
سلام دوست عزیز. میشه بگویید چگونه میتوان در وبلاگ کادری را باز کرد که بازدید کنندگان بتوانند در آن چیزی بنویسند. ممنون میشم...
۱۱:۲۸:۵۰ ۱۳۹۸/۱۰/۳۰
آگهی