cari

Rumah  >  Soal Jawab  >  teks badan

php - Tidak boleh menghantar beberapa kali dalam masa yang ditetapkan?

Sebagai contoh, jika 5 teg dijana dalam masa satu minit, ia akan menggesa "Operasi yang kerap, sila masukkan kod pengesahan".

Bagaimana saya harus menanganinya?

仅有的幸福仅有的幸福2767 hari yang lalu751

membalas semua(4)saya akan balas

  • PHPz

    PHPz2017-05-27 17:44:53

    Ini sangat mudah untuk dilaksanakan menggunakan redis Kunci digunakan untuk menyimpan bilangan penyerahan Jika kunci dikira.
    Dapatkan kiraan daripada redis setiap kali anda menyerahkan

    1. Jika kiraan kosong, tetapkan nilai kiraan kepada 1, tetapkan tamat masa kepada satu minit, dan serahkan seperti biasa;

    2. Jika nilai kiraan tidak kosong dan lebih besar daripada atau sama dengan 5, mesej ralat akan dilaporkan "Operasi adalah kerap, sila masukkan kod pengesahan"
    3. Jika nilai kiraan tidak kosong dan kurang daripada 5, ia akan diserahkan seperti biasa dan nilai kiraan akan ditambah satu.
    4. balas
      0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-27 17:44:53

    Rekodkan masa penjanaan setiap teg
    Jika peraturannya ialah hanya 4 teg boleh dijana dalam satu minit, yang kelima akan menggesa ralat
    Sejurus sebelum menambah yang kelima, Bandingkan masa penjanaan yang pertama daripada empat yang terbaharu dengan masa semasa untuk melihat sama ada ia melebihi 60 saat Jika tidak, ralat akan dilaporkan.

    balas
    0
  • 怪我咯

    怪我咯2017-05-27 17:44:53

    Gunakan sesi untuk merekodkan dua nilai, satu ialah bilangan penyerahan $count dan satu lagi ialah masa penyerahan $time. ++$count==5 [Syarat 1] dikesan setiap kali ia diserahkan, time()-$time>=60 saat [Syarat 2]. cuma syaratnya dipenuhi 1 maka $count=0;$time=time();

    balas
    0
  • 世界只因有你

    世界只因有你2017-05-27 17:44:53

    Adalah disyorkan untuk menggunakan operasi cache redis

    <?php
    try {
      $redis = new Redis(); // 创建实例
      $redis->connect(REDIS_HOST, REDIS_PORT, REDIS_TIMEOUT); // 连接
      $redis->ping(); // 确认连接已经成功
    } catch (Exception $e) {
      die('Can not connect Redis.');
    }
    
    $incrkey = 'TEST:用户:分钟'; // 每分钟缓存key
    $incrValue = $redis->incr($incrkey);
    if ($incrValue == 1) {
      // 设定缓存时间(键名,缓存时间[单位:秒])
      $redis->expire($incrkey, 60);
    } else if ($incrValue >= 5) {
      die('操作频繁,请输入验证码');
    }

    balas
    0
  • Batalbalas