одновременно отправка POST и запись в базу

petrovitch

Новичок
одновременно отправка POST и запись в базу

Здравствуйте, всем!

Как перенаправить посетителя сайта на другой сайт, передав на этот же сайт содержимое формы, при этом записав это же содержимое в базу?
Я попробовал передать данные в промежуточный файл, со страницы с формой, вот этот файл:
<?php
запись в базу, с ней вопросов нет, работает

$post_zapr = "&Id=$_POST[Id]&ttt=$_POST[ttt]";
$url = "http://куда переадресовываю";

$ch = curl_init();
//куда передаю
curl_setopt($ch, CURLOPT_URL,'$url');
curl_setopt($ch, CURLOPT_POST, 1);
//данные для POST запроса
curl_setopt($ch,CURLOPT_POSTFIELDS, $post_zapr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_exec ($ch);
curl_close ($ch);
?>
<html><head>
<meta http-equiv='refresh' content='0; URL=$url' >
</head> </html>

данные в базу записываются, на сайт $url запросом POST передаются и принимаются, а когда туда перенаправляется посетитель сайта <meta http-equiv='refresh' content='0; URL=$url' > он естественно получает ошибку, потому что POST запрос после переадресации уже не содержит никаких данных, как и данные записать и перенаправить посетителя на другой сайт с этими же данными?
 

DiMA

php.spb.ru
Команда форума
куча слов, а в целом непонятно
задай вопрос еще раз
код целиком
за "куда переадресовываю" и прочее затенее кода - удем в корзинку..
 

petrovitch

Новичок
я так и думал, но я его совсем не знаю, надеялся, что может можно на php
 

N3K

Новичок
jQuery позволяет отправлять аякс запросы в виде формы.
 

vovanium

Новичок
Просто вместо редиректа возвращаешь страницу в которой форма со скрытыми полями, и яваскриптом сабмитишь.
Либо если одну и туже форму нужно отправить, можно использовать такой трюк
Код:
<form action=1.php method=post>
<input type=text name=n value="56">
<input type=submit onclick="this.form.submit();this.form.action='2.php';"> 
</form>
В таком случае сначала выполняется событие onclick и броузер отправляет форму, меняется action формы, после чего наступает событие onsubmit, и броузер отправляет форму уже по новому адресу.
 

x-yuri

Новичок
только трюк лучше перенести в onsubmit тэга form. Потому что случаи ведь разные бывают ))
 

vovanium

Новичок
x-yuri
только трюк лучше перенести в onsubmit тэга form. Потому что случаи ведь разные бывают ))
Нефига кстати, если попытаться в onsubmit дважды сабмитить, то ничего не получится, потому и написал что трюк ;)
 

dimagolov

Новичок
vovanium, а для меня лично не очевидно что форма второй раз будет сабмиться. страничка может успеть (редко, но при быстром сервере и локалке, к примеру) перегрузиться (получив отклик от сервера на первый submit).

п.с. вообще ИМХО задача из разряда "хотите вы странного"
 

vovanium

Новичок
dimagolov
Я дал готовый рабочий пример, вообще-то ;)
Причем работает IE, FireFox.
Хотя не спорю работает несколько странно. Сам случайно набрел, когда из-за такого двойного сабмита в регистрации, всем юзерам выдавалась ошибка, что они уже зарегены.
 

x-yuri

Новичок
vovanium с переносом в тэг form был не прав( а причиной тому было, что форма может не только по onclick отправляться. Кроме того, если в форме 1 input type="text" то форма отправляется по Enter в обход onclick и onkeypress (IE)

по поводу твоего решения (если мышкой отправлять) - в Opera не работает
 

DIS

Новичок
можно нааяксить что-нить..
onSubmit="write_to_db_if_form_is_ok()"

круче будет... но без js тут никак - не всем подходит.
 

vovanium

Новичок
а причиной тому было, что форма может не только по onclick отправляться
Ну так это понятно, я просто пример показал, а не конечное решение. Хотя действительно работает только в IE и Фоксе, в Opera и Chrome не пашет.

Хотя я изначально написал что нужно делать, просто возвращать форму с JS-сабмитом.
 
Сверху