SMF SSI.php Functions
Current Version: 2.1.1
This file is used to demonstrate the capabilities of SSI.php using PHP include functions. The examples show the include tag, then the results of it.
Include Code
To use SSI.php in your page add at the very top of your page before the <html> tag on line 1 of your php file:
<?php require("SSI.php"); ?>
Some notes on usage
All the functions have an output method parameter. This can either be "echo" (the default) or "array"
If it is "echo", the function will act normally - otherwise, it will return an array containing information about the requested task. For example, it might return a list of topics for ssi_recentTopics.
This functionality can be used to allow you to present the information in any way you wish.
Additional Guides & FAQ
Need more information on using SSI.php? Check out Using SSI.php article.
Recent Topics Function
Code (simple mode)
<?php ssi_recentTopics(); ?>
Code (advanced mode)
<?php ssi_recentTopics($num_recent = 8, $exclude_boards = null, $include_boards = null, $output_method = 'echo'); ?>
Result
Recent Posts Function
Code
<?php ssi_recentPosts(); ?>
Result
Top Boards Function
Shows top boards by the number of posts.
Code
<?php ssi_topBoards(); ?>
Result
Top Topics
Shows top topics by the number of replies or views.
Code (show by number of views)
<?php ssi_topTopicsViews(); ?>
Result
Code (show by number of replies)
<?php ssi_topTopicsReplies(); ?>
Result
Top Poster Function
Shows the top poster's name and profile link.Code
<?php ssi_topPoster(); ?>
Result
Latest Member Function
Shows the latest member's name and profile link.
Code
<?php ssi_latestMember(); ?>
Result
Member of the Day
Shows one random member of the day. This changes once a day.
Code
<?php ssi_randomMember('day'); ?>
Result
junjao
สอบถาม ได้ที่ jun_jao2000@hotmail.com |
Who's Online Function
This function shows who are online inside the forum.
Code
<?php ssi_whosOnline(); ?>
Result
junjao
Log Online Presence
This function logs the SSI page's visitor, then shows the Who's Online list. In other words, this function shows who are online inside and outside the forum.
Code
<?php ssi_logOnline(); ?>
Result
junjao
Login Function
Shows a login box only when user is not logged in.
Code
<?php ssi_login(); ?>
Result
Logout Function
Shows a logout link only when user is logged in.
Code
<?php ssi_logout(); ?>
Result
Welcome Function
Greets users or guests, also shows user's messages if logged in.
Code
<?php ssi_welcome(); ?>
Result
Today's Calendar Function
Code
<?php ssi_todaysCalendar(); ?>
Result
Today's Birthdays Function
Code
<?php ssi_todaysBirthdays(); ?>
Result
Today's Holidays Function
Code
<?php ssi_todaysHolidays(); ?>
Result
Today's Events Function
Code
<?php ssi_todaysEvents(); ?>
Result
Forum Stats
Shows some basic forum stats: total members, posts, topics, boards, etc.
Code
<?php ssi_boardStats(); ?>
Result
จำนวนตอบกระทู้ทั้งหมด: 1,459
จำนวนหัวข้อทั้งหมด: 1,434
จำนวนหมวดหมู่ทั้งหมด: 5
จำนวนบอร์ดทั้งหมด: 23
News Function
Shows random forum news.
Code
<?php ssi_news(); ?>
Result
https://www.exness.com/boarding/sign-up/a/73208?lng=th
1. เลือกประเทศ ไทย
2. อีเมล์จริงของคุณ
3. รหัสผ่าน
* รหัสผ่านต้องมีความยาว 8-15 ตัว
* ใช้ทั้งอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
* ใช้ทั้งตัวเลขและตัวอักษรภาษาอังกฤษ
* ห้ามใช้อักขระพิเศษ (!@#$%^&*., และอื่นๆ)
4. ใส่รหัสพาร์ทเนอร์ 73208
Board News Function
Shows the latest posts from read only boards, or a specific board.
Code
<?php ssi_boardNews(); ?>
Result
two-factor authentication คืออะไร
1. **รหัสที่ส่งไปยังโทรศัพท์มือถือ** (ข้อความ SMS หรือแอปพลิเคชันตัวสร้างรหัส)
2. **การยืนยันตัวตนผ่านแอปพลิเคชัน** (เช่น Google Authenticator หรือ Authy)
3. **การใช้การยืนยันตัวตนผ่านลายนิ้วมือ หรือสแกนใบหน้า** (biometric authentication)
โดยการใช้ระบบ 2FA จะช่วยเพิ่มความปลอดภัยให้กับบัญชีผู้ใช้ เนื่องจากแม้ว่าผู้ไม่หวังดีจะทราบรหัสผ่านของเรา ก็ยังไม่สามารถเข้าถึงบัญชีได้ถ้าพวกเขาไม่มีการยืนยันตัวตนในขั้นตอนที่สอง.
Plesk แก้ไข SPF Record ทำอย่างไร
### ขั้นตอนการแก้ไข SPF Record ผ่าน Plesk:
1. **ล็อกอินเข้าสู่ Plesk**:
- เข้าไปที่ URL ของ Plesk (เช่น `https://your-server-ip:8443` หรือ `https://yourdomain.com:8443`)
- กรอกชื่อผู้ใช้และรหัสผ่านเพื่อเข้าสู่ระบบ Plesk
2. **เลือกโดเมนที่ต้องการแก้ไข**:
- หลังจากล็อกอินเข้าไปแล้ว คุณจะเห็นรายชื่อโดเมนทั้งหมดใน Plesk
- คลิกที่โดเมนที่คุณต้องการแก้ไข SPF Record
3. **ไปที่การตั้งค่า DNS**:
- ในหน้าจอของโดเมนที่เลือก ให้คลิกที่ **"Websites & Domains"** (เว็บไซต์และโดเมน)
- แล้วเลือก **"DNS Settings"** (การตั้งค่า DNS)
4. **ค้นหาและแก้ไข SPF Record**:
- ในหน้า DNS Settings คุณจะเห็นรายการ DNS Record ทั้งหมดของโดเมน
- ค้นหา **TXT Record** ที่มีการตั้งค่า SPF อยู่ในนั้น (อาจจะเป็นข้อความที่ขึ้นต้นด้วย `v=spf1`)
- ถ้าคุณยังไม่เห็น SPF Record ให้คลิกที่ **"Add Record"** (เพิ่มบันทึก) และเลือก **"TXT"**
- ใส่ค่า SPF Record ที่ต้องการแก้ไขหรือเพิ่ม เช่น:
```
v=spf1 ip4:192.168.1.1 include:_spf.google.com -all
```
ในที่นี้จะอนุญาตให้ IP 192.168.1.1 และเซิร์ฟเวอร์ที่ระบุใน `_spf.google.com` ส่งอีเมลจากโดเมนนี้
5. **บันทึกการเปลี่ยนแปลง**:
- หลังจากแก้ไข SPF Record เสร็จแล้ว ให้คลิกที่ **"OK"** หรือ **"Apply"** เพื่อบันทึกการเปลี่ยนแปลง
- ระบบจะทำการอัปเดต DNS และเปลี่ยนแปลงค่าของ SPF Record ตามที่คุณกำหนด
6. **ตรวจสอบการตั้งค่า SPF**:
- คุณสามารถใช้เครื่องมือออนไลน์เช่น [MXToolbox](https://mxtoolbox.com/spf.aspx) เพื่อเช็คว่า SPF Record ของคุณถูกตั้งค่าถูกต้องหรือไม่
- เพียงกรอกโดเมนของคุณลงไปแล้วคลิก **"SPF Record Lookup"**
SFP Record ทำงานอย่างไร
### วิธีการทำงานของ SPF Record:
1. **การตั้งค่า SPF Record**:
เจ้าของโดเมนจะต้องเพิ่ม SPF Record ลงใน DNS ของโดเมน (เป็นข้อความในรูปแบบของ TXT Record) ซึ่งจะระบุว่าเซิร์ฟเวอร์ใดที่ได้รับอนุญาตให้ส่งอีเมลจากโดเมนนี้ ตัวอย่างของ SPF Record อาจมีลักษณะเช่นนี้:
```
v=spf1 include:_spf.google.com ~all
```
โดยคำอธิบายของแต่ละส่วนคือ:
- `v=spf1`: หมายถึงเวอร์ชันของ SPF ที่ใช้อยู่ (ในที่นี้คือเวอร์ชัน 1)
- `include:_spf.google.com`: ระบุว่าเซิร์ฟเวอร์ที่อยู่ในรายการของ `google.com` ได้รับอนุญาตให้ส่งอีเมลจากโดเมนนี้
- `~all`: หมายถึงหากมีการตรวจสอบและพบว่าเซิร์ฟเวอร์ไม่ตรงกับที่ระบุใน SPF Record จะถือว่าเป็น "Soft Fail" (ไม่แน่ชัด แต่ยังคงรับอีเมลได้)
2. **การตรวจสอบ SPF ในการส่งอีเมล**:
เมื่อเซิร์ฟเวอร์รับอีเมลเข้า มันจะตรวจสอบว่าอีเมลนั้นถูกส่งมาจากเซิร์ฟเวอร์ที่ได้รับอนุญาตจาก SPF Record ของโดเมนผู้ส่งหรือไม่ กระบวนการนี้ทำงานดังนี้:
- เซิร์ฟเวอร์ที่รับอีเมลจะดึงค่า SPF Record จาก DNS ของโดเมนผู้ส่ง (เช่น หากโดเมนผู้ส่งคือ `example.com` ก็จะค้นหา SPF Record ของ `example.com` ใน DNS)
- เซิร์ฟเวอร์จะตรวจสอบว่าไอพีของเซิร์ฟเวอร์ที่ส่งอีเมลนั้นตรงกับที่ระบุไว้ใน SPF Record หรือไม่
- หากตรงกัน อีเมลจะถูกส่งต่อไปยังผู้รับตามปกติ
- หากไม่ตรงกัน จะมีการตัดสินใจตามค่าที่ระบุใน SPF Record (เช่น `-all` จะเป็นการบล็อกอีเมลทันที)
3. **ผลลัพธ์จากการตรวจสอบ SPF**:
การตรวจสอบ SPF จะส่งคืนผลลัพธ์ดังนี้:
- **Pass**: หมายความว่าเซิร์ฟเวอร์ที่ส่งอีเมลได้รับอนุญาต
- **Fail**: หมายความว่าเซิร์ฟเวอร์ที่ส่งอีเมลไม่ได้รับอนุญาต และอาจถูกปฏิเสธ
- **Soft Fail**: หมายความว่าเซิร์ฟเวอร์ที่ส่งอีเมลไม่ได้รับอนุญาต แต่การปฏิเสธจะขึ้นอยู่กับการตั้งค่าอื่น ๆ หรือความพยายามในการจัดการ
- **Neutral**: หมายความว่าไม่มีข้อมูลเกี่ยวกับเซิร์ฟเวอร์ใน SPF Record และจะไม่สามารถตัดสินใจได้
### ประโยชน์ของ SPF Record:
- **ป้องกันการปลอมแปลงอีเมล (Email Spoofing)**: ช่วยให้มั่นใจได้ว่าอีเมลที่ส่งมาจากโดเมนจริง ๆ จะต้องมาจากเซิร์ฟเวอร์ที่ได้รับอนุญาต
- **ป้องกันอีเมลขยะ (Spam)**: ช่วยป้องกันการส่งอีเมลขยะที่อาจทำให้โดเมนของคุณเสียชื่อเสียง
- **เพิ่มความน่าเชื่อถือของอีเมล**: ช่วยให้ผู้รับอีเมลรู้ว่าอีเมลที่มาจากโดเมนของคุณเป็นอีเมลที่เชื่อถือได้
### ตัวอย่างการตั้งค่า SPF Record:
- **Allow specific IP address**:
```
v=spf1 ip4:192.168.1.1 -all
```
อนุญาตเฉพาะ IP 192.168.1.1 ในการส่งอีเมลจากโดเมนนี้
- **Allow specific domain**:
```
v=spf1 include:spf.example.com -all
```
อนุญาตให้เซิร์ฟเวอร์ที่ได้รับอนุญาตจาก `spf.example.com` ส่งอีเมลจากโดเมนนี้
การตั้งค่า SPF เป็นการป้องกันขั้นพื้นฐานที่สำคัญในการเพิ่มความปลอดภัยให้กับการส่งอีเมล หากคุณมีโดเมนของตัวเอง ควรพิจารณาตั้งค่า SPF Record เพื่อป้องกันการปลอมแปลงและปัญหาอื่น ๆ ที่อาจเกิดขึ้นกับการส่งอีเมล
Domain Name การเลือกและลงทะเบียนโดเมนเนม ทำอย่างไร
### 1. **เลือกชื่อโดเมนที่เหมาะสม**
- **สั้นและจำง่าย**: เลือกชื่อที่ไม่ยาวเกินไป และสามารถจดจำได้ง่าย
- **ใช้คำที่เกี่ยวข้อง**: หากคุณทำธุรกิจ ควรใช้ชื่อที่เกี่ยวข้องกับธุรกิจหรือสิ่งที่คุณทำ
- **ตรวจสอบความพร้อม**: ตรวจสอบว่าโดเมนที่คุณต้องการยังว่างอยู่หรือไม่ โดยสามารถใช้เว็บไซต์ต่าง ๆ เช่น [GoDaddy](https://www.godaddy.com), [Namecheap](https://www.namecheap.com), หรือ [Google Domains](https://domains.google) เพื่อเช็คราคาและสถานะ
### 2. **เลือกประเภทโดเมน (.com, .net, .org, .co.th, etc.)**
- **.com**: เป็นที่นิยมมากที่สุดสำหรับธุรกิจทั่วไป
- **.net, .org**: ใช้สำหรับองค์กรไม่แสวงหาผลกำไรหรือธุรกิจด้านเทคโนโลยี
- **.co.th**: สำหรับธุรกิจที่ต้องการเจาะตลาดไทย หรือเน้นธุรกิจในประเทศไทย
### 3. **ลงทะเบียนโดเมน**
- **เลือกผู้ให้บริการ**: หลังจากเลือกชื่อโดเมนที่ต้องการแล้ว คุณต้องลงทะเบียนผ่านผู้ให้บริการโดเมน เช่น [GoDaddy](https://www.godaddy.com), [Namecheap](https://www.namecheap.com), หรือ [Google Domains](https://domains.google)
- **กรอกข้อมูล**: คุณจะต้องกรอกข้อมูลส่วนตัวและรายละเอียดการติดต่อ เช่น ชื่อ อีเมล ที่อยู่ ฯลฯ
- **ชำระเงิน**: ราคาของโดเมนจะขึ้นอยู่กับประเภทและระยะเวลา (1 ปี หรือมากกว่านั้น) รวมถึงค่าใช้จ่ายในการต่ออายุทุกปี
### 4. **ตั้งค่า DNS (Domain Name System)**
- เมื่อคุณลงทะเบียนโดเมนแล้ว คุณสามารถตั้งค่า DNS เพื่อให้โดเมนเชื่อมต่อกับเว็บไซต์ หรือเซิร์ฟเวอร์ที่คุณต้องการ
### 5. **ตรวจสอบความพร้อมใช้งานของเว็บไซต์**
- หลังจากตั้งค่า DNS แล้ว คุณสามารถเริ่มสร้างเว็บไซต์และใช้งานโดเมนที่คุณลงทะเบียน
การปิดการใช้งาน App Fineasy และ App Market ในมือถือบางยี่ห้อ ที่ถอนไม่ได้
เปิดมือถือ เข้าเมนู --> 1. การตั้งค่า
2. เข้าเมนู --> แอป
3. การจัดการแอป --> ปิด ใช้ข้อมูลในเบื้องหลัง
4. บังคับให้หยุด
5. จัดการการแจ้งเตือน (ปฎิเสธ จากเขียวเป็นสีเทา)
6. แสดงผลอยู่บนแอพอื่น (ปฎิเสธแล้ว จากเขียวเป็นสีเทา)
7. ข้อมูล ล้างข้อมูล
8. แคช ล้างแคช
9. เข้าเมนูการตั้งค่า -->เครือข่ายโทรศัพท์มือถือ --> การใช้ข้อมูล Sim1 หรือ Sim2 --> การเข้าถึงเครือข่าย --> เลือก app ต้องที่ต้องการปิด -->ปิดใช้งานการเข้าถึงเครือข่าย (ปิดอินเตอร์เน็ต ไม่ให้รับส่งข้อมูล)
-Fineasy
-App Market
-แอปด่วน เป็นต้น
Recent Attachments Function
Code
<?php ssi_recentAttachments(); ?>
Result
ไฟล์ | ข้อความโดย | Downloads | Filesize |
---|---|---|---|
465280863_10163014905312316_8836098738168762510_n.jpg | junjao | 8 | 220.6kB |
465215284_10163014904002316_6018917471819048629_n.jpg | junjao | 8 | 61.29kB |
465044714_10163014905192316_1656383871467830246_n.jpg | junjao | 9 | 125.69kB |
465010475_10163014905237316_6957625700338666945_n.jpg | junjao | 7 | 101.79kB |
472179359_10163571282492316_3748075561922929140_n.jpg | junjao | 9 | 825.37kB |
472421554_10163571281837316_8814308375278401530_n.jpg | junjao | 9 | 1337.15kB |
Screenshot 2024-12-17 085005.png | junjao | 61 | 28.5kB |
Screenshot 2024-12-07 114738.png | junjao | 149 | 88.82kB |
raw-7-12-2567.png | junjao | 147 | 40.83kB |
465010475_10163014905237316_6957625700338666945_n.jpg | junjao | 174 | 154.83kB |
Show Single Poll
Shows a poll in the specified topic.
Code
<?php ssi_showPoll($topicID); ?>
Result
Show Single Post
Fetches a post with a particular IDs. By default will only show if you have permission to the see the board in question. This can be overridden by passing the 2nd parameter as true.
Code
<?php ssi_fetchPosts($postIDs, $isOverride); ?>
Result
Show Single Member
Shows the specified member's name and profile link.
Code
<?php ssi_fetchMember($memberIDs); ?>
Result
Show Group Members
Shows all members in a specified group.
Code
<?php ssi_fetchGroupMembers($groupIDs); ?>
Result
Home Page Sample
This sample uses the following features: ssi_recentTopics(), ssi_logOnline(), ssi_welcome(), and ssi_boardNews(). ssi_recentTopics() is fetched using the array method, to allow further customizations on the output.Code
<?php require("SSI.php"); ?>
<!DOCTYPE html>
<html>
<head>
<title>SSI.php example for home page</title>
<style>
body { font-family: Arial, Tahoma, sans-serif; font-size: 80%; background: #DFDFDF; color: #FFFFFF; margin: 0 }
ul,ol { padding-left: 19px; margin: 0; }
li { font-size: 11px; }
h1,h2,h3 { margin: 0; padding: 0; }
h3 { font-size: 15px; }
a:link,a:visited { color: #FF9000; text-decoration: none; }
a:hover { text-decoration: underline; }
#container { background: #52514E; width: 100%; border: 1px solid midnightblue; line-height: 150%; margin: 0; }
#header,#footer { color: lightgray; background-color: #2A2825; clear: both; padding: .5em; }
#leftbar { background: #DF7E00; float: left; width: 160px; margin: 0; padding: 1em; }
#leftbar a { color: #000000; text-decoration: underline; }
#content { margin-left: 190px; padding: 1em; }
#navigation { float: right; }
#navigation a:link,#navigation a:visited { color: #FF9000; }
</style>
</head>
<body>
<div id="container">
<div id="header">
<div id="navigation">
<a href="#">Link</a> | <a href="#">Link</a> | <a href="#">Link</a> | <a href="#">Link</a> | <a href="#">Link</a>
</div>
<h1 class="header">YourWebsite.com</h1>
</div>
<div id="leftbar">
<h3>Recent Forum Topics</h3>
<ul>
<?php
// Using array method to show shorter display style.
$topics = ssi_recentTopics(8, null, null, 'array');
foreach ($topics as $topic)
{
// Uncomment the following code to get a listing of array elements that SMF provides for this function.
// echo '<pre>', print_r($topic), '</pre>';
echo '
<li><a href=\"', $topic['href'], '\">', $topic['subject'], '</a> ', $txt['by'], ' ', $topics[$i]['poster']['link'], '</li>';
}
unset($topics);
?>
</ul><br>
<h3>Online Users</h3>
<?php ssi_logOnline(); ?>
</div>
<div id="content">
<?php ssi_welcome(); ?><br><br>
<h2>News</h2>
<?php ssi_boardNews(); ?>
</div>
<div id="footer">
<a target="_blank" rel="noopener" rel="license" href="https://creativecommons.org/licenses/publicdomain/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/publicdomain/88x31.png"></a>
This sample website layout is dedicated to the <a target="_blank" rel="noopener" rel="license" href="https://creativecommons.org/licenses/publicdomain/">Public Domain</a>.
</div>
</div>
</body>
</html>