2015-05-09 2 views
0

У меня есть сайт Ecomm, использующий iframes.удалить строку таблицы на JavaScript window.onbeforeunload

Когда пользователь посещает сайт, в ColdFusion создается уникальный идентификатор на стороне сервера главного окна. Этот идентификатор записывается в таблицу, чтобы другие страницы могли проверить, действительно ли id. Я не использую сеансы или файлы cookie.

Все функции находятся внутри основных фреймов страницы, поэтому домашняя страница остается открытой и никогда не обновляется во время посещения.

Что я хочу сделать, это удалить строку идентификатора пользователя из таблицы на выходе из сайта.

Посетив сайт:

создать идентификатор_пользователь и написать идентификатор_пользователь к столу. Серверная сторона.

мне нужно добавить эту переменную USERID в скрипт что-то на стороне клиента, как:

window.onbeforeunload = function(e) { 
    window.location.href = "unload.cfm?userID="; 
}; 

с unload.cfm выполнения запроса - Удалить строку на выходе узла.

Как получить идентификатор пользователя в JavaScript? Или есть более простой способ сделать это.

Примечание: я не рассматриваю это как проблему с CF, так как это было бы одинаково для любого приложения на стороне сервера.

Спасибо, Энди

+0

Вы не можете изменить местоположение onbeforeunload. Вы могли бы попробовать Ajax – mplungjan

+0

mplungian, я надеялся, что функция (url) будет вызвана как выход страницы. Я просто хочу, чтобы удалить строку userID из таблицы, чтобы посетитель не делал ничего, потому что этого не произойдет. – Andy

ответ

-1

Вы можете читать URL и извлечь нужный параметр этой функции вызова:

function getUrlParameter(sParam) 
{ 
    var sPageURL = window.location.search.substring(1); 
    var sURLVariables = sPageURL.split('&'); 
    for (var i = 0; i < sURLVariables.length; i++) 
    { 
     var sParameterName = sURLVariables[i].split('='); 
     if (sParameterName[0] == sParam) 
     { 
      return sParameterName[1]; 
     } 
    } 
}   

вар ID = getUrlParameter ("идентификатор пользователя")

+0

Привет pSaadi, Я использовал вашу функцию с window.onbeforeunload = функция (е) { \t window.location.href = "unload.cfm идентификатор пользователя =?" Вар ID ""; }; и все, что я получаю, это userID = varID.в поле зрения источника страницы. – Andy

0

Я не являюсь конечно, о вашем случае, но обычно на веб-сайтах пользователю разрешен вход/авторизация с одним пользователем в то время.

Если это так, то вы можете сохранить IP-адрес пользователя при создании идентификатора для него и при разгрузке просто вызвать страницу разгрузки без каких-либо параметров.

Таким образом, вы можете сопоставить ip в запросе удаления с теми, которые вы сохранили, и удалить соответствующий идентификатор пользователя.

+0

Hi Chris, Речь идет не о логине. UserID создается независимо от любой другой функции и используется для отслеживания и взаимной идентификации любых сообщений db в разных таблицах. Проверяя, существует ли идентификатор пользователя перед записью в таблицу, я могу отфильтровать некоторые фишинг-атаки. – Andy

+0

@ Andy Я упомянул login/auth только потому, что это решение будет работать, только если на одном компьютере все открытые параллельные сеансы будут использовать тот же userId. Вам нужно иметь отдельный userId для каждой открытой iframe/вкладки? –

+0

Крис jS загружается на главной странице с помощью iframe внутри него, и все функции и навигация по страницам происходят в пределах iframe, поэтому основная (по умолчанию) страница никогда не изменяется и не видит активность внутри. Поместив выход jS на главную страницу, он всегда будет иметь скрипт и будет знать, закрывается ли браузер. – Andy

0

Попробуйте эту

Верните изображение в выгрузке и сделать

window.onbeforeunload = function(e) { 
    document.getElementById("logged").src = "unload.cfm?userID=#userID#"; 
}; 

использованием

<img src="loggedin.gif" id="logged" /> 
Смежные вопросы