-- 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 !-)
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:
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
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.
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?
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
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 :)
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)
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
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">
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
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 ...
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");
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!";
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.