webForumDet fria alternativet

Skicka formulärdata till en popup

PHP

26 svar · 688 visningar · startad av Niklasson

Medlem sedan nov. 2000857 inlägg
Frågan#1

(Kanske skulle passa bättre i Javascript-forumet)
Jag skulle vilja göra följande:

Vi leker att det är ett vanligt mailformulär. Besökaren fyller i Namn, e-post och ett meddelande till mig.
När besökaren submittar så vill jag skicka datan till en popup (inget vanligt fönster utan en riktig popup) som utför själva mail()-funktionen. Därefter skall popupen stänga sig själv, den skall alltså bara hantera datan..
Samtidigt skall formulärssidan uppdateras så att besökaren hamnar på en tacksida eller liknande..

Jag vet naturligtvis att det är enklare att göra på vanligt sätt, men jag är ändå nyfiken på att testa detta. :p
Är det någon som har nåt liknande på lager? :q

Medlem sedan juli 20012 450 inlägg
#2

Du kan ju annars låta tacksidan göra jobbet och skicka upp en popup bara för skojs skull vid submit :)

Medlem sedan apr. 2002830 inlägg
#3

gör så att när formuläret skall skickas anropar ett javascript. Dels så öppnar det popupen, å skickar med de variablerna som du skall ha i mailet, när ditt phpscript har skickat iväg allt så stänger du enkelt fönstret. I javascriptet så har du också en rad som gör så att formulärsidan ändras till den sidan dit du vill komma.. hänger du mé?

Koden nedan är väl kanske inte så perfekt, orkar inte kolla upp exakt hur man skickat vidar epå bästa sätt.. kolla i javascript forumet om du inte ver själv..

Alltså:
<script language="Javascript">
<!--
function send()
{
window.open('mail.php?action=send','sendmail','bla bla bla');
window.location.href = "nysida.php";
}
// -->
</script>

<form onSubmit="javascript:send()" action="javascript:void();">
<input type="text" name="to">
</form>

Medlem sedan apr. 2002830 inlägg
#4

hm.. kanske inte så bra idé kom jag på... du får ju inte in variablerna i popupen juh! Hm.... *skäms*

Medlem sedan nov. 2000857 inlägg
#5

hehe, riktigt.. =)

Medlem sedan juni 200032 967 inlägg
#6

Det borde väl gå att göra någonting sånt här:

function send() 
{ 
window.open('','sendmail','bla bla bla'); 
document.formulärnamnet.target='sendmail';
document.formulärnamnet.submit();
location.href='dennyasidansomskaladdashär.php';
}

<form>-taggen har du som vanligt, och ser till att onsubmit-eventet triggar funktionen.

Mvh,

Medlem sedan apr. 2002830 inlägg
#7

det borde man iofs kunna göra... kanske loopa igenom alla inputrutorna och skapa $_GET variabler av dem som man sedan skickar med i:
window.open('mail.php?action=send&en=massa&skumma=variabler','sendmail','bla bla bla');

... så att det blir helt dynamiskt uppbyggt... skulle vara coolt.. kolla med JavaScript pöjkarna så hjälper de dig säkert!

Medlem sedan apr. 2002830 inlägg
#8

det blev skumt nu när niklasson ändrade sitt inlägg... hm... ;)

Medlem sedan nov. 2000857 inlägg
#9

sorry nkrantz.. ;)
Får testa lite ikväll och se hur det går..

Medlem sedan apr. 2002830 inlägg
#10

Lycka till! :)

Medlem sedan mars 2002777 inlägg
#11

http://www.jojoxx.net/faq/faqview.asp?q=47 kanske hjälper?

Medlem sedan nov. 2000857 inlägg
#12

Det löser sig inte. jag blir tokig.. ;)

Medlem sedan aug. 20002 975 inlägg
#13

Jojoxx variant fungerar bra. Testa detta.

Ditt formulär:

<script language="JavaScript">
function formPopup(target,properties){
var myWin=window.open("",target,properties);
return true;
}
</script>

<form action="popup.php" method="post" target="foo" 
  onSubmit="return formPopup('foo','width=200,height=200');">
Till:<br>
<input type="text" name="email"><br>
Meddelande:<br>
<textarea name="message"></textarea><br>
<input type="submit">
</form>

Popupen popup.php

<html><head></head>
<body onload="window.opener.location.href='tacksida.html';window.close();">
<?php  
// istället för mailkod
foreach($_POST as $key => $val){
  echo "$key = $val <br>";
}
print str_repeat(" ", 300) . "\n";
flush();
sleep(2);
// Slut istället
?>
</body></html>
Medlem sedan nov. 2000857 inlägg
#14

Nu fungerar det bättre, men popupen vägrar stänga förrän scriptet är färdigkört.

Jag vill att popupen skall köra igång scriptet som sedan körs på servern medans webbläsaren/besökaren fortsätter surfa..

Medlem sedan aug. 20002 975 inlägg
#15

Men sån tid brukar det inte inte ta att skicka iväg ett mail. Visserligen brukar jag ha header("Location: ") efter mail(), men det kan väl inte ha någon betydelse (och går i vilket fall inte att göra här).

Prova att ändra popup-php till:

<html><head></head>
<body>
<script type="text/javascript">
<!--
  window.opener.location.href='tacksida.html';
// -->
</script>

<?php  
// Mailkod
?>

<script type="text/javascript">
<!--
  window.close();
// -->
</script>

</body></html>
Medlem sedan nov. 2000857 inlägg
#16

Grejen är den att jag skall använda det till att skicka nyhetsbrev med. Har ett brev med > 13500 medlemmar och det tar en stund om jag skall behöva vänta på att webbläsaren tuggar igenom hela scriptet..

Jag använder följande kod också..

ini_set("max_execution_time","9999");
ignore_user_abort(true);
set_time_limit(9999);
Medlem sedan aug. 20003 575 inlägg
#17

Jag tror ínte att det går att få ett script att fortsätta köras när du stänger ner sidan. Även om jag inte är insatt i PHP.

Men du kan ju göra så att popupen lägger sig bakom alla
webläsar fönster.

Kommer inte ihåg koden för det men det finns.

Medlem sedan aug. 20002 975 inlägg
#18

Vad händer om man kör ett skript utan output till läsaren ?

Jag tänker närmast på att posta formuläret till ett skript utan output. Samtidigt i formuläret kör man på onSubmit ett skript som öppnar en popup. I den popupen skickas formulärssidan vidare och popupen stänger sig själv.
Ungefär som tidigare men vi separerar mailskript och popup.

Har inte provat själv och vet inte hur det går, men i allafall kan det ge en fundering.

Medlem sedan nov. 2000857 inlägg
#19

Nicke: Koden jag postade ovan gör precis det.. ;)

Medlem sedan aug. 20003 575 inlägg
#20

hehe, missade det..
men hmm, gör det något om webbläsaren står och tuggar?
du kan ju förstås göra ett program i VB eller C#/C/C++ för att skicka.

Jag gjorde en nyhetsbrevtjänst.. och då skickade den 20 mail i taget sedan reloadades sidan med info om vilken databasplats den var på också skickade den nästa 20 mail.

men som jag förstår så e du ute efter att starta ett script som sedan går av sig själv utan att du ens behöver ha på din dator?

259 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)