PDA

View Full Version : ساخت بررسی کننده وجود یک لینک در لینک دیگر



binboy
چهارشنبه 10 آذر 1389, 18:43 عصر
با سلام php کارای عزیز
من می خواهم کدی بنویسم که بررسی کنه لینک سایت من در سایت دیگر وجود دارد یا خیر(لینک سایت از طریق فرم دریافت می شود).اگر وجود دارد فرم با موفقیت در دیتا بیس ثبت گردد اگر وجود ندارد ثبت نگردد و پیغام خطا دهد.
اطلاعاتم در مورد php کم است.
(خودم حدس زدم اول باید جستجوگری بسازم که یک لینک را در لینک بعدی که کار بر می دهد جستجو کنم و اگر پیدا کرد اجازه ثبت فرم را بده اگر نه ارور بده ولی چجوریشو موندم)
ممنون می شوم راهنماییم کنید که از کجا باید شروع کنم.

UnnamE
چهارشنبه 10 آذر 1389, 19:32 عصر
يه راه خوب
صفحه اي كه ميگه لينك روو داره تو يه txt ذخيره كن
يعد از فايل رو باز كن و دنبال كلمه مورد نظر بگرد
در صورتي كه بود يا نبود فايل ايجاد شده رو حذف كن!

در هر صورت اين روش هم يه باگ هم داره كه ممكن هست يارو آدرس C99.php رو به سيستم بده كه با ذخيره فايل ديگه قربانت برم!

binboy
پنج شنبه 11 آذر 1389, 12:54 عصر
یکسری اسکریپت ها هستند که این کاری که شما گفتی را انجام می دهند ولی من قصد کردم اطلاعات را توی دیتابیس اینسرت و سلکت کنم.چطوره؟
چون از فریم ورک codeigniter استفاده می کنم نکات امنیتیشو رعایت کردم و راه نفوذ را بستم ولی کلا که نمیشه بست تا حدودی که خوده codeigniter گفته بگزریم از بحث اصلی دور نشیم.

من یک کد دارم که لینک هایی که تو دیتابیس است را میگیره و بررسی می کنه و اگر لینک ما توش نباشه آن لینک را از دیتابیس حذف می کنه. ولی دوتا ارور هست و نمی دونم چیه؟

ارور:

Warning: file(122222) [function.file]: failed to open stream: No such file or directory in D:\xampp\htdocs\learn\meti\idu\back-links.php on line 36

Warning: implode() [function.implode]: Invalid arguments passed in D:\xampp\htdocs\learn\meti\idu\back-links.php on line 36


<?php
//open database connection
$username = "root";
$password = ""; //input your password here.
$database = "eroio";
//connect to database
$link=mysql_connect(localhost,$username,$password) ;
@mysql_select_db($database) or die("<b>Unable to specified database</b>");
//retrieve reciprocal links
$query="select ural from links";
$result=mysql_query($query) or die('Error, query failed');

$row=0;
$numrows=mysql_num_rows($result);

//change to your URL
$myURL="http://wwww.site.com";

//loop through reciprocal links
while($row<$numrows)
{
$backlink=mysql_result($result,$row,"ural");
$check=linkcheck($myURL,$backlink);

//if reciprocal link doesn't have your url, delete from your database
if($check==null)
{
mysql_query("delete from links where ural='$backlink'") or die('Error, query failed');
}
$row++;
}

//check reciprocal link function
function linkcheck($mylink,$link)
{
$html = implode('', file($link));
$pos = strpos($html,$mylink);
return $pos;
}
mysql_close($link);
?>

ولی نمیدونم این روش قبل از ارسال فرم به دیتابیس می تونه چک کنه که لینک ما تو لینک مقابل است یا نه؟

funpatogh
پنج شنبه 11 آذر 1389, 19:55 عصر
آدرس سایت مورد نظر رو بگیر با file_get_contents محتویاتش رو توی یک string بریز بعد توی این متغییر جستجو کن که لینک شما هست یا خیر

binboy
شنبه 13 آذر 1389, 18:29 عصر
در حال خاضر شما دوتا روش گفتید؟ جاهایی دیدم با استفاده از Curl این کار را بکنند ولی با file_get_contents را نه! کدامیک بهتر است؟
( در مورد string های Curl کجا باید مطلب گیر آورد؟ مثلا من دنبال اینم که strings زیر چی هستند و چیکار می کنند:
تو php.net چرخیدم ولی چیزی در مورد موارد زیر پیدا نکردم.


CURLOPT_USERAGENT
CURLOPT_URL
CURLOPT_FAILONERROR
CURLOPT_FOLLOWLOCATION
CURLOPT_AUTOREFERER
CURLOPT_RETURNTRANSFER
CURLOPT_TIMEOUT
...

و غیره ...)

funpatogh
یک شنبه 14 آذر 1389, 20:27 عصر
یک سر به اینجا بزنید بد نیست
http://barnamenevis.org/showthread.php?232600-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-cURL-%D9%88-%DA%86%D9%86%D8%AF-%D9%85%D8%AB%D8%A7%D9%84-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C