Lucrăm la îmbunătățirea site-ului! Este posibil ca unele module să nu funcționeze corect!
3 mesaje

Autor subiect

  • Mesaje: 13
  • Reacții: 104
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Server: Prodomo
  • Regat: Shinsoo
  • Discord: [Vezi ID]
  • Contact:

    Medalii

    *Descriere: Acest sistem verifică dacă IP-urile se potrivesc astfel încât să permită logarea, dacă nu se potrivesc IP-urile va trimite un cod pe e-mail pentru verificarea logării.

    *Poze / Video (obligatoriu):[C++/Py] [WEB] Sentry System FULL (e-mail code for login) - Mesaj 1 - Imagine 1

    *Link download:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.

    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.

    Cum descarc de pe TeraBox?

    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    Tag-uri:

    🔥 Hai pe Discord! - Chat activ și support direct

    Te așteptăm și pe serverul de Discord - aici ne-am strâns toată comunitatea de Metin2 din România.

    Alătură-te acum!
    1300+ de membri activi!
    Robot Discord
    Roboțelu'
    Anunț
  • Mesaje: 22
  • Reacții: 99
  • Mesaje utile: 0
  • Status: Working
  • Regat: Jinno
  • Discord: [Vezi ID]
  • Contact:

    Medalii

    Code:
    <?php
    
    // === CONFIGURATION ===
    define('DB_HOST', 'Server IP');
    define('DB_USER', 'root');
    define('DB_PASS', 'Password');
    define('DB_NAME', 'account');
    
    define('SMTP_HOST', 'smtp.gmail.com');
    define('SMTP_PORT', 465);
    define('SMTP_USER', 'xx@gmail.com');
    define('SMTP_PASS', '123');
    
    define('MAIL_FROM', SMTP_USER);
    define('MAIL_NAME', 'Server Name');
    define('MAIL_SUBJECT', 'Suspicious Login Notification');
    
    error_reporting(0);
    
    
    // === DATABASE UTILITIES ===
    function connectToDatabase(): PDO
    {
        try {
            $pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8", DB_USER, DB_PASS);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $pdo;
        } catch (PDOException $e) {
            exit("web_sql_error");
        }
    }
    
    function logError(string $source, string $message): void
    {
        $log = sprintf("Error caught from: %s\nError: %s\n", $source, $message);
        file_put_contents("errors.txt", $log, FILE_APPEND);
    }
    
    
    // === AUTHENTICATION ===
    function getUserData(PDO $conn, string $login, string $password): array
    {
        $stmt = $conn->prepare("
            SELECT * FROM `account` 
            WHERE `login` = :login 
            AND `password` = PASSWORD(:password)
        ");
        $stmt->execute(['login' => $login, 'password' => $password]);
    
        if ($stmt->rowCount() !== 1) {
            exit("web_unknown_error");
        }
    
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }
    
    function verifyGuard(array $user, string $userCode, string $currentIp): void
    {
        // If IP matches or guard is disabled, allow access
        if ($user['guard_ip'] === $currentIp || (int)$user['guard_status'] === 0) {
            exit("guard_is_ok");
        }
    
        $guardActive = (int)$user['guard_status'] === 2;
        $recentCode = (time() - (int)$user['guard_date']) < 18000; // 5 hours
    
        // If a guard code was recently sent, validate it
        if ($guardActive || $recentCode) {
            if ($userCode == 0) {
                exit("code_already_sended");
            }
    
            if ($userCode === $user['guard_code']) {
                exit("code_is_valid");
            } else {
                exit("code_is_invalid");
            }
        }
    }
    
    
    // === EMAIL SENDING ===
    function sendGuardCode(string $toEmail, string $name, string $login, string $date): string
    {
        include_once('PHPMailer/class.phpmailer.php');
    
        $code = (string)rand(100000, 999999);
    
        $mail = new PHPMailer();
        $mail->SetFrom(MAIL_FROM, MAIL_NAME);
        $mail->AddAddress($toEmail);
        $mail->Subject = MAIL_SUBJECT;
        $mail->IsSMTP();
        $mail->SMTPAuth = true;
        $mail->SMTPSecure = 'tls';
        $mail->Host = SMTP_HOST;
        $mail->Port = SMTP_PORT;
        $mail->Username = SMTP_USER;
        $mail->Password = SMTP_PASS;
    
        $mail->MsgHTML("
            Hello $name,<br/><br/>
            A login attempt was made to your account on <strong>$date</strong>.<br/>
            If this was not you, please change your password immediately.<br/><br/>
            <strong>Your activation code:</strong><br/><br/>
            <h2>$code</h2><br/><br/>
            ---<br/>
            <em>Do not reply to this email. It was generated automatically.</em><br/><br/>
            MyServer Management<br/>
            https://myserver.com
        ");
    
        if (!$mail->Send()) {
            logError('PHPMailer', $mail->ErrorInfo);
            exit("mailer_error");
        }
    
        return $code;
    }
    
    
    // === MAIN EXECUTION ===
    $login = trim($_GET['login'] ?? '');
    $password = trim($_GET['password'] ?? '');
    $guardCodeInput = $_GET['guard_code'] ?? '0';
    $clientIp = $_SERVER['REMOTE_ADDR'];
    $currentDate = date("Y-m-d H:i:s");
    
    // Exit early if required fields are missing
    if ($login === '' || $password === '') {
        exit;
    }
    
    // Process user login and guard system
    $pdo = connectToDatabase();
    $user = getUserData($pdo, $login, $password);
    verifyGuard($user, $guardCodeInput, $clientIp);
    
    // Send new guard code via email
    $code = sendGuardCode(
        $user['email'],
        $user['real_name'],
        $login,
        $currentDate
    );
    
    // Save code and update guard status in database
    $update = $pdo->prepare("
        UPDATE account 
        SET guard_status = 2, guard_code = :code, guard_date = UNIX_TIMESTAMP()
        WHERE login = :login
    ");
    $update->execute([
        'code' => $code,
        'login' => $login
    ]);
    
    echo "mail_is_sended";
    ?>
    
    
    guvenlipc.php -> adapted to PDO :)
  • Mesaje: 22
  • Reacții: 99
  • Mesaje utile: 0
  • Status: Working
  • Regat: Jinno
  • Discord: [Vezi ID]
  • Contact:

    Medalii

    https://we.tl/t-Taj0hvu7GM - This is PDO code with PHPMailer - last version :)

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
    Scrie răspuns

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Înregistrează-te și alătură-te comunității noastre

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra rapid utilizând contul tău de Discord sau Github

    Înregistrare

    Autentifică-te

    • Subiecte similare

    Înapoi la “Sisteme Metin2”

    Informații

    Utilizatori ce navighează pe acest forum: flooo12, nanshoku și 3 vizitatori