• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

передача значений переменных из Javascript в Php

  • Автор темы TetraHC
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

TetraHC

Всем добрый день! Пишу сайтик

Одним из условия заказчика, было реализовать строку подсказки поиска - введите например букву "а" (русскую) в поле поиска кабеля, и вылезет подсказка.
Собсвенно элемент позиционирован как:

position:absolute

Так вот дело в том, что в зависимости от экрана браузера координаты поля ввода меняются. Из можно определить ТОЛЬКО через JAVASCRIPT, что я с успехом делаю. Но вот далее, надо вывести css файл с этими координатами (я делаю это на php), и вот тут вопрос - как передать значения left и top в php? Вариант через GET не прокатит, так как адреса у страницы php нет - это МОДУЛЬ JOOMLA.

Вопрос - как быть? Код:

<!--shcode--><pre><code class='java'><?php

//ОПРЕДЕЛЕНИЕ ПОЛЬЗОВАТЕЛЯ

$user =&JFactory::getUser();
$usertype=$user->get('usertype');
if(($usertype=='Manager') or ($usertype=='Administrator') or ($usertype=='Super Administrator')){
$manager=1;
}
else{
$manager=0;
}
?>


//ОПРЕДЕЛЯЕМ РАЗМЕР ЭКРАНА
<script type="text/javascript">
function getElementPosition(elemId)
{
var elem = document.getElementById(elemId);

var w = elem.offsetWidth;
var h = elem.offsetHeight;

var l = 0;
var t = 0;

while (elem)
{
l += elem.offsetLeft;
t += elem.offsetTop;
elem = elem.offsetParent;
}

return {"left":l, "top":t, "width": w, "height":h};
}

<script language="JavaScript" type="text/javascript" src="./suggest/clienthint.js"></script>

<div align="center">
<br>
<form action="./index.php?option=com_hello&view=hello&task=search" name="myform" method="post">
<input type=radio name="answer" value="1" checked>поиск везде
<input type=radio name="answer" value="2">поиск в новом
<input type=radio name="answer" value="3">поиск в госрезерве<br><br>
<input type="text" name="mytext" size="40" id="txt4" onkeyup="showHint(this.value)" autocomplete="off">
<input name="Submit" type=submit value="Искать">
<br>
<br>
<div id="txtHint" align="center" style="width: 263px; height: 0px;"></div>
</form>
</div>
</body>
pos = getElementPosition("txt4");
var left = pos.left;
var top = pos.top;
var width = pos.width;
var height = pos.height;
var x0=left;
var y0=top+height;
document.write(
"Угол левый x0-" + x0 + "[px] y0-" + y0 + "[px] ширина" + width + "[px] Начальные данные top-" + top + " height-" + height + "."
);
<style type="text/css" media="screen">
}
#txtHint {
position: absolute;
<?php
if($manager!=1){
echo "left: 719px;";
echo "top: 316px;";
}
else{
echo "left: 719px;";
echo "top: 546px;";
}
?>
background-color: #FFFFFF;
text-align: left;
border: 1px solid #000000;
}
</style>[/CODE]
Примечание - строка "<script language="JavaScript" type="text/javascript" src="./suggest/clienthint.js"></script>" отношения к делу не имеет, это javascript для передачи данных технологией AJAX

Собсвтенно на JAVA мы определяем postion left и top, и надо их вставить вместо текущий фиксированных позиций ( 719px, 316px для обычного юзера и 719px и 546px для менеджера).

PS Есть вариант отказатся от php и сделать вывод только методом JAVSACSRIPT (documet.write), но я так и смог заставить document.write выводить html код в тело страницы (хотел делать вставки кода типа <input name="name" value="width" type=hidden>)

test
 
N

nws

>>Есть вариант отказатся от php
100%
>>сделать вывод только методом JAVSACSRIPT (documet.write)
не забывай что есть DOM
присваивай к классу новые css значения в зависимости от условия google -> javascript innerHtml

например:

p{color: red;}

Jquery:
//при клике на любой элемент заключенный в тэг <p> менятся css
$("p").click(function () {
$(this).css('color','blue');
})
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!