Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   можно ли передать POST запрос без использования форм? (http://forum.oszone.net/showthread.php?t=143777)

rizz 29-06-2009 19:09 1154882

можно ли передать POST запрос без использования форм?
 
можно ли передать POST запрос без использования форм?
хочу передать переменную в $_SESSION отвечающую за отображение количества товаров на странице
но нужно чтобы после передачи адрес в адресной строке остался тот же, поэтому GET запрос не подходит с ним получится новый адрес имясайта.ru/price/tovar/?limit=10 вместо исходного имясайта.ru/price/tovar/

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

а поисковики могут управлять элементами формы? нажать на кнопку например?

proxy 29-06-2009 19:25 1154899

самый банальный вариант, после обработки GET / POST запроса - редирект на нужный адрес:
PHP код:

header('Location: index.php'); 


rizz 29-06-2009 19:49 1154920

я тоже об этом думал
c обычной ссылкой через GET пишу header('Location: http://имясайта.ru/$a/$b/$c/'); но почему-то не передаются $a $b $c, хотя без header всё работает

с POST всё нормально работает, но нужно использовать формы, другого способа пока не придумал, и не придумал как в форму добавить DIV чтобы срабатывало по DIV

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

Sham 29-06-2009 20:03 1154929

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

поисковики вроде бы не индексируют страницы по кнопкам submit (т.е. не отправляют формы), а только по тегу <a> (но точно знают только те, кто непосредственно этим занимается).

POST-запрос (равно, как и любой другой) можно отправить через сокет...
http://www.google.com/search?q=%D1%8...81% D0%B0+PHP

rizz 29-06-2009 20:10 1154933

Цитата:

Цитата Sham
не понятно, зачем вы хотите передать сесионную переменную »

дак мне надо сначала как-то записать значение в $_SESSION
при выборе кнопки отображать товаров по: передаётся переменная $id_tovar_limit в index.php

вот так написал, незнаю может неправильно понял сессии, но работает, переменную всё равно надо как-то передать в сессию
PHP код:

session_start();
if (!isset(
$_SESSION['tovar_limit'])) // если не существует сессия, пользователь только что зашёл на сайт, то в сессию записывается значение по умолчанию

$_SESSION['tovar_limit']=5;
}
// если сессия существует, пользователь на сайте, и передана переменная $id_tovar_limit значит пользователь переключил количество отображаемых товаров
// присваиваем сесии новое значение переданное через $id_tovar_limit 
if (isset($_SESSION['tovar_limit']) && isset($id_tovar_limit)) 

$_SESSION['tovar_limit']=$id_tovar_limit;
}

$tovar_limit $_SESSION['tovar_limit']; // присваиваем $tovar_limit значение из сессии 


Sham 29-06-2009 20:26 1154944

1. если у вас register_globals on, то $tovar_limit изначально содержит $_SESSION['tovar_limit']
2. если register_globals off то все пришлые переменные нужно будет юзать через $_GET/POST....
3. в любом случае пришлые переменные должны проверятся на предмет ожидаемого значения...

proxy 29-06-2009 20:27 1154945

rizz,

PHP код:

<?
session_start
();

$tovar_limit $_POST['id_tovar_limit'];
if(!
$tovar_limit$tovar_limit 5;
$_SESSION['tovar_limit'] = $tovar_limit;
?>

надо писать не так:
Цитата:

Цитата rizz
header('Location: http://имясайта.ru/$a/$b/$c/'); »

а вот так:
PHP код:

header('Location: http://имясайта.ru/'.$a.'/'.$b.'/'.$c.'/'); 

или так:
PHP код:

header("Location: http://имясайта.ru/$a/$b/$c/"); 

И Location сработает только в том случае, если ни чего до этого не было переданно браузеру, т.е. ни echo, ни printf, ни другой header - ни че го ! )

rizz 29-06-2009 21:23 1154994

ага спасибо, так работает
PHP код:

header('Location: http://имясайта.ru/'.$a.'/'.$b.'/'.$c.'/'); 

а так не работает
PHP код:

header('Location: http://имясайта.ru/admin/'.$a.'/'.$b.'/'.$c.'/'); 

и незнаю где косяк, может в mod_rewrite
но это на крайняк может буду использовать

понял, что без разницы какой запрос POST или GET, я же в форме пишу action='имясайта.ru/$a/$b/$c/' и он переходит опять на ту же страницу, а $id_tovar_limit передаётся в скрытом поле, так что всё равно придётся использовать формы, иначе можно использовать просто GET и вручную переписывать header


Время: 08:59.

Время: 08:59.
© OSzone.net 2001-