ʜᴇʀᴏ ᴇxᴘᴇʀᴛ | کارشناس قهرمان – Telegram
ʜᴇʀᴏ ᴇxᴘᴇʀᴛ | کارشناس قهرمان
8.52K subscribers
229 photos
6 videos
7 files
237 links
🏅تبلیغات 👈🏻 @ExpertsAds
Download Telegram
👩‍💻 تکه کد ارسال ایمیل [ Send Email ]
⚠️ این تکه کد به زبان 🔷 نوشته شده است.

/**
* Before running this code, add the following dependency to your pom.xml:
*
* <dependency>
* <groupId>com.sun.mail</groupId>
* <artifactId>jakarta.mail</artifactId>
* <version>2.0.1</version>
* </dependency>
*/

import jakarta.mail.*;
import jakarta.mail.internet.*;
import java.util.Properties;

public class EmailSender {
public static void main(String[] args) {
// Sender's email credentials
final String username = "Hero@info.com";
final String password = "S#h-o6y9e";

// SMTP configuration
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.hero.com");
props.put("mail.smtp.port", "587");

// Create a mail session with authentication
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});

try {
// Create a MimeMessage object
Message message = new MimeMessage(session);

// Set sender email and name
message.setFrom(new InternetAddress("Hero@info.com", "HeroExpert"));

// Set recipient email
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("user@gmail.com"));

// Set subject
message.setSubject("Welcome to Hero");

// Set email body content
message.setText("Thank you for join");

// Send the email
Transport.send(message);

System.out.println("Email sent successfully.");

} catch (Exception e) {
// Show error if sending fails
System.out.println("Email failed: " + e.getMessage());
}
}
}


🌐 @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🎲پایگاه داده اس‌کیو‌ال[SQLDB] چیست ؟

پایگاه داده اس‌کیو‌ال نوعی پایگاه داده رابطه‌ ای است که اطلاعات را در قالب جدول‌ هایی شامل سطر ها (رکورد ها) و ستون‌ ها (ویژگی‌ ها) ذخیره می‌کند. هر جدول نمایانگر داده‌ های مربوط به یک موضوع خاص است و جداول مختلف می‌توانند از طریق کلید های مشخص با یکدیگر ارتباط برقرار کنند. مدیریت این پایگاه داده‌ ها با زبان اس‌کیو‌ال انجام می‌شود، زبانی ساخت‌ یافته، قدرتمند و استاندارد که برای ایجاد جدول‌ ها، درج و ویرایش داده‌ ها، انجام جست‌وجو های دقیق، فیلتر اطلاعات و تعریف روابط بین جداول به کار می‌رود.از جمله پایگاه‌ داده‌ های معروف اس‌کیو‌ال می‌توان به مای‌اس‌کیو‌ال، اس‌کیو‌ال لایت، پستگرس و اوراکل اشاره کرد.

ویژگی‌ های پایگاه داده اس‌کیو‌ال

🟢 ساختارمند و منظم
🟢 پشتیبانی از روابط بین جداول
🟢 قابلیت جست‌وجوی دقیق و سریع
🟢 پشتیبانی از چند کاربر به‌صورت همزمان
🟢 مناسب برای داده‌ های با ساختار مشخص
🟢 رعایت اصول ACID [درستی تراکنش‌ ها]


🌐 @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 تکه‌ کد اعتبارسنجی ایمیل کاربر
⚠️ این تکه کد به زبان 🔷 نوشته شده است

public class EmailValidator {
// Validate email address format
public static String validateEmail(String email) {
if (email == null || email.isEmpty()) {
return "ایمیل نامعتبر است";
}

// Use Java built-in email validation with regex
String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";

if (!email.matches(regex)) {
return "ایمیل نامعتبر است";
}

return "ایمیل معتبر است";
}

// Example usage
public static void main(String[] args) {
String email = "aabrahimi1718@gmail.com";
System.out.println(validateEmail(email));
}
}


🔮 @HeroExpert_ir | کارشناس قهرمان
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤩 فریم‌ورک بلازر [Blazor] چیست؟

بلازر یک فریم‌ورک مدرن و متن‌ باز از مایکرو سافت برای زبان سی‌شارپ است که به توسعه‌ دهندگان امکان می‌دهد با استفاده از زبان سی‌شارپ برنامه‌ های وب تعاملی و تک‌صفحه‌ای بسازند. بلازر برخلاف فریم‌ورک‌ های جاوااسکریپتی مانند ری‌اکت و آنگولار، از WebAssembly بهره می‌برد تا کد ها را مستقیماً در مرورگر اجرا کند یا به صورت سرور بیس فعالیت کند. این فریم‌ورک با اکوسیستم دات‌نت کاملاً یکپارچه است و برای توسعه برنامه‌ های وب مدرن، سریع و واکنش‌گرا بسیار مناسب است.

🔝 مزایای بلازر [Blazor]

هماهنگی کامل با اکوسیستم دات‌نت
توسعه با سی‌شارپ در کلاینت و سرور
اجرای کد سی‌شارپ مستقیم در مرورگر
توسعه سریع با ابزار های ویژال استودیو
ساخت وب تک‌صفحه‌ای بدون نیاز به Js


✉️ @HeroExpert_ir | کارشناس قهرمان
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 تکه کد تولید رمزعبور تصادفی
⚠️ این تکه کد به زبان 🔷 نوشته شده است.

import java.security.SecureRandom;

public class PasswordGenerator {

// Generates a secure random password with given length
public static String generatePassword(int length) {
final String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+";
SecureRandom random = new SecureRandom();
StringBuilder password = new StringBuilder(length);

for (int i = 0; i < length; i++) {
password.append(chars.charAt(random.nextInt(chars.length())));
}

return password.toString();
}

public static void main(String[] args) {
System.out.println(generatePassword(10));
// Example output: aZ9!kQ2@Xp
}
}


⚡️ @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 تکه‌ کد اعتبارسنجی لینک [Url]
⚠️ این تکه کد به زبان 🔷 نوشته شده است
🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.util.regex.Pattern;

public final class UrlUtils {

    // Basic URL format validation
    private static final Pattern VALID_URL = Pattern.compile(
            "^(?i)([a-z][a-z0-9+\\-.]*):\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+([\\w\\-./?%&=]*)?$");

    private UrlUtils() {
        // Prevent instantiation
    }

    public static boolean isValidUrl(String url) {
        if (url == null) return false;

        // Decode URL
        url = URLDecoder.decode(url, StandardCharsets.UTF_8);

        // Validate format and length
        if (!VALID_URL.matcher(url).matches() || url.length() >= 2048) {
            return false;
        }

        // Block "../"
        if (url.contains("../")) return false;

        // Block XSS
        String lower = url.toLowerCase();
        if (lower.contains("javanoscript:") || lower.contains("<noscript>")) {
            return false;
        }

        // Check host has dot
        try {
            URI parsed = new URI(url);
            String host = parsed.getHost();
            if (host == null || !host.contains(".")) {
                return false;
            }
        } catch (URISyntaxException e) {
            return false;
        }

        return true;
    }

     public static void main(String[] args) {
        System.out.println(isValidUrl("https://hero"));     // false
        System.out.println(isValidUrl("https://hero.ac"));  // true
    }
}

🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥
⚡️ @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
⚖️ مقایسه فریم‌ورک Laravel و Django

💡 مقایسه در بان برنامه‌ نویسی

لاراول با زبان پی‌اچ‌پی و جنگو با زبان پایتون توسعه داده شده است. هر دو زبان برای توسعه‌ ی وب استفاده می‌شوند، اما پایتون کاربرد های گسترده‌ تری مثل هوش مصنوعی، داده‌ کاوی، علم داده و اتوماسیون دارد، در حالی که پی‌اچ‌پی بیشتر متمرکز بر توسعه‌ ی وب است.

💡 مقایسه در ساختار و توسعه‌ پذیری

لاراول آزادی عمل بیشتری به توسعه‌ دهنده می‌دهد و برای پروژه‌ هایی که نیاز به انعطاف و خلاقیت دارند بسیار مناسب است. از طرف دیگر، جنگو ساختاری منظم و قانون‌ مند دارد و با ارائه امکانات پیش‌ فرض متعدد، توسعه سریع و مقیاس‌ پذیری بالایی را در پروژه‌ های بزرگ ممکن می‌کند.

💡 مقایسه در بازار کار

در بازار جهانی، جنگو به دلیل همه‌ کاره بودن پایتون و کاربرد های متنوعش از محبوبیت بیشتری برخوردار است. اما در ایران، لاراول به خاطر ریشه و گستردگی پی‌اچ‌پی، فرصت‌ های شغلی بیشتری دارد و بسیاری از شرکت‌ ها و استارتاپ‌ ها از آن استفاده می‌کنند.

💡 مقایسه در سرعت توسعه

لاراول با ابزار هایی مانند آرتیسان و سیستم قالب‌ بندی بلید به توسعه‌ دهنده کمک می‌کند سریع‌تر پروژه‌ها را بسازد. جنگو نیز با داشتن ساختار یکپارچه و کتابخانه‌ های آماده، زمان توسعه را کاهش می دهد، به‌ویژه در پروژه‌ های سازمانی.


📣 @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🎲 پروتکل آی‌سی‌ام‌پی [ICMP] چیست ؟

پروتکل ICMP یکی از بخش‌ های اصلی خانواده پروتکل‌ های اینترنتی است که برای گزارش خطا و مدیریت پیام‌ های کنترلی در شبکه استفاده می‌شود. این پروتکل خودش داده‌ای جا به‌ جا نمی‌ کند، بلکه در کنار پروتکل‌ هایی مثل ‌IP و TCP کار میکند تا در صورت بروز مشکل، پیام‌ های مربوط به خطا یا وضعیت مسیر ارسال شوند. معروف‌ ترین استفاده از این پروتکل در دستور پینگ است، که برای بررسی وضعیت ارتباط دو دستگاه در شبکه به‌کار می‌ رود.

🔝 ویژگی‌ های پروتکل ICMP

🌟 ساده، سبک و کم‌ مصرف
🌟 کاربرد در عیب‌ یابی شبکه
🌟 بررسی دسترس‌ پذیری (Ping)
🌟 گزارش خطا (مانند TimeOut)
🌟 بدون اتصال (Connectionless)


📱 @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Media is too big
VIEW IN TELEGRAM
🔗 مینی پروژه کوتاه‌ کننده لینک - نسخه ۲

ویژگی‌های نسخه دوم :

تست‌نویسی با PHPUnit
ساختار اختصاصی MVC
رابط کاربری واکنش‌گرا و ریسپانسیو
مستندات کامل برای توسعه‌ دهندگان
امکان مدیریت لینک‌ ها برای هر کاربر
پشتیبانی از دو زبان فارسی و انگلیسی
افزوده شدن پنل کاربری با ورود از طریق ایمیل

🛠 تکنولوژی‌ های استفاده‌ شده :

شامل [ 🎲 | 🎲 | 🎲 | 🎲 | 🎲 | 🎲 ]


#⃣ Download : Zip File
🧑‍💻 GitHub : Url-Shortener
✈️ Chanel : @HeroExpert_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 تکه کد اپلود فایل [ Upload File ]
⚠️ این تکه کد به زبان 🔷 نوشته شده است.

import javax.servlet.http.Part;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.*;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.net.URLConnection;

public class UploadUtil {

// Secure file upload
public static String secureUpload(
Part file,
List<String> allowedMimeTypes,
List<String> allowedExtensions,
long maxSize,
String uploadDir
) {
try {
// Check for upload errors
if (file == null || file.getSize() == 0) {
return null;
}

// Check file size
if (file.getSize() > maxSize) {
return null;
}

// Check MIME type using URLConnection
String mimeType;
try (InputStream is = file.getInputStream()) {
byte[] buffer = new byte[1024];
int bytesRead = is.read(buffer);
mimeType = URLConnection.guessContentTypeFromStream(
new java.io.ByteArrayInputStream(buffer, 0, bytesRead)
);
}
if (mimeType == null || !allowedMimeTypes.contains(mimeType)) {
return null;
}

// Check file extension
String originalName = Paths.get(file.getSubmittedFileName()).getFileName().toString();
int dotIndex = originalName.lastIndexOf('.');
if (dotIndex == -1) return null;
String ext = originalName.substring(dotIndex + 1).toLowerCase();

if (!allowedExtensions.contains(ext)) {
return null;
}

// Prevent double extensions like .php or .phtml
if (originalName.matches(".*\\.(php[0-9]?|phtml)$")) {
return null;
}

// Generate unique filename
String safeName = UUID.randomUUID().toString().replace("-", "").substring(0, 16) + "." + ext;

// Ensure upload directory exists
Path uploadPath = Paths.get(uploadDir);
if (!Files.exists(uploadPath)) {
Files.createDirectories(uploadPath);
}

// Move uploaded file
Path destination = uploadPath.resolve(safeName);
try (InputStream input = file.getInputStream()) {
Files.copy(input, destination, StandardCopyOption.REPLACE_EXISTING);
}

// Return saved filename
return safeName;

} catch (IOException e) {
return null;
}
}

// Overloaded method with defaults
public static String secureUpload(Part file) {
return secureUpload(
file,
Arrays.asList("image/jpeg", "image/png"),
Arrays.asList("jpg", "jpeg", "png"),
2 * 1024 * 1024,
System.getProperty("user.dir") + "/uploads"
);
}
}


⚡️ @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🧠 یادگیری نظارت‌ نشده [UL] چیست؟

یادگیری نظارت‌ نشده یکی از مهم‌ ترین شاخه‌ های یادگیری ماشین [ML] است که برخلاف یادگیری نظارت‌ شده [SL]، از داده‌ های بدون برچسب برای آموزش استفاده می‌کند. در این روش، مدل تلاش می‌کند الگو ها، ساختار ها یا روابط پنهان را از دل داده‌ های خام کشف کند، بدون آنکه بداند خروجی صحیح چیست! به عنوان مثال، اگر به مدل مجموعه‌ ای از تصاویر حیوانات بدهیم، سعی می‌کند آن‌ ها را بر اساس شباهت‌ ها خوشه‌ بندی کند، بدون اینکه بداند کدام تصویر گربه است و کدام سگ، این نوع یادگیری در تحلیل داده‌ های بزرگ، کشف گروه‌ های پنهان، فشرده‌ سازی داده و شناسایی ناهنجاری‌ ها کاربرد فراوان دارد.

🔝 ویژگی‌ های یادگیری نظارت‌ نشده [UL]

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


⚡️ @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 تکه‌ کد اعتبارسنجی شماره موبایل
⚠️ این تکه‌ کد برای ش.م ایران 🇮🇷 می‌باشد
⚠️ این تکه کد به زبان 🔷 نوشته شده است

import java.util.regex.*;

public class MobileValidator {

public static String isValidMobile(String mobile) {
// Remove all non-numeric characters except '+'
mobile = mobile.replaceAll("[^0-9+]", "");

// Match Iranian mobile number format: either starting with 09 or +989
Pattern pattern = Pattern.compile("^(09\\d{9}|\\+989\\d{9})$");
Matcher matcher = pattern.matcher(mobile);

if (matcher.matches()) {
return "شماره موبایل معتبر است"; // Mobile number is valid
} else {
return "شماره موبایل نامعتبر است"; // Mobile number is invalid
}
}

public static void main(String[] args) {
System.out.println(isValidMobile("+989123456789")); // Valid
System.out.println(isValidMobile("09123456789")); // Valid
System.out.println(isValidMobile("01123456789")); // Invalid
}
}


🔮 @HeroExpert_ir | کارشناس قهرمان
Please open Telegram to view this post
VIEW IN TELEGRAM
3
📩 پروتکل آی‌اِم‌ای‌پی [IMAP] چیست؟
🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦
پروتکل IMAP یا Internet Message Access Protocol یک پروتکل استاندارد برای دسترسی به ایمیل‌ ها روی سرور است. برخلاف پروتکل POP3 که ایمیل‌ ها را دانلود و معمولاً از سرور حذف می‌کند، این پروتکل به شما اجازه می‌دهد پیام‌ ها را مستقیماً روی سرور مشاهده، مدیریت و همگام‌ سازی کنید. این یعنی اگر با چند دستگاه ایمیلتان را چک کنید، همه‌ جا یکسان دیده می‌شود.

🔝 ویژگی‌ های پروتکل IMAP

🟪 ذخیره ایمیل‌ ها روی سرور
🟪 همگام‌ سازی کامل بین دستگاه‌ ها
🟪 امکان مدیریت پوشه‌ ها و برچسب‌ ها
🟪 مشاهده ایمیل بدون نیاز به دانلود کامل
🟪 مناسب برای دسترسی از چندین دستگاه

🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦
📣 @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 تکه کد دریافت IP کاربر [ User IP ]
⚠️ این تکه کد به زبان 🟠 نوشته شده است.
🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥
# Get real user IP with extra checks
function getUserIP() {
$ipKeys = [
# Cloudflare
'HTTP_CF_CONNECTING_IP',
# Nginx proxy / some CDN
'HTTP_X_REAL_IP',
# Proxy chain
'HTTP_X_FORWARDED_FOR',
'HTTP_CLIENT_IP',
'REMOTE_ADDR'
];

foreach ($ipKeys as $key) {
if (!empty($_SERVER[$key])) {
$ipList = explode(',', $_SERVER[$key]);
foreach ($ipList as $ip) {
$ip = trim($ip);
if (filter_var($ip, FILTER_VALIDATE_IP)) {
return $ip;
}
}
}
}
return 'UNKNOWN';
}

# Get user's browser info
function getUserAgent() {
return $_SERVER['HTTP_USER_AGENT'] ?? 'UNKNOWN';
}

# Example usage
$userIP = getUserIP();
$userAgent = getUserAgent();

echo "User IP: " . $userIP . "<br>";
echo "User Agent: " . $userAgent;

🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥
🌐 @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🚩 افزونه Node.js برای VsCode

🔢 افزونه ESLint
⬇️ تعداد نصب 44 میلیون
🔢 افزونه Docker
⬇️ تعداد نصب 46 میلیون
🔢 افزونه Live Server
⬇️ تعداد نصب 59 میلیون
🔢 افزونه REST Client
⬇️ تعداد نصب 6 میلیون
🔢 افزونه Deprecated
⬇️ تعداد نصب 10 میلیون
🔢 افزونه Path Intellisense
⬇️ تعداد نصب 15 میلیون
🔢 افزونه npm Intellisense
⬇️ تعداد نصب 10 میلیون

✉️ @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 تکه کد دریافت IP کاربر [ User IP ]
⚠️ این تکه کد به زبان 🟩 نوشته شده است.
🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥
import os
import re

# Get real user IP with extra checks
def get_user_ip():
ip_keys = [
# Cloudflare
"HTTP_CF_CONNECTING_IP",
# Nginx proxy / some CDN
"HTTP_X_REAL_IP",
# Proxy chain
"HTTP_X_FORWARDED_FOR",
"HTTP_CLIENT_IP",
"REMOTE_ADDR"
]

for key in ip_keys:
value = os.environ.get(key)
if value:
ip_list = [ip.strip() for ip in value.split(",")]
for ip in ip_list:
if is_valid_ip(ip):
return ip
return "UNKNOWN"

# Validate IP format (both IPv4 and IPv6)
def is_valid_ip(ip):
ip_regex = re.compile(
r"^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?:\.(?!$)|$)){4}$"
r"|"
r"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::1)$"
)
return bool(ip_regex.match(ip))

# Get user's browser info
def get_user_agent():
return os.environ.get("HTTP_USER_AGENT", "UNKNOWN")

# Example usage
if __name__ == "__main__":
user_ip = get_user_ip()
user_agent = get_user_agent()

print(f"User IP: {user_ip}")
print(f"User Agent: {user_agent}")

🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥
🌐 @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤩 پلتفرم هروکو [Heroku] چیست؟

هروکو یک پلتفرم ابری (PaaS) است که به توسعه‌ دهندگان این امکان را می‌دهد اپلیکیشن‌ های خود را بدون نیاز به مدیریت زیرساخت سرور، به‌ راحتی دیپلوی، اجرا و مقیاس‌ پذیر کنند. این پلتفرم از زبان‌ های برنامه‌ نویسی مختلف مانند Node.js، PHP، Python، Ruby و Java پشتیبانی می‌کند و با ساده‌ سازی فرآیند انتشار و مدیریت اپلیکیشن، زمان توسعه و نگهداری را به‌ طور چشمگیری کاهش می‌دهد. هروکو برای استارتاپ‌ ها و پروژه‌ های کوچک تا متوسط انتخابی محبوب است، زیرا محیطی آماده برای تست، اجرا و مقیاس‌ پذیری سریع فراهم می‌کند.

🔝 ویژگی‌ های پلتفرم هروکو [Heroku]

🟢 اینتگریشن آسان با ابزارها جانبی
🟢 امکان مقیاس‌ پذیری و انعطاف‌ پذیری
🟢 محیط ابری بدون نیاز به مدیریت سرور
🟢 دیپلوی سریع اپلیکیشن با یک دستور ساده
🟢 پشتیبانی از زبان‌های برنامه‌ نویسی متنوع


📣@HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 تکه کد دریافت IP کاربر [ User IP ]
⚠️ این تکه کد به زبان ⚫️ نوشته شده است.
🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥
package main

import (
"fmt"
"net"
"os"
"strings"
)

// getUserIP
func getUserIP() string {
ipKeys := []string{
"HTTP_CF_CONNECTING_IP",
// Cloudflare
"HTTP_X_REAL_IP",
// Nginx proxy / some CDN
"HTTP_X_FORWARDED_FOR",
// Proxy chain
"HTTP_CLIENT_IP",
"REMOTE_ADDR",
}

for _, key := range ipKeys {
value := os.Getenv(key)
if value == "" {
continue
}

// Split by comma in case of multiple IPs (proxy chain)
for _, ip := range strings.Split(value, ",") {
ip = strings.TrimSpace(ip)
if parsedIP := net.ParseIP(ip); parsedIP != nil {
return ip
}
}
}

return "UNKNOWN"
}

// getUserAgent
func getUserAgent() string {
if ua := os.Getenv("HTTP_USER_AGENT"); ua != "" {
return ua
}
return "UNKNOWN"
}

func main() {
userIP := getUserIP()
userAgent := getUserAgent()

fmt.Printf("User IP: %s\n", userIP)
fmt.Printf("User Agent: %s\n", userAgent)
}

🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥
🌐 @HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
📁 پروژه کتابخانه هیروکیوآر [HeroQR]

هیروکیوآر یک کتابخانه به زبان پی‌اچ‌پی است که به شما این امکان را می‌دهد تا کیوآرکد های سفارشی با انواع داده‌ها بسازید. همچنین این کتابخانه امکان سفارشی‌ سازی رنگ‌ ها، نشانگر ها، برچسب‌ ها، اندازه‌ ها و لوگو ها را فراهم می‌کند و خروجی در فرمت‌ های مختلف را پشتیبانی می‌کند.

🔝 ویژگی‌ های هیروکیوآر [HeroQR]

سفارشی‌ سازی پیشرفته
سازگار با فریم‌ورک‌ لاراول
کاملاً ماژولار و انعطاف‌ پذیر
تولید کیوآرکد با انواع داده‌ها
پشتیبانی از فرمت‌های مختلف
قابلیت اعتبارسنجی خودکار داده
طراحی ساده و استفاده راحت و آسان

▪️ مشاهده در [GitHub] : HeroQR
🤩 مشاهده در [Packagist] : HeroQR

✉️@HeroExpert_ir | کارشناس تکنولوژی
Please open Telegram to view this post
VIEW IN TELEGRAM
1