04
Май
2020

Не понимаю поведения сессии

Генерится каптча:

<?php 
session_start();
$code = generateRandomString();
$user = $_SESSION['user'][5];
$_SESSION['captcha'][$user] = $code;
header("Content-Type: image/jpeg");

get_checkcode_picture($code);
die;

function get_checkcode_picture($code){
    ...
    imagejpeg($img);
}

Получаю так:

...
<div class="form-group form-captcha">
  <img class="form-captcha__image" src="./theme/base/captcha.php" width=50 height=30>
  <div class="form-captcha__refresh">
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="16" height="16">
                                        <path fill="currentColor" d="M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z">
                                        </path>
                                    </svg>
  </div>
  <div class="form-group form-captcha__input">
    <label for="captcha" class="control-label d-none">Код, показанный на изображении</label>
    <input type="text" name="captcha" maxlength="5" size=5 required="required" id="captcha" class="form-control captcha" placeholder="*****" autocomplete="off" value="">
    <div class="invalid-feedback">Не вiрний код, спробуйте ще раз.</div>
  </div>
</div>
...

В выше указанном HTML есть js событие:

   $(document).on('keydown', function(event) {
        if (event.shiftKey && event.key == 'A') {
            console.log(JSON.parse('<?php echo json_encode(array("ses" => $_SESSION['captcha'][$_SESSION['user'][5]])); ?>').ses)
        }
    })

Проблема:

При прогрузке формы я вижу картинку, и нажимаю Shift+A. Каритнка и текст не совпадают. Если обновить странчику, то сгенерится новая картинка, и в сессии (при нажатии на Shift+A будет результат со старой картинки).

Почему так может быть? Какие предположения?

Источник: https://ru.stackoverflow.com/questions/1119866/%D0%9D%D0%B5-%D0%BF%D0%BE%D0%BD%D0%B8%D0%BC%D0%B0%D1%8E-%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81%D0%B5%D1%81%D1%81%D0%B8%D0%B8

Тебе может это понравится...

Добавить комментарий