Avatar billede michaelb.dk Nybegynder
23. oktober 2003 - 18:56 Der er 45 kommentarer og
1 løsning

Submit knap i udu

Hvorfor virker min submit knap ikke!?

http://michaelb.dk/til.php

Når man sender får man ikke mailen, knappen ser således ud:

<input style='font-family: verdana; font-size: 8pt; background-color=#BFCFEF; border: 1px solid #193653' name=\"submit\" type=\"image\" src=\"send.gif\">

Hvis "type" er ændret til "submit" i stedet for "image" virker den dog!

Michael
Avatar billede roenving Novice
23. oktober 2003 - 19:03 #1
Hvorfor har du både font og background på ?-)

-- og hvad gør du når formen submittes ?o]
Avatar billede michaelb.dk Nybegynder
23. oktober 2003 - 19:04 #2
hvad jeg gør når formen submittes???
Avatar billede roenving Novice
23. oktober 2003 - 19:08 #3
Jeg har forstået at du ikke får afsendt mailen, men kan der tænkes at være noget i dit php-script, som gør at processen ikke fuldføres ?-)
Avatar billede michaelb.dk Nybegynder
23. oktober 2003 - 19:12 #4
nej for hvis jeg ændrer "type" fra "image" til "submit" så funker den
Avatar billede olebole Juniormester
23. oktober 2003 - 20:14 #5
<ole>

Prøv at vise mere kode ... også gerne en URL

/mvh
</bole>
Avatar billede olebole Juniormester
23. oktober 2003 - 20:15 #6
Ooooops ... URL'en var der  :)
Avatar billede olebole Juniormester
23. oktober 2003 - 20:16 #7
Frontend-koden virker upåklageligt ... du har fejl i din PHP-kode
Avatar billede michaelb.dk Nybegynder
24. oktober 2003 - 18:52 #8
<-- Start på sourcekoden -->
Avatar billede michaelb.dk Nybegynder
24. oktober 2003 - 18:52 #9
<style>
.formular {
  font-family: tahoma;
    font-size: 11px;
    color: #000000;
    text-decoration : none;

</style>

<?
if (!$submit) {

echo "
<form method=\"post\" action=\"$PHP_SELF\" name=\"post\">
<table bgcolor=\"#ECE9D8\" width=\"317\" style=\"border-left:1px solid #00138B; border-right:1px solid #00138B; border-top:1px solid #00138B;\"><img src=\"top.gif\"><tr><td valign=\"top\" class=\"formular\"><img src=\"til.gif\"> Til:&nbsp;&nbsp;&nbsp;</td><td>
      <SELECT style='font-family: verdana; font-size: 8pt; background-color=#BFCFEF; width:255' NAME=\"mail_to\">
      <OPTION value=\"michael@michaelb.dk\">Michael</option>
      <OPTION value=\"michaelb@lite.dk\">Michael2</option>
      <OPTION value=\"navn@domain.dk\">Navn</option>
      <OPTION value=\"navn@domain.dk\">Navn</option>
      <OPTION value=\"navn@domain.dk\">Navn</option>
      <OPTION value=\"navn@domain.dk\">Navn</option>
      <OPTION value=\"navn@domain.dk\">Navn</option>
      <OPTION value=\"navn@domain.dk\">Navn</option>
      </SELECT>
    </td>
  </tr>
  <tr>
    <td valign=\"top\" class=\"formular\"><img src=\"til.gif\"> Fra:&nbsp;&nbsp;&nbsp;</td>
    <td><input style='font-family: verdana; font-size: 8pt; background-color=#BFCFEF; ' SIZE=\"40\" type=\"text\" name=\"mail_from\"></td>
  </tr>
  <tr>
    <td valign=\"top\" class=\"formular\">Emne:&nbsp;&nbsp;&nbsp;</td>
    <td><input style='font-family: verdana; font-size: 8pt; background-color=#BFCFEF;' SIZE=\"40\" type=\"text\" name=\"mail_head\"></td>
  </tr>
</table>
<table bgcolor=\"#ECE9D8\" width=\"317\" style=\"border-left:1px solid #00138B; border-right:1px solid #00138B; border-bottom:1px solid #00138B;\">
  <tr>
    <td class=\"tekstspan\"><textarea style='font-family: verdana; font-size: 8pt; background-color=#BFCFEF; width:309; height:150' name=\"mail_text\" rows=\"6\" cols=\"26\"></textarea></td>
  </tr>
  <tr>
    <td><input name=\"submit\" type=\"image\" src=\"send.gif\"></td>
  </tr>
</table>
</form>
";
} elseif ($submit) {
mail("$mail_to","$mail_head","$mail_text","From:$mail_from");
}
?>
Avatar billede michaelb.dk Nybegynder
24. oktober 2003 - 18:52 #10
<-- Slut på sourcekoden -->
Avatar billede roenving Novice
25. oktober 2003 - 02:01 #11
Det er sikkert at du kan nøjes med:

} else {
mail("$mail_to","$mail_head","$mail_text","From:$mail_from");

-- jeg er usikker på om din kode skal hedde if(!$submit) for sådan som jeg umiddelbart har forstået det vil det være en henvisning til en variabel i formen, som jo kun vil være sat hvis der findes et felt med en værdi i !-)
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 15:15 #12
roencing det virkede tak :-)

Ved du hvordan jeg kan få resultatet (af indtastningerne) på en ny side når man har klikket send???
Avatar billede olebole Juniormester
25. oktober 2003 - 15:17 #13
Måden, du validerer, om formen er sendt, er ikke videre hensigtsmæssig - af flere grunde.
Dels har du ikke en variabel ved navn '$submit', når du sender med et billede. Knappens navn sendes ganske vist med - men i form af koordinatsættet, der beskriver klik-punktet. Prøv at lægge mærke til browserens adresselinie, når du fyrer denne form af:

<form action="test.html" method="get">
<input type="text" name="bla"><br>
<input type="image" name="submit" src="ET_BILLEDE.gif">
</form>

Lav i stedet et hidden-field:
  <input type="hidden" name="act" value="send_mail">

Spørg så i din PHP-kode:
  if ( isset($send_mail) && $send_mail<>"" ) {
      // Kode, der skal afvikles
  }

Det er langt bedre  ;o)
/mvh
Avatar billede olebole Juniormester
25. oktober 2003 - 15:19 #14
Vrrrrrøvl, schludder, schnot og bumzer ... du bør naturligvis spørge:

  if ( isset($act) && $act=="send_mail" ) {
      // Kode, der skal afvikles
  }

Aner ikke, hvad jeg tænkte med ... og vil heller ikke vide det  :oD
/mvh
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 15:21 #15
jeg ved slet ikke hvor du vil hen, beklager :-)
Kan du forklare nærmere?
Avatar billede olebole Juniormester
25. oktober 2003 - 15:26 #16
Hvad forstår du ikke?
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 15:27 #17
Hvorfor det sidstnævnte skulle være bedre... :-) sorry!!
Avatar billede olebole Juniormester
25. oktober 2003 - 15:33 #18
1. Fordi, du ikke kan spørge på knap-navnet, når du bruger et billede - test mit eksempel med formen.

2. Fordi, man ofte kan submitte en form ved at trykke 'Return', mens man 'står' i et text-felt ... så har du ikke et knapnavn på serveren, men formen er submittet alligevel.

3. Fordi, du først spørger: "Eksisterer der en variabel af det navn?":
  if ( isset($act) .......
og derefter spørger: "Lever den op til mine forventninger om dens værdi?":
  ... && $act=="send_mail" )

Man bør altid validere grundigt på det input, man får til backenden, da det kan være manipuleret på alle mulige måder. Det er god kode-praksis  :)
/mvh
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 15:53 #19
jamen jeg forstår stadig ikke hvad der skal ændres?
Er det submit knappen?
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 15:54 #20
(jeg er ikke php koder og arbejder kun med php udfra erfaring) :-)
Avatar billede olebole Juniormester
25. oktober 2003 - 16:03 #21
I din form indsætter du dette felt:
  <input type="hidden" name="act" value="send_mail">
Det er skjult, så brugeren ikke ser det - men vil, når formen bliver sendt til serveren, optræde som en variabel '$act' med værdien 'send_mail'.
Den kan du altså spørge, om er sat - og du kan spørge, om værdien af den er 'send_mail'. Hvis det er tilfældet, ved du formen er submittet og kan derfor sende mailen.

Knappen kan du derfor lave præcis, som du ønsker ... du bruger den ikke længere til noget på serveren.
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 16:12 #22
Nåhh ok, tak! Men ved du hvordan jeg kan gøre så formularen bliver redirected til en ny side (gerne i samme fil, hvis muligt) som udskriver "tak for din mail, du skrev: -hej med dig-) hvor de data man indtastede bliver vist?
Avatar billede olebole Juniormester
25. oktober 2003 - 16:18 #23
mail("$mail_to","$mail_head","$mail_text","From:$mail_from");
Header ( "Location: takkeside.php" );
exit;
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 16:19 #24
Warning: Cannot modify header information - headers already sent by (output started at /home/web/web11058/til.php:1) in /home/web/web11058/til.php on line 96
Avatar billede olebole Juniormester
25. oktober 2003 - 16:20 #25
Er det ikke at tale lidt ned til folk, at fortælle dem, hvad de netop har skrevet? Og hvad skal de bruge det til? Mailen er jo sendt og kan ikke ændres  :)
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 16:20 #26
er du sikker på den skal hedde header?
Avatar billede olebole Juniormester
25. oktober 2003 - 16:20 #27
Så har scriptet allerede skrevet noget ud til browseren ... evt. en blank linie.
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 16:21 #28
hehe måske... men det er smart f.eks. ved en bestilling af noget!! Eller så de kan tjekke at deres email var korrekt
Avatar billede olebole Juniormester
25. oktober 2003 - 16:22 #29
yups ... mit eksempel fejler intet. Men en header kan ikke sættes, efter noget er skrevet til browseren (så er body-delen jo påbegyndt og headeren kan ikke tilføjes mere)
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 16:23 #30
nej men jeg kan jo ikke sætte mit script i toppen... så kommer formularen til at sidde i toppen jo :)
Avatar billede olebole Juniormester
25. oktober 2003 - 16:24 #31
Hvis du endelig vil være smart, sender du to e-mails: én til dig og én til brugeren.
I den sidste kan du endda klsitre lidt reklame ind og skrive URL'en til sitet, så du er sikker på, brugeren kan finde tilbage, efter han har lukket browseren
Avatar billede olebole Juniormester
25. oktober 2003 - 16:26 #32
michael >> (25/10-2003 15:54:24) den strategi er ikke særlig hensigtsmæssig. Vil du lave noget som dette, må du beherske det aller mest fundamentale.
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 16:30 #33
16:24:26 - Det er sgu'da en super ide!!! Men kan du hjælpe mig videre?
16:26:19 - Hmm :-)
Avatar billede olebole Juniormester
25. oktober 2003 - 16:57 #34
Du laver et dokument med dette aller øverst:

<?

if ( isset($act) && $act=="send_mail" ) {
    mail("$mail_to","$mail_head","$mail_text","From:$mail_from");
   
    # Og en mail til brugeren -----------------------------------
    $str = "Noget reklame-halløj\nog en ny linie her.\n-------------------------------------\n\n";
    mail("$mail_from","Sendt mail fra www.noget.dk [$mail_head]","$str.$mail_text","From:info@noget.dk");
   
    Header ( "Location: takkeside.php" );
    exit;
}

?>

Ingen tomme liner over '<?' ...!
Under dette skriver du så din form i helt ren HTML - begyndende med:
  <form method="post" action="<?=$PHP_SELF?>" name="post">

/mvh
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 17:08 #35
så kommer jeg bare til www.domain.dk/$PHP_SELF og ingen mail i indbakken.
Hvis du har msn er min adresse michaelb @ lite.dk :-)
Avatar billede olebole Juniormester
25. oktober 2003 - 17:15 #36
Nej, jeg bruger ikke MSN. Det kan hænge sammen med, din server har sat register globals off. Det gør man næsten alle steder idag - og så skal du tilgå variabler i et andet scope.

Men helt ærligt: For at køre bil, kræves det, man kan kende en bagaksel fra vinduesviskerne ... og i det hele taget ved, køretøjet bevæger sig på hjul.
Køb en par hæfter om PHP og find ud af, hvad du har gang i  ;o)
/mvh
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 17:26 #37
Det ku da godt være jeg skulle læse mig til php men så meget går jeg heller ikke op i det og synes egentlig at finde godt ud af det med exp.dk :-)

Men du kan ikke hjælpe mig yderligere?
Avatar billede olebole Juniormester
25. oktober 2003 - 17:33 #38
Jojo, jeg kan sagtens ... men jeg gider ikke spilde mere tid på dig, når du så stædigt insisterer på ikke at gide lære noget. Jeg vil hellere end gerne bruge en masse af min fritid på folk, der selv gider at gøre en indsats selv.
Ugidelige fugleunger, der bare sidder med kæften åben og venter på, nogen kommer og smider noget i halsen på dem, virker ikke overvældende inspirerende på mon hjælpelyst. Jeg er ude af spørgsmålet ...
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 17:34 #39
Jeg rettede "Location: takkeside.php" til "Location: $PHP_SELF" og det virker da :-)

<?

if ( isset($act) && $act=="send_mail" ) {
    mail("$mail_to","$mail_head","$mail_text","From:$mail_from");

    # Og en mail til brugeren -----------------------------------
    $str = "Noget reklame-halløj\nog en ny linie her.\n-------------------------------------\n\n";
    mail("$mail_from","Sendt mail fra www.noget.dk [$mail_head]","$str.$mail_text","From:info@noget.dk");

    Header ( "Location: $PHP_SELF" );
    exit;
}

?>
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 17:34 #40
olebole > hehe ok
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 17:52 #41
du skal vel ha dine points, lol
Avatar billede michaelb.dk Nybegynder
25. oktober 2003 - 18:09 #42
ole, jeg erstattede

Header ( "Location: $PHP_SELF" );

med

echo "Mailen er sendt!";

og nu, når jeg klikker send, kommer beskeden frem!

Nu ser det således ud:

<?

if ( isset($act) && $act=="send_mail" ) {
    mail("$mail_to","$mail_head","$mail_text","From:$mail_from");

    # Og en mail til brugeren -----------------------------------
    $str = "Denne email var sendt fra www.fugleforum.dk\nDu modtager hermed en kopi.\n-------------------------------------\n\n";
    mail("$mail_from","Fw: $mail_head","$str $mail_text","From:$mail_to");
    echo "Mailen er sendt!";

    exit;
}

?>
<form method="post" action="<?=$PHP_SELF?>" name="post" onSubmit='return val(this);'>
<input type="hidden" name="act" value="send_mail">

Formularer og bla bla

<input type="image" src="send.gif">
Avatar billede olebole Juniormester
25. oktober 2003 - 23:32 #43
Sådan kan man også gøre  :)
Avatar billede michaelb.dk Nybegynder
26. oktober 2003 - 00:56 #44
ja for det andet virkede ikke
Avatar billede michaelb.dk Nybegynder
26. oktober 2003 - 00:56 #45
...på mit webhotel!
Avatar billede michaelb.dk Nybegynder
09. november 2003 - 14:13 #46
jeg lukker!
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