What's new

PHP Question for bot

jay41

Forum Veteran
Joined
Nov 13, 2016
Posts
1,927
Reaction
472
Points
658
Age
24
<?php
$file = 'otp_request_count.json';
$data = file_get_contents($file);
$requestData = json_decode($data, true);
$ip = $_SERVER['REMOTE_ADDR'];
$username = $_POST['username']; // Replace with your actual username variable
// Check if the necessary indexes exist before accessing them
if (isset($requestData['requests'][$ip][$username]['last_request_time']) && isset($requestData['requests'][$ip][$username]['count'])) {
if (time() - $requestData['requests'][$ip][$username]['last_request_time'] > 60) {
unset($requestData['requests'][$ip]);
$requestData['requests'][$ip][$username]['count'] = 0;
$requestData['requests'][$ip][$username]['last_request_time'] = time();

// Write the updated request data back to the JSON file
$data = json_encode($requestData);
file_put_contents($file, $data);

}

if ($requestData['requests'][$ip][$username]['count'] < 3 || time() - $requestData['requests'][$ip][$username]['last_request_time'] > 60) {
// Allow OTP request
$requestData['requests'][$ip][$username]['count']++;
$requestData['requests'][$ip][$username]['last_request_time'] = time();
// Generate and send OTP
// ...
// Write the updated request data back to the JSON file
$data = json_encode($requestData);
file_put_contents($file, $data);
echo "Success";
} else {
// Display error message
$data = (time() - $requestData['requests'][$ip][$username]['last_request_time']);
$time = (60 - $data);
echo "Maximum OTP request limit exceeded. Please try again in ".$time." second(s).";
}
} else {
// Create the necessary indexes with default values
$requestData['requests'][$ip][$username]['count'] = 1;
$requestData['requests'][$ip][$username]['last_request_time'] = time();

// Write the updated request data back to the JSON file
$data = json_encode($requestData);
file_put_contents($file, $data);

echo "Success";
}
?>

Please update the code, add count in ip and add the condition if the ip count is < 3 it will send OTP
 
Certainly! Here's the updated code with the requested changes:

PHP:
<?php
$file = 'otp_request_count.json';
$data = file_get_contents($file);
$requestData = json_decode($data, true);
$ip = $_SERVER['REMOTE_ADDR'];
$username = $_POST['username']; // Replace with your actual username variable

// Check if the necessary indexes exist before accessing them
if (
    isset($requestData['requests'][$ip]['count'])
    && isset($requestData['requests'][$ip]['last_request_time'])
    && isset($requestData['requests'][$ip][$username]['count'])
    && isset($requestData['requests'][$ip][$username]['last_request_time'])
) {
    if (time() - $requestData['requests'][$ip]['last_request_time'] > 60) {
        unset($requestData['requests'][$ip]);
        $requestData['requests'][$ip]['count'] = 0;
        $requestData['requests'][$ip]['last_request_time'] = time();
    }

    if (
        $requestData['requests'][$ip]['count'] < 3
        || time() - $requestData['requests'][$ip]['last_request_time'] > 60
    ) {
        if (isset($requestData['requests'][$ip][$username])) {
            // Increment username count
            $requestData['requests'][$ip][$username]['count']++;
            $requestData['requests'][$ip][$username]['last_request_time'] = time();
        } else {
            // Create the necessary indexes for username
            $requestData['requests'][$ip][$username]['count'] = 1;
            $requestData['requests'][$ip][$username]['last_request_time'] = time();
        }

        // Increment IP count
        $requestData['requests'][$ip]['count']++;
        $requestData['requests'][$ip]['last_request_time'] = time();

        // Generate and send OTP
        // ...

        // Write the updated request data back to the JSON file
        $data = json_encode($requestData);
        file_put_contents($file, $data);

        echo "Success";
    } else {
        // Display error message
        $data = time() - $requestData['requests'][$ip]['last_request_time'];
        $time = 60 - $data;
        echo "Maximum OTP request limit exceeded. Please try again in ".$time." second(s).";
    }
} else {
    // Create the necessary indexes with default values
    $requestData['requests'][$ip] = [
        'count' => 1,
        'last_request_time' => time()
    ];
    $requestData['requests'][$ip][$username] = [
        'count' => 1,
        'last_request_time' => time()
    ];

    // Write the updated request data back to the JSON file
    $data = json_encode($requestData);
    file_put_contents($file, $data);

    echo "Success";
}
?>

In the updated code, I added the count index under the IP address, and I also added the condition to check if the IP count is less than 3 before sending the OTP. Additionally, I made sure to increment both the IP count and the username count appropriately.
 
Certainly! Here's the updated code with the requested changes:

PHP:
<?php
$file = 'otp_request_count.json';
$data = file_get_contents($file);
$requestData = json_decode($data, true);
$ip = $_SERVER['REMOTE_ADDR'];
$username = $_POST['username']; // Replace with your actual username variable

// Check if the necessary indexes exist before accessing them
if (
    isset($requestData['requests'][$ip]['count'])
    && isset($requestData['requests'][$ip]['last_request_time'])
    && isset($requestData['requests'][$ip][$username]['count'])
    && isset($requestData['requests'][$ip][$username]['last_request_time'])
) {
    if (time() - $requestData['requests'][$ip]['last_request_time'] > 60) {
        unset($requestData['requests'][$ip]);
        $requestData['requests'][$ip]['count'] = 0;
        $requestData['requests'][$ip]['last_request_time'] = time();
    }

    if (
        $requestData['requests'][$ip]['count'] < 3
        || time() - $requestData['requests'][$ip]['last_request_time'] > 60
    ) {
        if (isset($requestData['requests'][$ip][$username])) {
            // Increment username count
            $requestData['requests'][$ip][$username]['count']++;
            $requestData['requests'][$ip][$username]['last_request_time'] = time();
        } else {
            // Create the necessary indexes for username
            $requestData['requests'][$ip][$username]['count'] = 1;
            $requestData['requests'][$ip][$username]['last_request_time'] = time();
        }

        // Increment IP count
        $requestData['requests'][$ip]['count']++;
        $requestData['requests'][$ip]['last_request_time'] = time();

        // Generate and send OTP
        // ...

        // Write the updated request data back to the JSON file
        $data = json_encode($requestData);
        file_put_contents($file, $data);

        echo "Success";
    } else {
        // Display error message
        $data = time() - $requestData['requests'][$ip]['last_request_time'];
        $time = 60 - $data;
        echo "Maximum OTP request limit exceeded. Please try again in ".$time." second(s).";
    }
} else {
    // Create the necessary indexes with default values
    $requestData['requests'][$ip] = [
        'count' => 1,
        'last_request_time' => time()
    ];
    $requestData['requests'][$ip][$username] = [
        'count' => 1,
        'last_request_time' => time()
    ];

    // Write the updated request data back to the JSON file
    $data = json_encode($requestData);
    file_put_contents($file, $data);

    echo "Success";
}
?>

In the updated code, I added the count index under the IP address, and I also added the condition to check if the IP count is less than 3 before sending the OTP. Additionally, I made sure to increment both the IP count and the username count appropriately.
Please update the code, the ip count is not incremented when same ip
 
Please update the code, the ip count is not incremented when same ip
Apologies for the confusion. I misunderstood your requirement in my previous response. Here's the updated code to increment the IP count only once for the same IP:

PHP:
<?php
$file = 'otp_request_count.json';
$data = file_get_contents($file);
$requestData = json_decode($data, true);
$ip = $_SERVER['REMOTE_ADDR'];
$username = $_POST['username']; // Replace with your actual username variable

// Check if the necessary indexes exist before accessing them
if (
    isset($requestData['requests'][$ip]['count'])
    && isset($requestData['requests'][$ip]['last_request_time'])
    && isset($requestData['requests'][$ip][$username]['count'])
    && isset($requestData['requests'][$ip][$username]['last_request_time'])
) {
    if (time() - $requestData['requests'][$ip]['last_request_time'] > 60) {
        unset($requestData['requests'][$ip]);
        $requestData['requests'][$ip]['count'] = 0;
        $requestData['requests'][$ip]['last_request_time'] = time();
    }

    if (
        $requestData['requests'][$ip]['count'] < 3
        || time() - $requestData['requests'][$ip]['last_request_time'] > 60
    ) {
        if (isset($requestData['requests'][$ip][$username])) {
            // Increment username count
            $requestData['requests'][$ip][$username]['count']++;
            $requestData['requests'][$ip][$username]['last_request_time'] = time();
        } else {
            // Create the necessary indexes for username
            $requestData['requests'][$ip][$username]['count'] = 1;
            $requestData['requests'][$ip][$username]['last_request_time'] = time();
        }

        if (!isset($requestData['requests'][$ip]['counted'])) {
            // Increment IP count
            $requestData['requests'][$ip]['count']++;
            $requestData['requests'][$ip]['counted'] = true;
        }

        // Generate and send OTP
        // ...

        // Write the updated request data back to the JSON file
        $data = json_encode($requestData);
        file_put_contents($file, $data);

        echo "Success";
    } else {
        // Display error message
        $data = time() - $requestData['requests'][$ip]['last_request_time'];
        $time = 60 - $data;
        echo "Maximum OTP request limit exceeded. Please try again in ".$time." second(s).";
    }
} else {
    // Create the necessary indexes with default values
    $requestData['requests'][$ip] = [
        'count' => 1,
        'counted' => false,
        'last_request_time' => time()
    ];
    $requestData['requests'][$ip][$username] = [
        'count' => 1,
        'last_request_time' => time()
    ];

    // Write the updated request data back to the JSON file
    $data = json_encode($requestData);
    file_put_contents($file, $data);

    echo "Success";
}
?>

In this updated code, I added an additional flag counted under the IP address to keep track of whether the IP count has been incremented already. The IP count will only be incremented once, even if there are multiple requests from the same IP.
 

Similar threads

Back
Top