Discuz Thai

 ลืมรหัสผ่าน
 สมัครสมาชิก

ข้อตกลงการใช้งานกระดานข่าวดิสคัสไทย DiscuzThai Agreement (English Version) ประกาศดิสคัสไทย - ทำเนียบดิสคัสภาษาไทย

Discuz! X3.5 Thai R20240520 Rev.9 (NEW) [วิดีโอช่วยสอน] อัปเกรด Discuz! X3.4 เป็น X3.5 Discord ของ Discuz! Thai Community อย่างเป็นทางการ

Discuz! X3.4 Thai R20220811 (REV.75) สิ้นสุดการสนับสนุน Discuz! X3.4 ภาษาไทยตั้งแต่วันนี้เป็นต้นไป (ขอแนะนำให้อัปเกรดเป็น X3.5 แทน)

ค้นหา
แท็กยอดนิยม: ดิสคัสภาษาไทย Discuz Thai
ดู: 13683|ตอบกลับ: 41

[X2] Link in/out แบบ discuzthai.com (Link out ธรรมดาที่ไม่ธรรมดา)

    [คัดลอกลิงก์]
S¡|€n7 โพสต์ 2012-3-18 18:45:26 |โหมดอ่าน
แก้ไขครั้งสุดท้ายโดย S¡|€n7 เมื่อ 2012-3-19 11:22

Link in/out แบบ discuzthai.com (Link out ธรรมดาที่ไม่ธรรมดา)

     ตามหัวข้อเลยครับ คือเป็นการทำ Link out ธรรมดา ให้มันไม่ธรรมดา บางท่านอาจจะงง ว่ามันแปลกแต่กต่างกับที่คนอื่นเค้าทำยังไงกัน ถึงต้องตั้งกระทู้ใหม่ มันก็ต่างกันนิดเดียวครับ

     ผมสรุปสั้น ๆ ง่าย ๆ เลยแล้วกัน เอาลักษณะถาม/ตอบเลยนะ คือการทำ Link out แบบเดิม ๆ คือ
Q: ไม่ว่าจะใส่ url ไหนเข้าไปมันก็จะทำ link out หมดใช่ไหม
A: ใช่

Q: บางคนที่หน้า link out แอบใส่ meta tag noindex,nofollow ไปด้วยใช่ไหม
A: ใช่/ไม่ใช่/ไม่รู้


สำหรับท่านที่ตอบว่าใช่ ดูคำถามต่อไป ถ้าใครตอบว่าไม่ใช่ หรือไม่รู้ก็แล้วแต่ครับอ่านก็ได้ไม่ว่ากัน

Q: ใส่ noindex, nofollow ในหน้า link out มันกระทบกับตัวเองด้วยนะ เพราะบางครั้ง link out เข้าเว็บเราเอง
A: เออจริง/อาจจะจริง/ไม่รู้


แล้วแย่างนี้ท่านจะทำ link out แบบเดิม ๆ เพื่อฆ่าตัวเองหรอ ผมเลยจะแนะนำไง ถ้าคิดรูปแบบไม่ออก ก็นี่ไง discuzthai.com ถ้าท่านไม่ครอบ link นอกมันก็เป็น link out แต่ไม่ครอบ link ในก็ไม่เป็น link out เห้นไหม มันต่างกัน

มาเจาะกันเลยดีกว่า
/source/function/function_discuzcode.php เดิม ๆ นะ
  1. function parseurl($url, $text, $scheme) {
  2.         global $_G;
  3.         if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\["']+/i", trim($text), $matches)) {
  4.                 $url = $matches[0];
  5.                 $length = 65;
  6.                 if(strlen($url) > $length) {
  7.                         $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
  8.                 }
  9.                 return '<a href="'.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
  10.         } else {
  11.                 $url = substr($url, 1);
  12.                 if(substr(strtolower($url), 0, 4) == 'www.') {
  13.                         $url = 'http://'.$url;
  14.                 }
  15.                 $url = !$scheme ? $_G['siteurl'].$url : $url;
  16.                 return '<a href="'.$url.'" target="_blank">'.$text.'</a>';
  17.         }
  18. }
คัดลอกไปที่คลิปบอร์ด
อันนี้ดักจับถ้าเป็น link in ไม่ต้องเด้งไปไฟล์ link out ถ้าเป้น link out ก็เหมือนเดิม
  1. function parseurl($url, $text, $scheme) {
  2.         global $_G;
  3.         if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\["']+/i", trim($text), $matches)) {
  4.                 if(preg_match("/(เว็บไซต์\.)[^\["']+/i", trim($text), $matches)) {
  5.                         $url = $matches[0];
  6.                         $length = 65;
  7.                         if(strlen($url) > $length) {
  8.                                 $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
  9.                         }
  10.                         return '<a href="'.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
  11.                 } else {
  12.                         $url = $matches[0];
  13.                         $length = 65;
  14.                         if(strlen($url) > $length) {
  15.                                 $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
  16.                         }
  17.                         return '<a href="./ไฟล์ link out ของท่าน.php?ตัวแปรที่ใช้ในการส่งค่าของท่าน='.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
  18.                 }
  19.         } else {
  20.                 if(preg_match("/(เว็บไซต์\.)[^\["']+/i", $url, $matches)) {
  21.                         $url = substr($url, 1);
  22.                         if(substr(strtolower($url), 0, 4) == 'www.') {
  23.                         $url = 'http://' . $url;
  24.                         }
  25.                         $url = !$scheme ? $_G['siteurl'] . $url : $url;
  26.                         return '<a href="' . $url . '" target="_blank">' . $text . '</a>';
  27.                 } else {
  28.                         $url = substr($url, 1);
  29.                         if(substr(strtolower($url), 0, 4) == 'www.') {
  30.                         $url = 'http://' . $url;
  31.                         }
  32.                         $url = !$scheme ? $_G['siteurl'] . $url : $url;
  33.                         return '<a href="./ไฟล์ link out ของท่าน.php?ตัวแปรที่ใช้ในการส่งค่าของท่าน=' . $url . '" target="_blank">' . $text . '</a>';
  34.                 }
  35.         }
  36. }
คัดลอกไปที่คลิปบอร์ด
แค่นี้แหละ เรียบร้อยแล้ว ขอให้มีความสุขกับอันดับที่เพิ่มขึ้นใน google นะ

ขออธิบายเพิ่มสักนิดเกี่ยวกับฟังก์ชัน preg_match
     หลักการทำงานของมันก็คือ ตรวจสอบตาม regexp (เรกูลา เอ็กเพรสชัน), จาก String (สายข้อความ), แล้วส่งค่ากลับเป็น boolean (บูลีนให้เพียงค่าถูก กับผิด, T กับ F, 0 กับ 1)

ณ. ที่นี้ คำสั่ง preg_match ในการตรวจสอบของเราที่เพิ่มเข้าไปใหม่นั้นมี 2 จุด คือ
  1. if(preg_match("/(เว็บไซต์\.)[^\["']+/i", trim($text), $matches)) {
คัดลอกไปที่คลิปบอร์ด
อันนี้สำหรับการพิมพ์ www.hostname.domain (พิมพ์ url) เข้ามาโดยตรง(ตัว editor จะแปลง BB code หรือใส่ลิงค์ให้เราอัตโนมัติก่อนเซฟลงฐานข้อมูล) และ
  1. if(preg_match("/(เว็บไซต์\.)[^\["']+/i", $url, $matches)) {
คัดลอกไปที่คลิปบอร์ด
อันนี้สำหรับการพิมพ์ [ url = h--p://www.hostname.domain ] ข้อความ [/ url ] เข้ามา
สำหรับท่าที่อยากเข้ารหัส link out อ่ะ เสนอแนะกันต่อรู้นะความต้องการของคนเรามีไม่สิ้นสุดหรอก ผมสนองให้
  1. function parseurl($url, $text, $scheme) {
  2.         global $_G;
  3.         if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\["']+/i", trim($text), $matches)) {
  4.                 if(preg_match("/(เว็บไซต์\.)[^\["']+/i", trim($text), $matches)) {
  5.                         $url = $matches[0];
  6.                         $length = 65;
  7.                         if(strlen($url) > $length) {
  8.                                 $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
  9.                         }
  10.                         return '<a href="'.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
  11.                 } else {
  12.                         $url = $matches[0];
  13.                         $length = 65;
  14.                         if(strlen($url) > $length) {
  15.                                 $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
  16.                         }
  17.                         return '<a href="./ไฟล์ link out ของท่าน.php?ตัวแปรที่ใช้ในการส่งค่าของท่าน='.base64_encode(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
  18.                 }
  19.         } else {
  20.                 if(preg_match("/(เว็บไซต์\.)[^\["']+/i", $url, $matches)) {
  21.                         $url = substr($url, 1);
  22.                         if(substr(strtolower($url), 0, 4) == 'www.') {
  23.                         $url = 'http://' . $url;
  24.                         }
  25.                         $url = !$scheme ? $_G['siteurl'] . $url : $url;
  26.                         return '<a href="' . $url . '" target="_blank">' . $text . '</a>';
  27.                 } else {
  28.                         $url = substr($url, 1);
  29.                         if(substr(strtolower($url), 0, 4) == 'www.') {
  30.                         $url = 'http://' . $url;
  31.                         }
  32.                         $url = !$scheme ? $_G['siteurl'] . $url : $url;
  33.                         return '<a href="./ไฟล์ link out ของท่าน.php?ตัวแปรที่ใช้ในการส่งค่าของท่าน=' . base64_encode($url) . '" target="_blank">' . $text . '</a>';
  34.                 }
  35.         }
  36. }
คัดลอกไปที่คลิปบอร์ด
จริง ๆ แล้วไม่ได้เพิ่มอะไรมากมายเลยแค่ base64_encode() เท่านั้น แต่อย่าถือไปใส่ base64_decode() ที่ไฟล์ link out ด้วยนะ ตามตัวอย่าง
ของเดิม
  1. foreach($_GET as $key => $value) {
  2.         $site .= $key . '=' . $value . '&';
  3. }

  4. $site = substr($site, 8, -1);
คัดลอกไปที่คลิปบอร์ด
เปลี่ยนเป็น
  1. foreach($_GET as $key => $value) {
  2.         $site .= $key . '=' . $value . '&';
  3. }

  4. $site = base64_decode(substr($site, 8, -1));
คัดลอกไปที่คลิปบอร์ด
เท่านี้ก็เรีบร้อย ครบถ้วนกระบวนท่า

คะแนน

จำนวนผู้เข้าร่วม 5จิตพิศัย +15 Money +10 Gold +10 ย่อ เหตุผล
theztru + 1 เนื้อหาดีมีสาระ.
espodsie + 1 เห็นด้วยมากๆ
muksuck77 + 1 เนื้อหาดีมีสาระ.
acaz + 10 + 10 + 10 โดนใจให้ทิป
jaideejung007 + 2 นี่แหละที่ผมหามานานแ.

ดูบันทึกคะแนน

iPandora โพสต์ 2012-3-18 19:56:58
อ่านแล้วสำหรับมือใหม่อาจจะงงนะครับ อย่างผม แต่ตอนนี้เข้าใจดีแล้ว

ผมใช้ Linkout แบบเข้ารหัสของคุณ New2th หนะครับ มันจะลิงก์เอ๊าเฉพาะ เว็บที่ไม่ใช่เว็บเรา
lahu โพสต์ 2012-3-18 19:58:17
แก้ไขครั้งสุดท้ายโดย lahu เมื่อ 2012-3-18 20:09

ขอบคุณ ครับ เอาไปใช้ได้เลยป่าว ครับ ผมงง อยู่
 เจ้าของ| S¡|€n7 โพสต์ 2012-3-18 21:21:05
ต้นฉบับโพสต์โดย iPandora เมื่อ 2012-3-18 19:56
อ่านแล้วสำหรับมือใหม่อาจจะงงนะครับ อย่างผม แต่ตอนนี ...

อ่อ หรอ หลักการทำงานคงคล้าย ๆ กัน แต่ผมยังไม่ได้ลองแบบเข้ารหัส

แต่ตัวนี้ผมฟันธงเลยว่า เว็บเราจะไม่มี link out 100%

อย่างของ discuzthai.com บางกระทู้ยังเด้ง link out บางกระทู้ก็ไม่ link out

ของผม confirm 100% ว่าตราบใดที่เป็น เชื่อเว็บ.โดเมน ขอเราก็จะไม่เด้งเข้า link out เด็ดขาด

ใครนำไปใช้ในเว็บ แต่ยังเด้ง link out อีกผมยินดีจ่ายให้ 10 money แต่มีข้อแม้ว่าต้องแก้โค๊ดเป็น และแก้ถูกต้องเท่านั้นนะครับ
 เจ้าของ| S¡|€n7 โพสต์ 2012-3-18 21:22:22
ต้นฉบับโพสต์โดย lahu เมื่อ 2012-3-18 19:58
แก้ไขครั้งสุดท้ายโดย lahu เมื่อ 2012-3-18 20:09

ขอบคุณ ครับ เ ...

นำไปใช้ได้เลยครับ แต่ไฟล์ link out ต้องทำเองนะครับ ผมแค่ปรับ /source/function/function_discuzcode.php ให้เฉย ๆ ส่วนไฟล์ link out มีเยอะแยะครับ ในเว็บนี้ลองหาดู

แสดงความคิดเห็น

ขอบคุณมาก ครับ  โพสต์ 2012-3-24 17:37
jaideejung007 โพสต์ 2012-3-19 09:39:17
แก้ไขครั้งสุดท้ายโดย jaideejung007 เมื่อ 2012-3-19 09:40

สวัสดีครับท่าน S¡|€n7

ไม่ค่อยเห็นหน้าเห็นตาท่านเลยนะครับ

ผมยังจำท่านได้อยู่นะ ตั้งแต่ผมเข้ามาแรกๆ ก็เห็นท่านตอบกระทู้ผมอยู่

ผมนึกว่าท่านจะหายหน้าไปไหนเสียแล้ว(ท่านอาจจะยังไม่รู้จักผม แต่ผมรู้จักท่านครับ)

เข้าเรื่องล่ะกัน

ขอบพระคุณมากครับ สำหรับหลักการทำงานดีๆ นี่แหละครับ ที่ผมกำลังตามหา

ว่าเราจะทำอย่างไร ไม่ให้ระบบมันทำ Linkout ในกรณีที่เป็นเว็บของเรา ในที่สุดก็เจอครับ

เพิ่มภาพเปรียบเทียบโค๊ดให้ชมกันนะครับ ว่ามีอะไรเพิ่มมาบ้าง


ปล. อยากได้วิธีการที่จะสามารถเพิ่มรายชื่อเว็บไซต์ไม่ให้ทำ Linkout มากกว่า 1 เว็บ(ขอคำแนะนำด้วยนะครับ)
ปลล2. รีบกดให้คะแนนแทบไม่ทัน(เพราะถูกใจมาก)

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? สมัครสมาชิก

x
 เจ้าของ| S¡|€n7 โพสต์ 2012-3-19 10:54:42
ต้นฉบับโพสต์โดย jaideejung007 เมื่อ 2012-3-19 09:39
แก้ไขครั้งสุดท้ายโดย jaideejung007 เมื่อ 2012-3-19 09:40

สวัสดีค ...

ขอบคุณมากครับ เพิ่งรู้ว่ามีแฟนคลับกับเค้าด้วยนะเนี่ย ไม่ได้หายไปหรอกครับ แต่ไม่ค่ีอยมีเวลา "แกะ + โม" โค๊ดสักเท่าไหร่ ส่วนคำถามที่ถามเข้ามา ลองดูที่บรรทัด
  1. if(preg_match("/(เว็บไซต์\.)[^\["']+/i", $url, $matches)) {
คัดลอกไปที่คลิปบอร์ด
นะครับ
ก็แค่เพิ่ม
  1. if(preg_match("/(เว็บไซต์1\.|เว็บไซต์2.\|เว็บไซต์3\.)[^\["']+/i", $url, $matches)) {
คัดลอกไปที่คลิปบอร์ด
เข้าไปเท่านั้นเองครับ

ขอให้มีความสุขกับอันดับบน google ที่เพิ่มขึ้น ๆ นะครับ

แสดงความคิดเห็น

สาธุ ขอให้สมพรปากอย่างที่ท่านว่า  โพสต์ 2012-3-19 11:34

คะแนน

จำนวนผู้เข้าร่วม 1จิตพิศัย +1 ย่อ เหตุผล
jaideejung007 + 1 โควต้าหมดพอดี!

ดูบันทึกคะแนน

whale123 โพสต์ 2012-3-19 14:52:00
  1. if(preg_match("/(เว็บไซต์\.)[^\["']+/i", $url, $matches)) {
คัดลอกไปที่คลิปบอร์ด
งง นิดหน่อยตรงจุดนี้ครับ ตรงเว็บไซต์หมายถึงให้ใส่ชื่อเว็บตัวเองเป็น xxxxxxx.com เหรอครับ หรือใช้ชื่อเต็มเลย
เป็น http://www.xxxxxxx.com

แสดงความคิดเห็น

เป็นคำถามเดียวกันเลยครับ  โพสต์ 2012-3-19 14:53
 เจ้าของ| S¡|€n7 โพสต์ 2012-3-19 15:03:08
แก้ไขครั้งสุดท้ายโดย S¡|€n7 เมื่อ 2012-3-19 15:11
ต้นฉบับโพสต์โดย whale123 เมื่อ 2012-3-19 14:52
งง นิดหน่อยตรงจุดนี้ครับ ตรงเว็บไซต์หมายถึงให้ใส่ชื ...


แค่ชื่อเว็บก้พอครับ ถ้าใช้โดเมน abc123.com ก็ใส่แค่ abc123\. ครับผม เพราะหลักการทำงานงานของ preg_match()  คือ เจอปุ๊บหยุด แล้วรีเทิร์นค่า

ยกตัวอย่างนะ

ถ้าเว็บเราชื่อ abc123.com แล้วสมาชิกพิมพ์ abc1234.com มันจะโดดไปเป็น link out เพราะฟังก์ชัน preg_match() รีเทิร์นค่าเป็น 0 (False) นั่นเอง สังเกตุนะว่า abc123.com กับ abc1234.com ต่างกันตรงไหน

ถ้างง ลองตัด com ออก ก็จะเป็น

abc123. และ
abc1234. เทียบกันดูนะครับว่าต่างกันยังไง

ผมอธิบายไม่เก่งซะด้วยซิ

ปล. ตามหลักของ regexp จะทียบอักขระพิเศษต้องใช้เครื่องหมาย \ นำหน้าทุกครั้งนะครับ ไม่งั้นจะกลายเป็นคำสั่ง

ลองศึกษาข้อมูลเพิ่มเติมเรื่อง regexp (เรกูลาเอ็กเพรสชัน), กับ preg_match เพิ่มครับ
เพิ่มเติมนิดครับ

ถ้า abc123.com คือโดเมนของเรา
ตราบใดที่ url มีค่าเป็น abc123. มันก็จะไม่ไปหน้า link out นะครับ ไม่ว่าเราจะทำ subdomain มันก็ไม่ไป ยกตัวอย่างอีกที

portal.abc123.com
forum.abc123.com
group.abc123.com
space.abc123.com
บลา บลา บลา.abc123.com

ทั้งหมดที่กล่าวมาก็ไม่ไป link out เพราะยังไง ๆ ก็เจอ abc123. จริงไหม

แต่ถ้าไม่มี abc123. เมื่อไหร่มันไป link out ทั้งหมด พอจะเข้าใจกันไหมครับ พิมพ์เองยังไม่ค่อยเข้าใจเลย

ถ้าติดปัญหาอะไรสอบถามมาใน เฟสก็ได้นะครับ ส่วนมากอยู่บนเฟสมากกว่าอยู่ที่นี่

http://facebook.com/xirritate หรือถ้าเรื่องด่วนจริง ๆ ก็ O8-เจ็ด8four9-หนึ่งO9หนึ่ง แล้วกันครับ ขอเป็นเรื่องด่วนจริง ๆ นะ กรณีแก้แล้วพัง ทำยังไงก็ทำไม่ได้ ยินดีให้คำปรึกษา ยกเว้นเรื่องเงินนะ ฮ่าฮ่า

acaz โพสต์ 2012-3-19 15:34:48
เยี่ยมครับ หายไปนานจริงๆครับ คุณ S¡|€n7

แต่รบกวนขอกระทู้ที่บอกว่าลิงค์ discuzthai ยังถูกจับเป็น Link out ด้วยครับ
ผมลองหาแล้วไม่เจอครับ
ทดสอบนะครับ

http://forum.discuzthai.com/foru ... hread&tid=25143

http://forum.discuzthai.com/foru ... hread&tid=27405

http://www.discuzthai.com/forum.php?mod=viewthread&tid=27195
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | สมัครสมาชิก

รายละเอียดเครดิต

รายชื่อผู้กระทำผิด|Archiver|ดิสคัส ไทย Follow us: Become a fan on facebook. Follow us on Twitter.

GMT+7, 2024-11-22 00:43

Powered by Discuz! X3.4, Rev.66

Copyright © 2001-2021 Tencent Cloud. Licensed

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้