PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : جلوگیری از ثبت داده تکراری در دیتابیس



seosaz
October 19th, 2019, 16:49
سلام
وقت بخیر
ببخشید کسی میتونه تو کد زیر بهم کمک کنه؟
من کد زیر رو درست کردم برای اینکه لینک های یک صفحه رو دربیارم و توی دیتابیس ذخیره کنم ولی هرکاری میکنم باز لینک های تکراری ذخره میشن
نمیدونماشتباه رفتم راه رو یا چی باعث شده که تکراری ها ثبت بشن کد اصلی من اینه اینو میخوام گاری کنم لینک تکرای ثبت نکنه توی دیتابیس
لطفا کمکم کنید

کد من:


<?php
$urls = file_get_contents('http://home.ucom.ir');

$dom = new DOMDocument();
@$dom->loadHTML($urls);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for($i = '0' ; $i < $hrefs->length; $i++){
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
$url = filter_var($url, FILTER_SANITIZE_URL);
// validate url
if(!filter_var($url, FILTER_VALIDATE_URL) === false){
echo '<a href="'.$url.'">'.$url.'</a><br />';





$conn =new mysqli('localhost', 'root', '' , 'mylink2');
$sql = $conn->prepare("INSERT INTO site_data (author,title,tags) VALUES (?, ?, ?)");
$author=$url;
$title = $href->nodeValue;
$tags= $url;
$sql->bind_param("sss", $author, $title, $tags);
if($sql->execute()) {
$success_message = "Added Successfully";
} else {
$error_message = "Problem in Adding New Record";

$sql->close();
$conn->close();
}
}}
?>





کد دتابیس:


CREATE TABLE IF NOT EXISTS `site_data` (
`id` int(11) NOT NULL,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

iran20host
October 19th, 2019, 19:09
سلام و عرض ادب
احتراما باید در دیتابیس key تعریف کنید.
یعنی این فیلدی که شما میخواهید تکراری ثبت نشه داخل دیتابیس باید یک نوع ایندکس باشه.

seosaz
October 20th, 2019, 18:08
سلام
میشه بیشتر توضیح بدید یا لینکی که آموزش کامل داده همراه با مثال بهم بدید
من هرچی گشتم پیدا نکردم
این کد من باید چه شکلی بشه؟ میشه توی کد تغیر اعمال کنید ممنون میشم

lizard.tiny
October 20th, 2019, 20:20
سلام

توی دیتاهایی که ثبت میکنید آدرس url رو هم توی دیتابیس ذخیره کنید

موقع execute یا ذخیره کردن اطلاعات جدید توی دیتابیس, برسی کنید اگر URL توی دیتابیس موجود بود از import کردن صرف نظر کنید

البته میتونید برای اینکار یک کد uniq هم بسازید

مثلاً بجای ذخیره کردن url از عنوان استفاده کنید

iran20host
October 20th, 2019, 20:29
کد دتابیس:

CREATE TABLE IF NOT EXISTS `site_data` (
`ID int NOTNULLUNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

ID int NOT NULL UNIQUE

اینو تست بفرمایید.

seosaz
October 20th, 2019, 21:12
منظورتون اینه اینجوری بنزنم:
کد:

CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

- - - Updated - - -

منظورتون اینه اینجوری بنزنم:
کد:

CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;


اگه منظورتون اینه با همین روش هم باز همونجوری تکراری ثبت میشه

iran20host
October 21st, 2019, 00:59
منظورتون اینه اینجوری بنزنم:
کد:

CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

- - - Updated - - -

منظورتون اینه اینجوری بنزنم:
کد:

CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;


اگه منظورتون اینه با همین روش هم باز همونجوری تکراری ثبت میشه
عزیز table ID مثال بود اصل کاری بونیک کردن تیبل بود شما باید لینک ها رو هم توی دیتابیس ذخیره کنید و اونم یونیک کنید که مشکلتون برطرف بشه.

seosaz
October 21st, 2019, 20:51
ID int NOT NULL UNIQUE

اینو تست بفرمایید.

منظورتون اینه؟
کد:

CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(300) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL UNIQUE,
`title` varchar(300) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL UNIQUE,
`tags` varchar(300) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL UNIQUE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

اینم نمیشه چرا باز نمیشه

lizard.tiny
October 21st, 2019, 22:26
نمونه کد تکمیل شده طبق نیاز شما : https://vrl.ir/umapyT

seosaz
October 22nd, 2019, 13:45
ممنون دستتون درد نکنه
:53::53::53:

- - - Updated - - -

ممنون دستتون درد نکنه
:53::53::53:

- - - Updated - - -


نمونه کد تکمیل شده طبق نیاز شما : https://vrl.ir/umapyT

ممنون دستتون درد نکنه
:53::53::53:

seosaz
October 25th, 2019, 18:42
نمونه کد تکمیل شده طبق نیاز شما : https://vrl.ir/umapyT
من توی سایتتی که دادید نشد عضو بشم هرچغدر عضویت رو زدم پر کردم فرم رو هیچ پیامی نیومد
بخاطر اون بدون عضو شذن کد رو برداشتم لطفا اگه میشه ایمل منم بعنوان کاربر عصو کنبد ممنون میشم
و سوال بعدی که داشتم برای کدی که سما لطف کردیدبرام درست کردید وقتی میخوام به کد این چیزا رو هم اضافه کنم کد همینجوری میچرخه و دیگه درست کار نمیکنه و فقط عنوان یه صفحه رو بینهایت پیدا میکنه و از اول شروع میکنه پیدا میکنه انگار توی کلی حلقه گیر کرده
من بخوام به کد شما این چندتا امکان رو هم اضافه کنم قسمت اسکرایپ کردن سایت کد چجوری میشه مثلا میخوام کد اینجوری بشه
اگه کد اول این باشه



<?php
$dom = new DOMDocument();
@$dom->loadHTML($urls);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for($i = '0' ; $i < $hrefs->length; $i++){
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
$url = filter_var($url, FILTER_SANITIZE_URL);
// validate url
if(!filter_var($url, FILTER_VALIDATE_URL) === false){
echo '<a href="'.$url.'">'.$url.'</a><br />';

}}




کد دوم این میشه


<?php
// Target URL


// Dont Edit This
$dom = new DOMDocument();
@$dom->loadHTML(file_get_contents($target_url));
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");




$source = 0;
$errors = 0;
$duplicate = 0;
$report = array();


for($i = 0; $i < $hrefs->length; $i++)
{
$href = $hrefs->item($i);
$title = $href->nodeValue;
$url = $href->getAttribute('href');
$url = filter_var($url, FILTER_SANITIZE_URL);
$key = md5($url);


// Validate URL
if(!filter_var($url, FILTER_VALIDATE_URL) === false)
{
}
اگه کد تازه ما اینم باشه:



// Load HTML to DOM Object
$dom = new DOMDocument();
@$dom->loadHTML($data);

// Parse DOM to get Title
$nodes = $dom->getElementsByTagName('title');
@$title = $nodes->item(0)->nodeValue;
$tit = $title;


// Parse DOM to get Meta Description
$metas = $dom->getElementsByTagName('meta');
$body = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta = $metas->item($i);
if ($meta->getAttribute('name') == 'description') {
$body = $meta->getAttribute('content');
$meta9 = $metas->item($i);
if ($meta9->getAttribute('name') == 'keywords') {
$body9 = $meta2->getAttribute('content');
$kew1 = $body9;
echo $kew1;
echo "<hr>";
}
}

}
// Parse DOM to get Meta keywords
$metas2 = $dom->getElementsByTagName('meta');
$body2 = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta2 = $metas2->item($i);
if ($meta2->getAttribute('name') == 'keywords') {
$body2 = $meta2->getAttribute('content');
$kew = $body2;
}
}


// Parse DOM to get Meta sitemap
$metas3 = $dom->getElementsByTagName('meta');
$body3 = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta3 = $metas3->item($i);
if ($meta3->getAttribute('name') == 'sitemap') {
$body3 = $meta3->getAttribute('content');
$map = $body3;
}
}


// Parse DOM to get Meta favicon
$metas4 = $dom->getElementsByTagName('meta');
$body4 = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta4 = $metas4->item($i);
if ($meta4->getAttribute('name') == 'favicon') {
$body4 = $meta4->getAttribute('content');
$icon = $body4;
}
}
// Parse DOM to get Images
$image_urls = array();
$images = $dom->getElementsByTagName('img');

for ($i = 0; $i < $images->length; $i ++) {
$image = $images->item($i);
$src = $image->getAttribute('src');
}




// Images 2


$image_urls = array();
$images = $dom->getElementsByTagName('img');
$imgg = "";
for ($i = 0; $i < $images->length; $i ++) {
$image = $images->item($i);
if ($src = $image->getAttribute('src')){
$imgg = $image->getAttribute('src');
}
}
// end Images 2
$date = date("r");
@$out1 = $title;
@$out2 = $body;
@$out3 = $kew;
@$out4 = $body3;
@$out5 = $body4;
@$out6 = $src;
@$out7 = $imgg;

کد جدید چی میشه؟


منظورم این هست که به قسمت دام ایکس ام ال کد اول چه چیزایی باید اضافه کنم برای اینکه بهش تایتل و دیسکریپشن و ایمج و آیکون و برچسب پست بزارم

بابات کمکتون بازم ممنونم دستتون درد نکنه دعای خیلی ها
پشتتونه

seosaz
October 30th, 2019, 09:43
من توی سایتتی که دادید نشد عضو بشم هرچغدر عضویت رو زدم پر کردم فرم رو هیچ پیامی نیومد
بخاطر اون بدون عضو شذن کد رو برداشتم لطفا اگه میشه ایمل منم بعنوان کاربر عصو کنبد ممنون میشم
و سوال بعدی که داشتم برای کدی که سما لطف کردیدبرام درست کردید وقتی میخوام به کد این چیزا رو هم اضافه کنم کد همینجوری میچرخه و دیگه درست کار نمیکنه و فقط عنوان یه صفحه رو بینهایت پیدا میکنه و از اول شروع میکنه پیدا میکنه انگار توی کلی حلقه گیر کرده
من بخوام به کد شما این چندتا امکان رو هم اضافه کنم قسمت اسکرایپ کردن سایت کد چجوری میشه مثلا میخوام کد اینجوری بشه
اگه کد اول این باشه



<?php
$dom = new DOMDocument();
@$dom->loadHTML($urls);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for($i = '0' ; $i < $hrefs->length; $i++){
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
$url = filter_var($url, FILTER_SANITIZE_URL);
// validate url
if(!filter_var($url, FILTER_VALIDATE_URL) === false){
echo '<a href="'.$url.'">'.$url.'</a><br />';

}}




کد دوم این میشه


<?php
// Target URL


// Dont Edit This
$dom = new DOMDocument();
@$dom->loadHTML(file_get_contents($target_url));
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");




$source = 0;
$errors = 0;
$duplicate = 0;
$report = array();


for($i = 0; $i < $hrefs->length; $i++)
{
$href = $hrefs->item($i);
$title = $href->nodeValue;
$url = $href->getAttribute('href');
$url = filter_var($url, FILTER_SANITIZE_URL);
$key = md5($url);


// Validate URL
if(!filter_var($url, FILTER_VALIDATE_URL) === false)
{
}
اگه کد تازه ما اینم باشه:



// Load HTML to DOM Object
$dom = new DOMDocument();
@$dom->loadHTML($data);

// Parse DOM to get Title
$nodes = $dom->getElementsByTagName('title');
@$title = $nodes->item(0)->nodeValue;
$tit = $title;


// Parse DOM to get Meta Description
$metas = $dom->getElementsByTagName('meta');
$body = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta = $metas->item($i);
if ($meta->getAttribute('name') == 'description') {
$body = $meta->getAttribute('content');
$meta9 = $metas->item($i);
if ($meta9->getAttribute('name') == 'keywords') {
$body9 = $meta2->getAttribute('content');
$kew1 = $body9;
echo $kew1;
echo "<hr>";
}
}

}
// Parse DOM to get Meta keywords
$metas2 = $dom->getElementsByTagName('meta');
$body2 = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta2 = $metas2->item($i);
if ($meta2->getAttribute('name') == 'keywords') {
$body2 = $meta2->getAttribute('content');
$kew = $body2;
}
}


// Parse DOM to get Meta sitemap
$metas3 = $dom->getElementsByTagName('meta');
$body3 = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta3 = $metas3->item($i);
if ($meta3->getAttribute('name') == 'sitemap') {
$body3 = $meta3->getAttribute('content');
$map = $body3;
}
}


// Parse DOM to get Meta favicon
$metas4 = $dom->getElementsByTagName('meta');
$body4 = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta4 = $metas4->item($i);
if ($meta4->getAttribute('name') == 'favicon') {
$body4 = $meta4->getAttribute('content');
$icon = $body4;
}
}
// Parse DOM to get Images
$image_urls = array();
$images = $dom->getElementsByTagName('img');

for ($i = 0; $i < $images->length; $i ++) {
$image = $images->item($i);
$src = $image->getAttribute('src');
}




// Images 2


$image_urls = array();
$images = $dom->getElementsByTagName('img');
$imgg = "";
for ($i = 0; $i < $images->length; $i ++) {
$image = $images->item($i);
if ($src = $image->getAttribute('src')){
$imgg = $image->getAttribute('src');
}
}
// end Images 2
$date = date("r");
@$out1 = $title;
@$out2 = $body;
@$out3 = $kew;
@$out4 = $body3;
@$out5 = $body4;
@$out6 = $src;
@$out7 = $imgg;

کد جدید چی میشه؟


منظورم این هست که به قسمت دام ایکس ام ال کد اول چه چیزایی باید اضافه کنم برای اینکه بهش تایتل و دیسکریپشن و ایمج و آیکون و برچسب پست بزارم

بابات کمکتون بازم ممنونم دستتون درد نکنه دعای خیلی ها
پشتتونه
لطفا کسی کمک کنه در موزد
این کار

lizard.tiny
October 31st, 2019, 14:27
سلام

توی سایت miladworkshop.ir ثبت نام کنید, با اکانت سایت میلاد ورک شاپ میتونید توی سایت https://askoverflow.ir (https://askoverflow.ir/) لاگین کنید

seosaz
November 3rd, 2019, 15:44
سلام

توی سایت miladworkshop.ir ثبت نام کنید, با اکانت سایت میلاد ورک شاپ میتونید توی سایت https://askoverflow.ir (https://askoverflow.ir/) لاگین کنید

سلام قسمت دوم سوال رو میشه کمکم کنید
من چندتا کد ساختم با این کدی که دادم بهتون ولی همشون گیر میکنن مثلا یکیشون کلا دیگه احرا کد تموم نمیشه توی چندتاشون حطای میزنه که تایتل وجود نداره و ... وجود نداره متغیرش رو نداری


مثلا کد:


<?php
$url=$_GET["url"];


function getta($url) {
// Extract HTML using curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$data = curl_exec($ch);
curl_close($ch);

// Load HTML to DOM Object
$dom = new DOMDocument();
@$dom->loadHTML($data);

// Parse DOM to get Title
$nodes = $dom->getElementsByTagName('title');
$title = $nodes->item(0)->nodeValue;

// Parse DOM to get Meta Description
$metas = $dom->getElementsByTagName('meta');
$body = "";
for ($i = 0; $i < $metas->length; $i ++) {
$meta = $metas->item($i);
if ($meta->getAttribute('name') == 'description') {
$body = $meta->getAttribute('content');
}
}
/// keword
// $metas = $dom->getElementsByTagName('meta');
// $kew = "";
// for ($i = 0; $i < $metas->length; $i ++) {
$kewta = $metas->item($i);
if ($kewta->getAttribute('name') == 'keywords') {
$kew = $kewta->getAttribute('content');
}
// }
///////////
// $metas = $dom->getElementsByTagName('meta');
// $smap = "";
// for ($i = 0; $i < $metas->length; $i ++) {
$mapta = $metas->item($i);
if ($mapta->getAttribute('name') == 'sitemap') {
$smap = $mapta->getAttribute('content');
}
// }

///////////


// $metas = $dom->getElementsByTagName('meta');
// $ico = "";
// for ($i = 0; $i < $metas->length; $i ++) {
$icta = $metas->item($i);
if ($icta->getAttribute('name') == 'favicon') {
$ico = $icta->getAttribute('content');
}
// }

///////////
///////////
/// keword


//// sitemap


//// sitemap
// Parse DOM to get Images
$image_urls = array();
$images = $dom->getElementsByTagName('img');

for ($i = 0; $i < $images->length; $i ++) {
$image = $images->item($i);
$src = $image->getAttribute('src');

if(filter_var($src, FILTER_VALIDATE_URL)) {
$image_urls = $src;
// echo $src;

}
}
//// link exetra
$xpath = new DOMXPath($dom);
$link_urls = array();
$hrefs = $xpath->evaluate("/html/body//a");
//echo $hrefs;
for ($i = 0; $i < $hrefs->length; $i ++) {
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
$url = filter_var($url, FILTER_SANITIZE_URL);
// validate url
if(!filter_var($url, FILTER_VALIDATE_URL) === false){
$link=$url;
echo $link;
}
}

//// link extra
$output = array(
'title' => $title,
'src' => $src,
'body' => $body,
'kew' => $kew,
'link' => $url,
'ico' => $ico,
'smap' => $smap
);
return $output;
}

echo "<pre>";
print_r(getta($url));



echo "<hr>";
echo $title;
echo "<hr>";
echo $link;
echo "<hr>";
echo $src;
echo "<hr>";


//$tit=($output[title]);
// echo json_encode($output);
echo "<pre>";
echo "<br>";
echo $title;
echo "<br>";
echo $link;
echo "<hr>";
echo "<hr>";
echo $url;
print_r($src);

echo "<hr>";
echo "<hr>";
echo $src;
echo "<br>";
echo $body;
echo "<br>";


خطا میده میگه


Fatal error: Call to a member function getAttribute() on a non-object in D:\0000000111\htdocs\cod\cod\00\get2.php on line 38

seosaz
November 4th, 2019, 17:30
سلام

توی سایت miladworkshop.ir ثبت نام کنید, با اکانت سایت میلاد ورک شاپ میتونید توی سایت https://askoverflow.ir (https://askoverflow.ir/) لاگین کنید

سلام
ما اگر
key رو تبدیل به کد md5
نکنیم مشکلی پیش میاد؟
دلیل اینکه تبدیل به کد کردید چیه؟