PDA

View Full Version : سوال: راهنمایی جهت ساخت اسکریپتی ساده به زبان PHP



xject32
جمعه 23 فروردین 1392, 02:02 صبح
سلام دوستان
من میخوام با کمک اساتید سایت یک اسکریپت ساده به زبان PHP طراحی کنم.
طرز کار این اسکریپت به این شکل هست که 2عدد Text به سرور ارسال میکنه و در صورتی که سرور کپتچا نداد تکست رو ثبت کنه.

حالا بریم سر اصل مطلب
حتما همتون با دی اکتیو آیدی یاهو آشنا هستید! :لبخند:
کار این اسکریپتی که قصد دارم بسازم اینه که برای آیدی های دی اکتیو شده لینک اثبات ایجاد میکنه و...
به همین خاطر میخوام کاربر یک عدد Text (ایمیل) در اسکریپت وارد کنه سپس Textای که کاربر وارد کرده با یک پسورد ثابت به سرور Mail.Yahoo.Com ارسال بشه سپس در صورتی که یاهو به ایمیل وارد شده کپچا (Captcha) نداد ایمیل توسط اسکریپت مورد تایید قرار بگیره یعنی آیدی دی اکتیو(غیر فعال) شده.

آیا اصلا این ایده عملی هست؟ لطفا راهنمایی کنید...

MMSHFE
جمعه 23 فروردین 1392, 02:27 صبح
بله با cURL میتونید انجام بدین.

xject32
جمعه 23 فروردین 1392, 02:38 صبح
با سلام
میشه بیشتر توضیح بدید. :قلب:

MMSHFE
جمعه 23 فروردین 1392, 07:35 صبح
ببینید، برای مثال این تابع sURL که من برای کارهای خودم نوشتم، خیلی در این زمینه میشه گفت کامله:


<?php
function sURL($url, $post = false, $cookie = false, $user = false, $pass = false, $userAgent = false, $headerOnly = false, $timeOut = 30) {
$pUrl = parse_url($url);
$userAgent = ($userAgent == false) ? 'Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.02' : $userAgent;
$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, true);
if ($headerOnly != false) {
curl_setopt($curl, CURLOPT_NOBODY, true);
}
if ($pUrl['scheme'] == 'https') {
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
}
if ($post != false && is_array($post)) {
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
}
if ($cookie != false && is_array($cookie)) {
curl_setopt($curl, CURLOPT_COOKIE, http_build_query($cookie, '', '; '));
}
if ($user != false && $pass != false) {
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "{$user}:{$pass}");
}
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, $timeOut);
curl_setopt($curl, CURLOPT_URL, $url);
$ret = curl_exec($curl);
if (curl_errno($curl)) {
return false;
}
curl_close($curl);
if (!($split = strpos($ret, "\r\n\r\n"))) {
return $ret;
}
$data = array();
$data['header']['_header'] = substr($ret, 0, $split);
$cookie = array();
preg_match_all('#set-cookie: ([^=]*)=([^;]*)#i', $data['header']['_header'], $cookie);
if (isset($cookie[1][0])) {
foreach ($cookie[1] as $key => $Cc) {
$data['header']['cookie'][urldecode($Cc)] = urldecode(trim($cookie[2][$key]));
}
}
$location = array();
preg_match_all('#location: (.*)#i', $data['header']['_header'], $location);
if (isset($location[1][0]) && trim($location[1][0]) != '') {
$data['header']['location'] = trim($location[1][0]);
}
$length = array();
preg_match_all('#content-length: ([0-9]*)#i', $data['header']['_header'], $length);
if (isset($length[1][0]) && trim($length[1][0]) != '') {
$data['header']['length'] = $length[1][0];
}
$fileName = array();
preg_match_all('#content-disposition: attachment; *filename=["\']*([^"\']+)["\'\n\r]+#iU', $data['header']['_header'], $fileName);
if (isset($fileName[1][0]) && trim($fileName[1][0]) != '') {
$data['header']['fileName'] = $fileName[1][0];
}
if ($headerOnly == false) {
$data['body'] = @substr($ret, $split + 4);
return $data;
}
}
?>
حالا مثلاً اگه بخوایم اطلاعات موردنظر شما رو به صفحه فرضی yahoo.com/deactivate.php با روش Post ارسال کنیم و ببینیم جواب چی بوده، میتونیم مشابه مثال زیر عمل کنیم:


$post = array('email' => 'someone@yahoo.com', 'password' => '123456');
if($result = sURL('http://www.yahoo.com/deactivate.php', $post)) {
echo $result['body'];
}

xject32
جمعه 23 فروردین 1392, 11:13 صبح
ممنون بابت پاسخ.
ولی فکر کنم شما منظور منو کامل متوجه نشدید

من میخوام یک اسکریپت طراحی کنم که کاربر یک Text رو به قسمت Username سایت Mail.Yahoo.Com ارسال کنه (توسط کاربر)

<input id="username" value="" tabindex="1" maxlength="96" name="login"></input>
و همچنین یک پسورد به صورت پیشفرض به قسمت Password سایت Mail.Yahoo.Com ارسال بشه (Default)

<input id="passwd" type="password" tabindex="2" maxlength="64" name="passwd"></input>

سپس پس از ارسال Username و Password در صورتی که Mail.Yahoo.Com به یوزرنیم که همون ایمیل میشه کپتچا (Captcha) نداد یعنی آیدی دی اکتیو شده و در این صورت اسکریپت یوزر نیم وارد شده توسط کاربر رو به یک صفحه ارسال کنه.:لبخند:

MMSHFE
جمعه 23 فروردین 1392, 11:42 صبح
دوست عزیز، منظورتون رو متوجه شدم. کدی که دادم، یک مثال بود. شما با فرمی که طراحی میکنید، نام کاربری و رمز عبور دلخواه رو دریافت کنید و توی صفحه مقصد فرم، مشابه کدی که گذاشتم، از تابعی که معرفی کردم استفاده کنید و بجای yahoo.com/deactivate.php که گفتم، آدرس خودتون (mail.yahoo.com) رو وارد کنید و جواب رو دریافت کنید و اندیس body اون رو بررسی کنید. اگه کد Captcha نبود، بقیه کارها رو انجام بدین.