• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Location.replase, Js и Radiobutton Value

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

bma

Есть задача - блокировка возвращения на предидущую стр выполняемая Location.Replace и есть на форме страницы скрытые поля и радиокнопки.

Суть трабла: при переходе не через Submit, а напрямую через JS (т.е. через Location.Replace) "теряются" данные с полей и Value радиокнопок. с полями проблему решил выведя данные $_SESSION, а вот как быть с данными с Value радиокнопок?


Код:
<?php 
include "dbsettings.inc";
include "protect.inc";
if(isset($_GET["err"])) 
{	 if($_GET["err"]==1)
{print "Вы не имеете прав для просмотра этой таблицы!";}
}

$quer1="SELECT *FROM voprosotvet WHERE id=$massiv[$i]";
$resul1=mysql_query($quer1) or die("Err:quer1");
?>
<script LANGUAGE="JavaScript">
function exit() {

window.setTimeout("window.open('logout.php')",0)
window.setTimeout("window.close()",0)
}
function main() {

window.setTimeout("window.open('main.php')",0)
window.setTimeout("window.close()",0)
}
function V5() 
{		 
location.replace("vopros_check.php");
//Location.Replace заставляет браузер "забыть" предидущую стр. Т.е. не дает вернуться к предидущему вопросу
}
</script>
<style type="text/css">
BODY {
background-color: dff4fa; /* Цвет фона веб-страницы */
} 
</style>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тестирование</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">

<!--Подключаем шапку сайта-->
<? include("header.php");  ?> 
<tr>
<td><table width="690" border="0" cellspacing="0" cellpadding="0">
<tr>

<?php 

?> 

<? 

if ($max==$i)
{
//вывод результатов
display_result($T_vop,$F_vop,$massiv,$max,$i,$sUname,$vop_num);
}
if ($max>$i)
{
//вывод самого теста
display_test($T_vop,$F_vop,$massiv,$max,$i,$sUname,$vop_num);
}

function display_result($T_vop,$F_vop,$massiv,$max,$i,$sUname,$vop_num)
{
//вывод результатов
echo "<form action=main.php method=POST>
<td><table width=800 border=0 cellspacing=0 cellpadding=0>

<td><div id=coolmenu> <a href=java script:main()> Выход в главное меню</a> </div></td>
<td><div id=coolmenu> <a href=java script:exit()> Выход</a> </div></td>
</table></td>
<table align=center width=800 border=0 cellspacing=0 cellpadding=0>
<p align=center><strong>Результаты тестирования:</strong></p> 
<p align=center><strong>В ходе проверочного тестирования Вы совершили ошибок:</strong>$F_vop;</p> 
</table>
</form>";
}

?>
<?php 
//вывод теста
function display_test($T_vop,$F_vop,$massiv,$max,$i,$sUname,$vop_num)
{ 
$quer1="SELECT *FROM voprosotvet WHERE id=$massiv[$i]";
$resul1=mysql_query($quer1) or die("Err:quer1"); 

while($row=mysql_fetch_array($resul1))
{
echo "<form method=post name=formname1 action=vopros_check.php>

<table align=center width=800 border=0 cellspacing=0 cellpadding=0>
<p><strong>ID:</strong> $massiv[$i] <strong>Попыток:</strong> $F_vop <strong>Вопросов отвечено правильно:</strong> $T_vop; <strong>Вопросов отвечено не правильно:</strong> $F_vop; <strong>Имя тестируемого:</strong> $sUname;</p>

<p align=center><strong>вопрос №: $vop_num </strong> <br> <label name=vopros rows=5 cols=70>$row[vopros]</p>
<p align=center><strong>Выберете правильный ответ:</strong> 
<p align=center ><img border=1 src=Admin/DATA/images/$row[image_media_file]></p>

<table align=center width=780 border=0 cellspacing=6 cellpadding=0>
<tr>
<td width=370> <label name=otvet1 rows=2 cols=60>$row[otvet1]</td><td width=10><input type='radio' name='votvet' value=1 onClick=sm.disabled=false;> </td>
<td width=370> <label name=otvet2 rows=2 cols=60>$row[otvet2]</td><td width=10><input type='radio' name='votvet' value=2 onClick=sm.disabled=false;> </td>
</tr><tr>
<td> <label name=otvet3 rows=2 cols=60>$row[otvet3]</td><td><input type='radio' name='votvet' value=3 onClick=sm.disabled=false;> </td>
<td> <label name=otvet4 rows=2 cols=60>$row[otvet4]</td><td><input type='radio' name='votvet' value=4 onClick=sm.disabled=false;> </td>
</tr><tr>
<td> <label name=otvet5 rows=2 cols=60>$row[otvet5]</td><td><input type='radio' name='votvet' value=5 onClick=sm.disabled=false;> </td>
<td> <label name=otvet6 rows=2 cols=60>$row[otvet6]</td><td><input type='radio' name='votvet' value=6 onClick=sm.disabled=false;> </td>
</tr>
</table>
<br>
<INPUT type=hidden value=$row[id] name=id>
<INPUT type=text value=$row[true_otvet] name=true_otvet>
<p align=center ><input type=button onclick=V5() value=NEXT id=sm disabled></p>

</form>";
//скрытое поле true_otvet - даннные из БД какой из ответов верный(номер)
//ID - ID вопроса в БД
//votvet - радиобаттноы. Value - номер у каждого свой. при проверке сверяется, =ли номер выбранного радиобаттона правильному ответу
//file_help_name-название файла помощи к данному вопросу. При необходимости к нему идет обращение

$_SESSION['file_help_name'] = $row['file_help_name'];
//вынос в сессию данных поля 
$_SESSION['true_otvet'] = $row['true_otvet'];
//вынос в сессию данных поля 

//по идее должнобыть чтото аналогичное $_SESSION для выноса в сессию данных Value радиобаттнонов.
//Оно и нужно... Но я не знаю как...
} 
}

?>

<!--Подключаем нижний графический элемент--> 
<? include ("footer.php");		?> 
</table>
</table>
</body>

</html>
 
V

Vadik(R)

Ты думаешь всем так и охота разбирать твой хтмл код? Упрости его сначала, выкинь все table нафиг, что бы в коде осталась только суть задачи. Тогда может и подскажут чего :)
 
V

Vovochka

Блин, какой еще переход на прямую через JS ???
Мозг мой поломали.
И вообще, зачем замарачиваться таким? Какой ожидается результат?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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