Перейти к публикации

отправляет форму не туда куда надо


Рекомендованные сообщения

доброго времени суток.

Следующая задача - сделать отдельную страничку в для вип посетителей которые знают секретный код. они вводят секретный код и им показывается скрытое содержание. как я это реализую-

В файле engine.php добавил такие строки

if (!isset ( $vipcode )) $vipcode = totranslit ( $_REQUEST['vipcode'] ); else $vipcode = totranslit ( $vipcode );
	case "vip" :

		include ENGINE_DIR . '/modules/vip.php';

		break;
в соответствующие места(кто знает где там все тот поймет) затем создал файл vip.php в папке modules
<?php

if(!defined('DATALIFEENGINE'))

{

  die("Hacking attempt!");

}

if($vipcode == "pass")

{

$tpl->set('{text}', 'Бла бла бла <br /> секретный текст пароль от пентагона - vasiya22 ');

}else {

$tpl->set('{text}', "пусто");

}

	$tpl->load_template('vip.tpl');

	$tpl->compile('content');

?>
затем создал файл vip.tpl в директории шаблона.
<table border="1">

<tr>

<td>

<form  method="GET" action="?do=vip">

<input type="text" id="vipcode" name="vipcode" size="20" />

<input type="submit"  value="отправить">

</form>

</td>

</tr>

<tr>

<td>{text}</td>

</tr>

</table>

Все поначалу выводит отлично но когда вбиваю пароль в текстовое поле то меня должно закинуть по следующему адресу index.php?do=vip&vipcode=pass и соответсвенно показать скрытый текст

А меня кидает на index.php?vipcode=pass и я вижу главную страницу сайта. что не так я сделал?

Всем заранее спасибо.

Ссылка на сообщение
Поделиться на других сайтах

1. Никогда не используйте $_REQUEST в целях безопасности - это набор запросов ГЕТ, ПОСТ, ... если у вас конкретный запрос ГЕТ, то его и пишите. Это сделано для удобства проверки кода.

2. используйте в форме обычную ссылку (хотя, варианты разные можно придумать) вместо кнопки "отправить" и вешайте на ссылку "событие", например, "онклик" для отправки формы.

Ссылка на сообщение
Поделиться на других сайтах

ну я _REQUEST не с потолка взял если глянуть в engine.php то там такой код стоит на переменную do

if (!isset ( $do )) $do = totranslit ( $_REQUEST['do'] ); else $do = totranslit ( $do );

а вообще я менял на get и на post результат тот же. :(

а про то как в форме ссылку использовать я немного не понял, а как по ссылке введеный код передавать?

может быть у меня с денвером что то не то? может быть кто нить проверит на своем компе? инструкция выше там ниче сложного. С меня + в карму!

Изменено пользователем blaga
Ссылка на сообщение
Поделиться на других сайтах

Если кто-то сделал неправильно или не очень правильно, либо под свои конкретные нужды - это не значит, что это нужно так же копировать, у вас ведь свой модуль ;)

Денвер здесь не при чём, ссылкой данные формы не передаются, ссылка лишь передаёт ГЕТ-запрос, вот пример:

<a href="/index.php?do=vip&amp;vipcode=pass">click</a>
Нажмёте на ссылку и перейдете на нужную вам страницу, т.е. на _http://site.ru/index.php?do=vip&amp;vipcode=pass а на этой странице уже обрабатывайте любым удобным способом ваш ГЕТ-запрос и получайте ваши переменные:
$do = vip;

$vipcode = pass;

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

Изменено пользователем zgr
Ссылка на сообщение
Поделиться на других сайтах

с сылкой вы немного не поняли мне нужна такая форма где есть одно текстовое поле и кнопка отправить(ссылка) то есть если делать ссылку она должна как то так выглядеть site.ru/index.php?do=vip&vipcode=[значение из текстового поля]

Как же я динамически вставлю в ссылку то что в текстовом поле. (можно конечно это сделать на яваскрипт) но не вижу смысла городить огород.

Я ведь в тэге формы указал атрибут action="?do=vip" т.е. он должен меня перекинуть после отправки формы на туже страницу с паматрами index.php?do=vip а он меня перекидывает на ту же страницу без параметра т.е. index.php?

Изменено пользователем blaga
Ссылка на сообщение
Поделиться на других сайтах

Я ведь в тэге формы указал атрибут action="?do=vip" т.е. он должен меня перекинуть после отправки формы на туже страницу с паматрами index.php?do=vip

с чего вдруг? он должен при ?do=vip переводить вас на index.php?do=vip ? Абсолютно неверное понимание, если вы не находитесь на index.php, то вы на нее и не попадете. Для того чтобы попасть на index.php нужно четко указывать action="/index.php?do=vip"

Ссылка на сообщение
Поделиться на других сайтах

Для того чтобы попасть на index.php нужно четко указывать action="/index.php?do=vip"

прописал точно так как у вас. я так раньше тоже пробовал.

ничего не изменилось перекидывает на http://сайт/index.php?vipcode=pass

Ссылка на сообщение
Поделиться на других сайтах

Для того чтобы попасть на index.php нужно четко указывать action="/index.php?do=vip"

прописал точно так как у вас. я так раньше тоже пробовал.

ничего не изменилось перекидывает на http://сайт/index.php?vipcode=pass

С чего вы вообще взяли, что без перехода по ссылке вас должно перекинуть на какую-то страницу? Я же вам выше написал - нужно перейти по ссылке на нужную страницу, либо написать редирект перехода после выполнения скрипта, например, задать "локейтион" в JS, либо прописать в "хидере" локейтион в php, тогда вас редиректом перебросит, но в вашем случае нужно перейти по ссылке, а в форме action - указывает куда будут отправлены на обработку данные из формы; если 'riby не указан, то данные передаются в эту же самую страницу, т.е. файлу со скриптом php, который сгенерировал текущую страницу. ;)

Изменено пользователем zgr
Ссылка на сообщение
Поделиться на других сайтах

мда. действительно, где то я точно затупил. :blink:

Вопрос решился тем что я в форму добавил

<input type="hidden" name="do" value="vip" />

Всем спасибо кто принимал участие в теме!

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...