Avatar billede pepperfar Nybegynder
16. august 2006 - 17:51 Der er 12 kommentarer

lille ændring i php script

Hej

Hvordan laver jeg en lille ændring i denne formmail så den popper op med svaret om mailen er blevet sendt, i et nyt vindue?

"Sende" koden er:

<?php
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
!empty($_POST['message']) &&  // tjek, at der er skrevet en besked

// her følger sikringen mod spambotter
!strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  stripslashes(strip_tags($_POST['message'])), $headers))
  {
  echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
  }
  else
  {
  echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
  }
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}
?>

Hentet fra http://www.hjemmesideskolen.dk/scripts/phpmail.php
Avatar billede coderdk Praktikant
17. august 2006 - 01:03 #1
Hvad med bare at bruge javascript alerts?

echo "<script type='text/javascript'>alert('Tak for din henvendelse. Jeg svarer så hurtigt som muligt.');</script>";

Eller hvis det skal være pænere:

echo "<script type='text/javascript'>window.onload = function () { alert('Tak for din henvendelse. Jeg svarer så hurtigt som muligt.'); }</script>";
Avatar billede pepperfar Nybegynder
17. august 2006 - 01:29 #2
Rigtig god ide. Jeg ser lige om det virker. Du kan lave et svar imens :)
Avatar billede pepperfar Nybegynder
17. august 2006 - 01:43 #3
Hmm hvordan får jeg scriptet til at blive i samme url. Scriptet fremsender den nemlig til sender.php når man trykker på "send"?
Avatar billede coderdk Praktikant
17. august 2006 - 03:32 #4
Ikke forstået? Du vil ikke have at alert'en skal komme på sender.php? Så kan du bare redirecte med header( "location: andet_script.php?response=1" ); og ændre responsnummeret alt efter hvad resultatet blev, og i andet_script.php så lave:

if ( !empty( $_GET['response'] ) && $resp = $_GET['response'] )
{
  if ( $resp == 1 )
  {
    echo "<script type='text/javascript'>window.onload = function () { alert('Tak for din henvendelse. Jeg svarer så hurtigt som muligt.'); }</script>";
  } elseif ( $resp == 2 )
  {
    echo "<script type='text/javascript'>window.onload = function () { alert('E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!'); }</script>";
  }
}

osv :)
Avatar billede pepperfar Nybegynder
17. august 2006 - 10:43 #5
Hmm kan ikke få det til at virke, Det jeg mente var at når der trykkes på "send", kommer alert´en frem og giver besked om den er sendt eller ej, når så der trykkes på "ok", skifter siden url til en blank side.

Kan man lave det sådan at hvis der er fejl i beskeden, eller at alle felter ikke er udfyldt kommer alerten op, men bliver den i samme url. Men hvis beskeden sendes korrekt kommer alert og siger at beskeden er sendt korrekt og derefter skifter url til fx. startsiden?

Håber du forstår.

Hvis du kan give mig hele koden til dette, hæver jeg point til 300. &#61514;
Avatar billede coderdk Praktikant
17. august 2006 - 11:35 #6
Tag dit eksisterende script, og lav linjen:

echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";

om til:

echo "<script type='text/javascript'>window.onload = function () { alert('Tak for din henvendelse. Jeg svarer så hurtigt som muligt.'); window.location.href = 'blankside.php'; }</script>";

'blankside.php' kan evt. laves om til 'about:blank' hvis den vitterligt bare skal være blank/tom/uden adresse.

Dette gentager du bare for resten af mulighederne...

Du må ikke give mere end 200 pts ;) Men de 30 er fine nok til denne løsning ;)
Avatar billede pepperfar Nybegynder
17. august 2006 - 15:40 #7
Vi er der næsten ;).

Hvis man har skrevet ugyldig data i et af felterne, kan jeg sende brugeren tilbage til "kontakt siden" via den url-funktion du lige have givet mig, men så er alt det indtastede data jo væk. Kan man lave en tilbage funktion i alerten?
Avatar billede coderdk Praktikant
17. august 2006 - 15:48 #8
du kan måske bare udskifte window.location med window.back() ? :)
Avatar billede pepperfar Nybegynder
17. august 2006 - 16:04 #9
Altså sådan her: 
echo "<script type='text/javascript'>window.onload = function () { alert('E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!'); window.back().href = 'http://www.mollegaardislandsheste.dk/?Kontakt'; }</script>";
Avatar billede coderdk Praktikant
17. august 2006 - 23:02 #10
nej:

echo "<script type='text/javascript'>window.onload = function () { alert('E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!'); window.back(); }</script>";
Avatar billede pepperfar Nybegynder
20. august 2006 - 21:33 #11
Kan altså ikke få det til at virke, har du årøvet at loade scriptet på din com?
Avatar billede pepperfar Nybegynder
21. august 2006 - 00:48 #12
Jeg har oploadet det på følgende adresse:
www.billighosting.dk/mail/mail.php
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester