Капча не меняется с новой версией GWAN
Почему эта страница captcha.c
не меняется с новой версией gwan
? (картинка не меняется)
Этот пример отлично работал в старых версиях!
2 ответа
Вот так.
Но httpdate.c
пример работает как положено (меняется каждый раз, когда вы вызываете его), так что это не проблема кеша.
Я бросил вызов команде G-WAN, возможно, вы могли бы сделать это самостоятельно.
Марек прав, другие генераторы изображений работают (data_uri.c
, fractal.c
, charts.c
, так далее.).
captcha.c
Сервлет - единственный, кто использует PRNG, инициализация которого остается постоянной в этом примере (следовательно, постоянные результаты). Вы можете увидеть это в коде, добавив printf()
:
u32 seed = (u32)getns();
prnd_t rnd; // pseudo-random generator (period: 1 << 158)
sw_init(&rnd, seed); // EPOCH time in nano-seconds
printf("seed:%u, sw_rnd:%u getns():%lu\n", seed, sw_rand(&rnd), getns());
Семя всегда равно нулю, потому что результат getns()
является постоянным (это, очевидно, ошибка):
seed:0, sw_rnd:4048109956 getns():1358679437704429568
seed:0, sw_rnd:4048109956 getns():1358679437704429568
seed:0, sw_rnd:4048109956 getns():1358679437704429568
...
Кстати, это хороший пример того, что программист должен найти сам (и сообщить об этом авторам программы).