$_POST и $_GET - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming > PHP

PHP Форум как для начинающих программистов на PHP так и для профессионалов этого дела. Если нужно создать скрипт, функцию и т.д, но не знаете как, спросите у нас и мы вам подскажем. Здесь вы найдете примеры скриптов которые вы сможете использовать на сайтах своих серверов (онлайн, регистрация, семь печатей, топ игроков). Так же много книг и статей.

Ответ
Опции темы
Непрочитано 06.06.2012, 21:10   #1
Аватар для Mike_S.
Пользователь

Автор темы (Топик Стартер) $_POST и $_GET

вопрос по этим двум переменным...
вот код:
Код:
<?php
if($_POST['1'] == 'a3')
{
	$successfull += 1;
	$text='Прально!!1!11!1';
}
if($_GET['step'] == 'info' || $_GET['step'] == '')
{
$text = '
				Добро пожаловать на страницу прохождения онлайн теста правил дорожного движения!<br>
				Тест состоит из 10 вопросов которые сопроваждаются различными изображениями на которых изображены некоторые ситуации которые вам могут встретится на дороге.<br>
				<br>
				Чтобы перейти к прохождению теста нажмите кнопку Продолжить.
				<br>
				<br>
				<br>
				<br>
				<br>
				<br>
				<center><a href="/online_test/index.php?step=1"><img src="./images/ok-1.png" /></a></center>
';
}
if($_GET['step'] == 1)
{
$text='
<FORM ACTION="index.php">
<h3>Вопрос 1</h3>
<p>
Разрешается ли водителю пользоваться телефоном во время движения?<br>
<p>
<input name="1" value="a1" type="radio">Разрешено<br>
<input name="1" value="a2" type="radio">Запрещено<br>
<input name="1" value="a3" type="radio">Разрешается только при использовании технического устройства, позволяющего вести переговоры без использования рук.<br>
</p>
<br>
<INPUT TYPE="submit" VALUE="Ответить">
</p>
</FORM>
';
}
if($_GET['step'] == 2)
{
$text='
<FORM ACTION="index.php">
<h3>Вопрос 2</h3>
<p>
<center><img src="./images/2.gif" width="50%" height="30%" /></center><br>
Этот знак предупреждает о приближении к перекрестку, на котором Вы:<br>
<p>
<input name="2" value="a1" type="radio">Имеете право преимущественного проезда.<br>
<input name="2" value="a2" type="radio">Должны уступить дорогу всем транспортным средствам, движущимся по пересекаемой дороге.<br>
<input name="2" value="a3" type="radio">Должны уступить дорогу только транспортным средствам, приближающимся справа. <br>
</p>

<INPUT TYPE="submit" VALUE="Ответить">
</p>
</FORM>
';
}
?> 
<html>
	<head>
		<title>Онлайн тест ПДД 2012</title>
		<meta name="description" content="Пройти онлайн тест ПДД" />
		<meta name="keywords" content="онлайн тест ПДД, тест ПДД онлайн 2012, пдд онлайн тест билеты,тесты пдд онлайн бесплатно " />
		<link href="/online_test/css/main.css" rel="stylesheet" type="text/css" media="all">
	</head>
	<body>
		<div id="main">
			<div id="block">
			<?php echo $text; ?>
			</div>
		</div>
	</body>
</html>
кнопка продолжить работает нормально, а вот последующие действия кнопкой Ответить (со страницы ?step=1) добавляют в адресную строку - index.php?1=a3
собственно говоря суть вопроса: Как сделать так, чтобы после нажатия кнопки "Ответить" результат записывался в переменную ($succ += 1 и скрипт переходил к следующему вопросу?

вот сам скрипт: http://гарант-права.рф/online_test/index.php
__________________
Mike-S.ru
Mike_S. вне форума Отправить сообщение для Mike_S. с помощью ICQ Отправить сообщение для Mike_S. с помощью Skype™ Ответить с цитированием
Непрочитано 06.06.2012, 21:20   #2
Эксперт

По умолчанию Re: $_POST и $_GET

потерто............
Place вне форума Ответить с цитированием
Непрочитано 06.06.2012, 21:23   #3
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: $_POST и $_GET

Лучше передавать POST с формы, при этом хранить скрытое поле с текущим ID вопроса.

Код HTML:
<form action="/qa/" method="post">
	<input type="hidden" name="question_id" value="$question_id" />
	<!-- ... -->
</form>
$question_id может быть например $_GET['q'] (index.php?q=1) А дальше как душе угодно.

PHP код:
<?php

if ($_POST) {
    
// ...
    
if (isset($_POST['question_id'])) {
        
$nextQuestionId $_POST['question_id'] + 1;
    }
    
// ...
    
header('Location: http://site.ru/qa/step/' $nextQuestionId);
}
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 06.06.2012, 21:35   #4
Аватар для Рулез
Пользователь

По умолчанию Re: $_POST и $_GET

Думаю количество правильных ответов и ошибок удобней хранить в сессиях. Так же удобней хранить шаг. То есть не нужно будет $_GET переменных. Если человек хочет начать тест заново, легко очистить сессии и начать заново и всё это время ссылка будет выглядеть чисто без GET переменных.

Можно и $_POST переменные использовать, но тут уже чуть больше кода будет выходить
Рулез вне форума Отправить сообщение для Рулез с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 06.06.2012, 21:43   #5
Аватар для Mike_S.
Пользователь

Автор темы (Топик Стартер) Re: $_POST и $_GET

Спасибо, алгоритм работы понял)
Переписал скрипт и создал шаблон по которому будет вестись проверка правильных ответов)

Добавлено через 24 минуты
Ещё так же интерисует вопрос, как правильно записывать правильные ответы?
Сейчас я использую:
Код:
if($_POST['next'])
{
	if($_GET['question_id'] == 1 && $_POST['1'] == 'a3') { $pravilnih + 1; } // test код, тоже не пашет
	if($_POST['2'] == 'a3') { $pravilnih + 1; }
	if($_POST['3'] == 'a1') { $pravilnih + 1; }
	if($_POST['4'] == 'a3') { $pravilnih + 1; }
	if($_POST['5'] == 'a3') { $pravilnih + 1; }
	if($_POST['6'] == 'a2') { $pravilnih + 1; }
	if($_POST['7'] == 'a1') { $pravilnih + 1; }
	if($_POST['8'] == 'a2') { $pravilnih + 1; }
	if($_POST['9'] == 'a2') { $pravilnih + 1; }
	if($_POST['10'] == 'a1') { $pravilnih + 1; }
	$nextQuestionId = $_GET['question_id'] + 1; 
	header('Location: http://xn----7sbabalc6ftagev.xn--p1ai/online_test/index.php?question_id=' .$nextQuestionId);
}
Почему то не работает
вот html код:
Код:
<input name="10" value="a1" type="radio">Только по крайней правой. <br>
<input name="10" value="a2" type="radio">Не далее второй полосы. <br>
<input name="10" value="a3" type="radio">По любой, кроме крайней левой. <br>
Добавлено через 3 часа 48 минут
Рулез, спасибо) Действительно удобнее и намного безопаснее) хотя о какой безопасности может быть речь в онлайн тесте на ПДД
__________________
Mike-S.ru

Последний раз редактировалось Mike_S.; 07.06.2012 в 01:31. Причина: Добавлено сообщение
Mike_S. вне форума Отправить сообщение для Mike_S. с помощью ICQ Отправить сообщение для Mike_S. с помощью Skype™ Ответить с цитированием
Непрочитано 14.06.2012, 19:56   #6
Пользователь

По умолчанию Re: $_POST и $_GET

Цитата:
if($_POST['2'] == 'a3') { $pravilnih + 1; }
это не присвоение.
x3k вне форума Ответить с цитированием
Непрочитано 23.09.2012, 16:59   #7
Аватар для shra
Новичок

По умолчанию Re: $_POST и $_GET

То что пользователь не должен видеть (а именно количество правильных ответов и ошибок), то нельзя прогонять через браузер какими либо там переменными. Попробуйте в базу писать или в сессиях хранить.
shra вне форума Ответить с цитированием
Ответ

Метки
гарант-права


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 15:22. Часовой пояс GMT +3.

Вверх