PDA

View Full Version : حرفه ای: طراحی یه صفحه - نمایش سورس صفحات



naser_haji
شنبه 04 شهریور 1391, 17:34 عصر
سلام دوستان
من میخوامن یه صفحه طراحی کنم که یه دونه فرم داشته باشه با دوتا فریم داخلی
که تو فرم آدرس سایت رو بعد از وارد کردن تو فریم اولی اون سایت نمایش داده میشه و توی فریم دومی سورس فریم اولی
یعنی وقتی تو فرم میزنیم google.com تو فریم اولی سایت گوگل رو باز کنه و توی فریم دومی سورس سایت گوگل رو بنویسه
کسی بلده اینو چه جوری باید بنویسم؟

naser_haji
شنبه 04 شهریور 1391, 19:33 عصر
کسی کمک نمی کنه؟

m-i-l-s-o-n
شنبه 04 شهریور 1391, 22:11 عصر
دیگه از فریم استفاده نمیشه


<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
</head>

<body>
<input type="text" name="field1" id="field1" value="http://localhost"><br>

<input value="load" type="button" onClick="my_function()"><br>


<textarea cols="15" rows="12" id="frame1" style="float:left"></textarea>
<div id="frame2" style="width:400px;height:400px;overflow:scroll;float:lef t"></div>


<script type="text/javascript">
function my_function()
{
if($("#field1").val() != '' && $("#field1").val().indexOf("http",0) == 0)
{

$.get($("#field1").val(),function(data)
{
$("#frame1").html(data)
$("#frame2").html(data)
})

}
}
</script>
</body>
</html>

naser_haji
یک شنبه 05 شهریور 1391, 09:32 صبح
دیگه از فریم استفاده نمیشه


<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
</head>

<body>
<input type="text" name="field1" id="field1" value="http://localhost"><br>

<input value="load" type="button" onClick="my_function()"><br>


<textarea cols="15" rows="12" id="frame1" style="float:left"></textarea>
<div id="frame2" style="width:400px;height:400px;overflow:scroll;float:lef t"></div>


<script type="text/javascript">
function my_function()
{
if($("#field1").val() != '' && $("#field1").val().indexOf("http",0) == 0)
{

$.get($("#field1").val(),function(data)
{
$("#frame1").html(data)
$("#frame2").html(data)
})

}
}
</script>
</body>
</html>
تو html5 واسه iframe صفت های جدیدی هم اضافه شده ولی frameset حذف شده.منظور من از فریم همون iframe هست. این کدی که شما دادین رو من امتحان کردم.این کد هیچ سایتی به جز لوکال خودم نتونست اجرا کنه.

m-i-l-s-o-n
یک شنبه 05 شهریور 1391, 11:08 صبح
کد هیچ سایتی به جز لوکال خودم نتونست اجرا کنهالان می ذارمش تو یه هاست ببینم اونجا کار می کنه یا نه

منظور من از فریم همون iframe هست.حتما باید از فریم استفاده کنی؟

m-i-l-s-o-n
یک شنبه 05 شهریور 1391, 11:47 صبح
نشد.متاسفانه مشکل اینجاس که جاوا اسکریپت حق چنین کاری که ما می خوایم انجام بدیم رو نداره
https://developer.mozilla.org/en-US/docs/Same_origin_policy_for_JavaScript

m-i-l-s-o-n
یک شنبه 05 شهریور 1391, 12:13 عصر
با فریم انجام شد ولی دیگه برای گرفتن سورس نظری ندارم.


<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
</head>

<body>
<input type="text" name="field1" id="field1" value="http://localhost">

<input value="load" type="button" onClick="my_function()"><br><br>


<textarea cols="15" rows="12" id="frame1" style="float:left"></textarea>
<iframe id="frame2" style="height:300px;width:400px;"></iframe>


<script type="text/javascript">
function my_function()
{
if($("#field1").val() != '' && $("#field1").val().indexOf("http",0) == 0)
{
document.getElementById("frame2").src = $("#field1").val();

}
}
</script>
</body>
</html>

m-i-l-s-o-n
یک شنبه 05 شهریور 1391, 12:42 عصر
برای گرفتن سورس هم می تونی از cURL استفاده کنی


<?php
$ch = curl_init($_POST['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);
curl_close($ch);
?>

m-i-l-s-o-n
یک شنبه 05 شهریور 1391, 13:08 عصر
اینم کاملش.حله؟



<?php
if(isset($_POST['url']))
{
$ch = curl_init($_POST['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);
curl_close($ch);
}else
{
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
</head>

<body>
<input type="text" name="field1" id="field1" value="http://localhost">

<input value="load" type="button" onClick="my_function()"><br>


<textarea cols="30" rows="19" id="frame1" style="float:left"></textarea>
<iframe id="frame2" style="height:310px;width:400px;"></iframe>


<script type="text/javascript">
function my_function()
{
if($("#field1").val() != '' && $("#field1").val().indexOf("http",0) == 0)
{
document.getElementById("frame2").src = $("#field1").val();
$.post('index.php',{'url':$("#field1").val()},function(data)
{
$("#frame1").val(data)
})
}
}
</script>
</body>
</html>
<?php
}
?>

djsaeedkhan
یک شنبه 05 شهریور 1391, 13:34 عصر
سلام
البته می تونی از get_file_content هم استفاده کنی و چیزی که گرفت رو مستقیم نمایش بدی.
با سپاس

m-i-l-s-o-n
یک شنبه 05 شهریور 1391, 13:46 عصر
بله ممنون اصلا احتیاجی به cURL هم نبود. :)


<?php
if(isset($_POST['url']))
{
echo file_get_contents($_POST['url']);
}else
{
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
</head>

<body>
<input type="text" name="field1" id="field1" value="http://www.mihandownload.com">

<input value="load" type="button" onClick="my_function()"><br>


<textarea cols="30" rows="19" id="frame1" style="float:left"></textarea>
<iframe id="frame2" style="height:310px;width:400px;"></iframe>


<script type="text/javascript">
function my_function()
{
if($("#field1").val() != '' && $("#field1").val().indexOf("http",0) == 0)
{
document.getElementById("frame2").src = $("#field1").val();
$.post('index.php',{'url':$("#field1").val()},function(data)
{
$("#frame1").val(data)
})
}
}
</script>
</body>
</html>
<?php
}
?>

naser_haji
یک شنبه 05 شهریور 1391, 14:36 عصر
با فریم انجام شد ولی دیگه برای گرفتن سورس نظری ندارم.
</html>[/PHP]
اینکه وقتی فرم رو اوکی میکنی اون آدرس رو تو فریم نمایش نمیده. یعنی src فریم رو تنظیم نکردین که وقتی فرم ارسال میشه src فریم بشه اون ادرس ارسالی

naser_haji
یک شنبه 05 شهریور 1391, 14:45 عصر
بله ممنون اصلا احتیاجی به cURL هم نبود. :)

نه نه نمیشه با file_get_contents سورس صفحه رو بدست اورد. چون صفحاتی که میخوام سورسشون در بیاد فقط واسه کاربرا قابل مشاهده هست و اگه کاربر وارد نشده باشه یه صفحه دیگه بهش نشون میده. با file_get_contents نمیشه
با curl شاید بشه. ولی باید اول کوکی ست بشه و ... . من دو ماه این در و اون در زدم کمه بتونم همین کار رو با curl انجام بدم ولی نشد. کسایی تو انجمن هستن که اینو بلدن ولی کمک نمیکنن. نمیدونم چرا.
حالا بعد چند ماه این روش به ذهتم رسید که با فریم خودمون میتونیم لاگین کنیم.واسه همین دنبال اینم که بشه سورس فریم رو داشته باشیم.

m-i-l-s-o-n
یک شنبه 05 شهریور 1391, 16:21 عصر
کسایی تو انجمن هستن که اینو بلدن ولی کمک نمیکنن. نمیدونم چرا
کسایی که تو این انجمن هستن هم با سرچ کردن چیز یاد گرفتن پس یه نگاه به این بنداز http://www.php.net/manual/en/function.curl-setopt.php نوشته با CURLOPT_COOKIE میشه کوکی ست کرد. اینجوری (http://stackoverflow.com/questions/895786/how-to-get-the-cookies-from-a-php-curl-into-a-variable) هم میشه کوکی ها رو خوند.


حالا بعد چند ماه این روش به ذهتم رسید که با فریم خودمون میتونیم لاگین کنیم.واسه همین دنبال اینم که بشه سورس فریم رو داشته باشیم.
شما اگه بگی پروژت چیه شاید دیگران بتونن کمکت کنن من الان تازه فهمیدم می خوای تو سایتت تو یه سایت دیگه لاگین کنی.برای اینکار باید کوکی های فریم رو بخونی و به cURL بدی.

naser_haji
یک شنبه 05 شهریور 1391, 19:30 عصر
شما اگه بگی پروژت چیه شاید دیگران بتونن کمکت کنن من الان تازه فهمیدم می خوای تو سایتت تو یه سایت دیگه لاگین کنی.برای اینکار باید کوکی های فریم رو بخونی و به cURL بدی.
لینک زیر پستیه که 4 ماه پیش اینجا گذاشتم ولی به نتیجه نرسیدم. اگه شما بلدین ممنون میشم
کلیک کنید (http://barnamenevis.org/showthread.php?340578-%D8%AC%D8%B3%D8%AA-%D9%88-%D8%AC%D9%88-%D9%85%DB%8C%D8%A7%D9%86-%D8%B3%D8%A7%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C-%D8%AF%DB%8C%DA%AF%D9%87)

m-i-l-s-o-n
یک شنبه 05 شهریور 1391, 21:00 عصر
لینک زیر پستیه که 4 ماه پیش اینجا گذاشتم ولی به نتیجه نرسیدم. اگه شما بلدین ممنون میشمفک کنم الان اون پروژتو برات کامل انجام دادم :دی
فقط بعضی سایتا مثل همین برنامه نویس امنیتشون بالاس رو برنامه نویس می خواسم تست کنم یه سری فیلد های دیگه برای ورود می خواس اما رو سایت داغون خودم تست کردم جواب داد :)

ببین مثلا می خوایم کاربر دنبال کلمه سفارش توی سایت TAYP.IR بگزده. می گیم وقتی یو آر آل مساوی این سایت بود با یوزری که شما داری توش لاگین بشه و توی صفحاتش دنبال کلمه "سفارش" بگرده من تستش کردم جواب داد خودتم تست کن و توسعش بده.



<?php
class Curl {

public $cookieJar = "";

// Make sure the cookies.txt file is read/write permissions
public function __construct($cookieJarFile = './cookies.txt') {
$this->cookieJar = $cookieJarFile;
}

function setup() {
$header = array();
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: "; // browsers keep this blank.

curl_setopt($this->curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7');
curl_setopt($this->curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($this->curl, CURLOPT_COOKIEJAR, $this->cookieJar);
curl_setopt($this->curl, CURLOPT_COOKIEFILE, $this->cookieJar);
curl_setopt($this->curl, CURLOPT_AUTOREFERER, true);
curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
}

function get($url) {
$this->curl = curl_init($url);
$this->setup();

return $this->request();
}

function getAll($reg, $str) {
preg_match_all($reg, $str, $matches);
return $matches[1];
}

function postForm($url, $fields, $referer = '') {
$this->curl = curl_init($url);
$this->setup();
curl_setopt($this->curl, CURLOPT_URL, $url);
curl_setopt($this->curl, CURLOPT_POST, 1);
curl_setopt($this->curl, CURLOPT_REFERER, $referer);
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $fields);
return $this->request();
}

function getInfo($info) {
$info = ($info == 'lasturl') ? curl_getinfo($this->curl, CURLINFO_EFFECTIVE_URL) : curl_getinfo($this->curl, $info);
return $info;
}

function request() {
return curl_exec($this->curl);
}
}

if(isset($_POST['url']))
{



if(strpos($_POST['url'],'http://www.tayp.ir') == 0)
{
// site tayp.ir ro mikhaste pas ba usero pase khodam tush vared misham va tush search mikonm

$curl = new Curl();
$url = "http://www.tayp.ir/login.php";
$fields = "pass=&showpage=login.php&email=hitman_sd%40yahoo.com&password=hitman&button=%D9%88%D8%B1%D9%88%D8%AF";

// Calling URL
$referer = "http://www.tayp.ir";

$html = $curl->postForm($url, $fields, $referer);

// hala tuye in html migardam donbale kalame ee ke karbar khaste masln $_POST['keyword']

echo "تعداد یافته ها در صفحه اول : ".substr_count($html,$_POST['keyword'])." می باشد.<br>";
// hala masln mirim be ye safheye dge (nokte injas ke vaghti mirim be ye safheye dge baz ham karbar loginesh hefz mishe)

$html = $curl->get("http://www.tayp.ir/index.php?showpage=reqs.php");


echo "تعداد یافته ها در صفحه دوم : ".substr_count($html,$_POST['keyword'])." می باشد.";


}
else if(strpos($_POST['url'],'http://www.manmigam.com') == 0)
{
// hamin karo baraye in site mikonim dobare
}

}else
{
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
</head>

<body>
<input type="text" name="field1" id="field1" value="http://www.tayp.ir">
<input type="text" name="field2" id="field2" value="سفارش">

<input value="load" type="button" onClick="my_function()">





<script type="text/javascript">
function my_function()
{
if($("#field1").val() != '' && $("#field1").val().indexOf("http",0) == 0)
{

$.post('index.php',{'url':$("#field1").val(),'keyword' : $("#field2").val()},function(data)
{
alert(data)
})
}
}
</script>
</body>
</html>
<?php
}
?>

naser_haji
یک شنبه 05 شهریور 1391, 23:50 عصر
فک کنم الان اون پروژتو برات کامل انجام دادم :دی
[/PHP]
من که هیچی از این سر در نیاوردم:متفکر::اشتباه::لبخن :

naser_haji
یک شنبه 05 شهریور 1391, 23:57 عصر
ببین مثلا می خوایم کاربر دنبال کلمه سفارش توی سایت TAYP.IR بگزده. می گیم وقتی یو آر آل مساوی این سایت بود با یوزری که شما داری توش لاگین بشه و توی صفحاتش دنبال کلمه "سفارش" بگرده من تستش کردم جواب داد خودتم تست کن و توسعش بده.

من که تست کردم جواب نداد:افسرده:

m-i-l-s-o-n
دوشنبه 06 شهریور 1391, 01:37 صبح
من که تست کردم جواب نداد:افسرده:این به خاطر اینه که وقتی اینجا کد رو می ذارم تو تگ php خراب میشه الان فایل رو ضمیمه می کنم


من که هیچی از این سر در نیاوردمبه اون کلاسه نگاه نکن منم وقتی دیدم سرم گیج رفت :لبخندساده: او کلاس حکم یه مرور گر رو داره که به توابع get و postForm اون می تونی گت و پست کنی خودش کوکی رو هم برات نگه می داره و مدیریت می کنه

91906

naser_haji
دوشنبه 06 شهریور 1391, 13:55 عصر
ایولا کار کرده.

$curl = new Curl();
$url = "http://www.tayp.ir/login.php";
$fields = "pass=&showpage=login.php&email=hitman_sd%40yahoo. com&password=hitman&button=%D9%88%D8%B1%D9%88%D8%A F";

// Calling URL
$referer = "http://www.tayp.ir";

$html = $curl->postForm($url, $fields, $referer);
با این لاگین کردی؟ یه توضیح مختصر میدی دربارش؟

naser_haji
دوشنبه 06 شهریور 1391, 14:24 عصر
در مورد تابع function my_function() که تو جاوا اسکریپته
اولش یه شرط داره که ببینه مقداری وارد شده که اگه وارد شده url و keyword رو پست میکنه.ولی اون تابع بعدیش نمیدونم چیه. اونو یکم توضیح میدی؟ منظورم اینه؟
function(data)
{
alert(data)
}

m-i-l-s-o-n
دوشنبه 06 شهریور 1391, 16:03 عصر
با این لاگین کردی؟ یه توضیح مختصر میدی دربارش؟ آره با این لاگین کردم.بله حتما
اینجا یه شی از کلاسCurl می سازیم و میریزیم تو curl
$curl = new Curl();url ای که قراره اطلاعات لاگین (یوزرنیم و پسورد و بقیه چیزایی که لازمه برای لاگین) رو بگیره رو تعیین می کنیم

$url = "http://www.tayp.ir/login.php";
اطلاعاتی که قراره به url پست بشن رو توی فیلدز می ریزیم . بین متغیر ها & می ذاریم و بین نام فیلد و مقدارش از = استفاده می کنیم.

$fields = "pass=&showpage=login.php&email=hitman_sd%40ya hoo. com&password=hitman&button=%D9%88%D8%B1%D9%88%D8%A F";
http_referer رو تعیین می کنیم (یعنی جایی که ازش به این صفحه رفته) این زیاد مهم نیست البته شاید بعضی سایتا برای امنیت بیشتر چک کنن که کاربر از چه صفحه ای لاگین کرده ولی عموما هرچی بنویسی حله

$referer = "http://www.tayp.ir";
و اینجا عملیات پست انجام میشه و نتیجه (response) توی html ریخته میشه

$html = $curl->postForm($url, $fields, $referer);
این برای پست بود .برای گت از این دردسرا نداره فقط تابع get رو کافیه صدا بزنی

m-i-l-s-o-n
دوشنبه 06 شهریور 1391, 16:06 عصر
ولی اون تابع بعدیش نمیدونم چیه
اون تابع اسمش تایع callback هست.
وقتی response سرور اومد صدا زده میشه و نتیجه صفحه توی data ریخته میشه.
اطلاعات دقیق تر در اینجا (http://api.jquery.com/jQuery.post/)

naser_haji
دوشنبه 06 شهریور 1391, 18:54 عصر
خیلی باحاله من رو چند سایت دیگه تست کردم جواب داده. یه مقدار هم توش دستکاری کردم.
حالا اگه به جای یه کلمه دنبال یه دکمه بخوایم بگردیم باید چیکار کنیم؟
فرض کنیم تو یه صفحه چنین دکمه ای وجود داره:

<button type="button" value="لطفا کلیک کنید" class="button" onclick="window.location.href = 'index.php'; return false;"></button>
حالا میخوایم اطلاعات این دکمه رو بدست بیاریم. مثلا value اون چیه و یا اگه onclick داشته باشه مقدار اون چیه و ...
توی توابع مربوط به رشته ها هر چی گشتم چیزی به ذهنم نرسید

m-i-l-s-o-n
دوشنبه 06 شهریور 1391, 22:01 عصر
توی توابع مربوط به رشته ها هر چی گشتم چیزی به ذهنم نرسید باید از عبارات منظم (regular expressions) برای جست و جو استفاده کنی
www.regular-expressions.info (http://barnamenevis.org/www.regular-expressions.info)
http://www.php.net/manual/en/function.preg-match-all.php (http://www.php.net/manual/en/function.preg-match-all.php)
برای آزمایش عباراتت http://regexpal.com (http://regexpal.com/)

اگه چیزی از regex نمی دونی خوب در موردش تحقیق کن چیزی نیس که بشه با چندتا جمله گفت قسمت اصلی یه درس 3 واحدی مهندسی نرم افزاره

اینم نمونه


<?php
ob_start();

?>
<html>
<head>
<title>
</title>
</head>
<body>
<form name="folan" method="post">
<input name="chiz" type="text"/>
<button name="myButton1" id="an_id" onClick="some_codes_here">This is a button with onClick attr</button>
<button name="myButton2" class="myClass">This is a button without onClick attr</button>
<button name="myButton3" class="myClass" >This is a button without onClick attr</button>
<button name="myButton4" onClick="some_codes_here">This is a button with onClick attr</button>
</form>
</body>
</html>



<?php



$html = ob_get_contents();
ob_end_clean();

$matches = array();


preg_match_all("#<button.*>.*</button>#",$html,$matches);

foreach($matches[0] as $value)
{
echo htmlentities($value).'<br>';
}

// hala masln mikhaim attribute onClick ro bgirim
echo '<br>
<br>
<br>
<br>
<br>
';



preg_match_all("#<button.*onClick[ ]*=.*>.*</button>#",$html,$matches);


foreach($matches[0] as $value)
{
echo htmlentities($value).'<br>';
}

?>