Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача методом POST в гиперссылке?
 
 автор: ДацкыйКот   (12.02.2007 в 08:07)   письмо автору
 
 

Как сделать, чтобы гиперссылка передавала значение переменной методом POST? Какие есть конструкции?

Вы в своих книгах предлагаете делать это методом GET (Самоучитель PHP5, стр. 575).
Конструкция получается такой:
<a href = $_SERVER[PHP_SELF]?var= … и так далее

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

В итоге в обработчике (у меня - в начале файла) приходится извлекать эту переменную и из массива $_GET и из массива $_POST. Хотелось бы избежать этих заморочек и остановица на чем-то то одном - а именно на POST. Но вот как передавать переменную методом POST через гиперссылку так и не придумал.
Что посоветуете?

   
 
 автор: Unkind   (12.02.2007 в 08:40)   письмо автору
 
   для: ДацкыйКот   (12.02.2007 в 08:07)
 

Для передачи методом POST нужна форма. Через обычную ссылку никак - на то он и .POST

   
 
 автор: ДацкыйКот   (12.02.2007 в 09:22)   письмо автору
 
   для: Unkind   (12.02.2007 в 08:40)
 

ну а что все тки придумать, чтоб через гиперссылку переменная передавалась?
есть извратный вариант: активировать гиперссылкой php-обработчик, где переводить GET в POST.
неохота просто сваливать переменные в строку.

должен же быдь какой-та обходной путь...

   
 
 автор: bronenos   (12.02.2007 в 09:53)   письмо автору
 
   для: ДацкыйКот   (12.02.2007 в 09:22)
 

Может можно через AJAX...
<script language='Javascript'><!--
var req = false;
if (window.XMLHTTPRequest)
{
  req = new XMLHTTPRequest();
}
elseif (window.ActiveXObject)
{
  req = new ActiveXObject ('Microsoft.XMLHTTP');
}

function sendto (url, data)
{
  if (!req) return;
  req.open ('POST', url, 1);
  req.send (data);
}
//--></script>


<a href='javascript:sendto('login.php','login=tester&password=trytoenter');'>Тестовый вход</a>

Может где-то и ошибся, но, в общем, мою мысль поняли...

   
 
 автор: ДацкыйКот   (12.02.2007 в 11:21)   письмо автору
 
   для: bronenos   (12.02.2007 в 09:53)
 

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

может глянешь еще разок в свой скрипт? вдруг там где опечатка?
я тока в одном месте поправил (кавычки поменял снаружи ссылки на двойные:
<a href="javascript:sendto('login.php','login=tester&password=trytoenter');">Тестовый вход</a>
но это не помогло...

идея классная... на ней скорее остановлюсь...

   
 
 автор: ZuArt   (12.02.2007 в 11:34)   письмо автору
 
   для: ДацкыйКот   (12.02.2007 в 11:21)
 

а наф такие сложности??? AJAX привлекать в частности


<form action="скрипт" name="GoPost"><input type="hidden" name="имя переменной"></form>

<script>
function SubPost($val)
{
 document.GoPost.имя_переменной.value = $val; // тут может напортачил, т.к. не помню, как к полям формы обращаться
 document.GoPost.submit();
};
</script>

<a href="JavaScript:SubPost('Значение передаваемой переменной')">


Ну естессно, что переменных может быть скока угодно... в конце концов, на крайняк можно и так скрипт отписать, чтобы тот на лету при вызове создавал в абсолютном невидимом слое форму с нужными полями, назначал их из параметров (тогда в кач. параметра можно передавать GET строку), и сабмитил... - чобственно по схожему принципу и AJAX пашет, ток через другие технологии, когда они доступны... но кроссплатформенность у AJAX-а пока страдает... а простыми методами - тут ток и надо, чтобы JavaScript была разрешена у юзера (а Аяксу она просто жизненно необходима)

   
 
 автор: ДацкыйКот   (12.02.2007 в 13:39)   письмо автору
 
   для: ZuArt   (12.02.2007 в 11:34)
 

Все заработало!!!
Небольшие добавки сделал: добавил в форму method="post", а то все GET-ом лезло через адресную строку.
И еще убрал пробелы вокруг знака равно:
document.GoPost.имя_переменной.value = $val

Рабочий итог:


<form action="скрипт" name="GoPost" method="post"><input type="hidden" name="имя переменной"></form> 

<script> 
function SubPost($val) 

 document.GoPost.имя_переменной.value=$val; 
 document.GoPost.submit(); 
}; 
</script> 

<a href="JavaScript:SubPost('Значение передаваемой переменной')">


Проверил, с несколькими переменными тоже все нормально летает... СПАСИБА!!!

   
 
 автор: ZuArt   (12.02.2007 в 13:54)   письмо автору
 
   для: ДацкыйКот   (12.02.2007 в 13:39)
 

нзчт ;)

   
 
 автор: Trianon   (12.02.2007 в 09:54)   письмо автору
 
   для: ДацкыйКот   (12.02.2007 в 09:22)
 

застрелиться, например....

PS... В другой ситуации, я может быть посоветовал бы глянуть на $_REQUEST[]
Но тут явно не поможет. Случай тяжелый.

   
 
 автор: B@cZ   (12.02.2007 в 10:49)   письмо автору
 
   для: Trianon   (12.02.2007 в 09:54)
 

Даже не знаю что скачать, по-моему стандартными средствами PHP - никак.
Создавайте форму, в ней кнопку, имитируйте ее вид под ссылку, средствами CSS и все =)

   
 
 автор: ДацкыйКот   (12.02.2007 в 11:16)   письмо автору
 
   для: B@cZ   (12.02.2007 в 10:49)
 

хм... надо попробовать кстати так сделать... через кнопку в стиле ссылки...

   
 
 автор: bronenos   (12.02.2007 в 11:54)   письмо автору
 
   для: ДацкыйКот   (12.02.2007 в 11:16)
 

Извените переклинило, я с чего-то взял, что вам надо не перезагружать страницу...
P.S. Он не должен переходить на вашу страницу, он должен только данные отсылать

   
 
 автор: hate   (12.02.2007 в 13:36)   письмо автору
 
   для: ДацкыйКот   (12.02.2007 в 08:07)
 


<form name="form1" method="POST">
<a href="javascript:void(0)" onClick="document.forms['form1'].submit()">LINK NAME</a>
<хиддэн филд с нужным значением>
</form>

типа того

   
 
 автор: ДацкыйКот   (12.02.2007 в 13:53)   письмо автору
 
   для: hate   (12.02.2007 в 13:36)
 

афигеть... суперштука... бест код!!!
и сразу все поехало как нада как ни странно.... :)))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования