function loadImages(srcs) {
return new Promise(done => {
const result = [];
const total = srcs.length;
let loaded = 0;
function onload(event, i) {
loaded++;
result[i] = event.type === 'error' ? new Error(event.target) : event.target;
if (loaded === total) done(result);
}
for (let i = 0; i < total; i++) {
const img = new Image();
img.addEventListener('load', (event) => onload(event, i));
img.addEventListener('error', (event) => onload(event, i));
img.src = srcs[i];
}
});
}
async function fadeInOutImages(container, images, showDuration, startFrom = 0) {
images = (await loadImages(images)).filter(img => !(img instanceof Error));
const total = images.length;
const els = images.map((img, i) => {
const el = document.createElement('div');
el.classList.add('image', 'hide');
el.style.backgroundImage = `url('${img.src}')`;
return el;
});
els.forEach((el) => container.appendChild(el));
let cur = startFrom;
let next = (cur + 1) % total;
els[cur].classList.add('show');
function tick() {
els[cur].classList.remove('show');
els[next].classList.add('show');
cur = next;
next = (cur + 1) % total;
setTimeout(tick, showDuration);
}
setTimeout(tick, showDuration);
}
const images = [
'https://placehold.it/500x200/F44336/FFFFFF?text=slide%200',
'https://placehold.it/500x200/3F51B5/FFFFFF?text=slide%201',
'https://placehold.it/500x200/009688/FFFFFF?text=slide%202',
'https://placehold.it/500x200/607D8B/FFFFFF?text=slide%203',
];
fadeInOutImages(document.querySelector('.images'), images, 5000);
print "
<script>
............
</script>
";
<img onclick='func($zx[0]);' src=$zx[1] style=width:350px; class=ft>
function func(path){
var asd=path;
$('.modal').css('display','block');
$('.modal').css('z-index','100500');
$('.modal').css('position','fixed');
$('.modal').css('top','0');
$('.modal').css('width','100%');
$('.modal').append(asd)
}
<img onclick='func($zx[1]);' src=$zx[1] style=width:350px; class=ft>
function func(path){
var asd=path;
$('.modal').css('display','block');
$('.modal').css('z-index','100500');
$('.modal').css('position','fixed');
$('.modal').css('top','0');
$('.modal').css('width','100%');
$('.modal').append(<img src=asd>)
}
<img onclick='func($zx[0]);' src=$zx[1] style=width:350px; class=ft>
function func(path){
$('.modal').css('display','block');
$('.modal').css('z-index','100500');
$('.modal').css('position','fixed');
$('.modal').css('top','0');
$('.modal').css('width','100%');
$('.modal').append('<a>path</a>')
}
<img onclick='func($zx[1]);' src=$zx[1] style=width:350px; class=ft>
function func(path){
$('.modal').css('display','block');
$('.modal').css('z-index','100500');
$('.modal').css('position','fixed');
$('.modal').css('top','0');
$('.modal').css('width','100%');
$('.modal').append(<img src=path>)
}
Чтоб сделать запрет на использования одного пароля необходимо базово в БД иметь этот самый пароль, и второе поле, например, статус. По дефолту 0, и после входа делать апдейт поля с 0 на 1.
Соответственно прописывая условие если статус 1, другого пользователя будет выкидывать.Еще наверное время входа записывать.
С этим все понятно.
Так же я понимаю что данные о статусе нужно записывать в сессию.
Но вот у меня вопрос:
Каким образом при закрытии вкладки пользователя (не выход logoff), обновлять снова статус до 0, тоесть до готовности снова впускать под этим паролем?