Avatar billede moore Nybegynder
01. december 2005 - 13:55 Der er 6 kommentarer og
1 løsning

Sende mail når der bliver klikket ok

Hej

Har følgende php kode, som jeg har fundet på nettet.
Det er en simpel gæstebog, som jeg godt vil udvide lidt.
At når man klikker på "gem i gæstebog"..
så modtager jeg en mail på, at der er skrevet i den.

Det skal siges.. jeg fatter IKKE php, og mit webhotel desværre ikke understøtter msaccess.
Så håber en hjælpsom person vil give lidt hjælp :)

Her er koden til gæstebogen..

<?php
// Definer navn på txt-fil og tjek at den findes, og hvis ikke, så lav den.
$filnavn = "gaestebog.txt";

if(!file_exists($filnavn)) {

$fp = fopen($filnavn, 'w+');
if ($fp) {
fputs($fp, "");
fclose($fp);
    }
chmod($filnavn, 0777);
}
clearstatcache();

// Er der klikket på submitknappen?
if (isset($_POST['navn'], $_POST['email'], $_POST['homepage'], $_POST['besked'])) {

//hvis textarea-feltet er tomt, er der ingen grund til at skrive noget i textfilen
    if(empty($_POST['besked'])) {
header("Location:". $_SERVER['PHP_SELF'] ."");
exit;
    }

//definerer $felter som et array, for nemmere at kunne "bearbejde" input
$felter = array();

// en foreach til at bearbejde inputs
// 1. Fjerne html tags
// 2. Fjerne alle | tegn da de bruges til at holde info adskilt
// 3. Gøre brug af LJweb\'s tagster
foreach($_POST as $value) {
$value = strip_tags($value);
$value = ereg_replace("(\|)", "", $value);

// LJweb's tagster, som kan findes på "http://ljweb.biz" eller "http://lars.jensen.name"
// Spørg mig IKKE om hvordan den virker, men den virker! :O) (steffen)
  $value = " ".$value;
  $value = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])((ftp|http|https|telnet|news|nttp|nntp|file):\/\/[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+(\\[|\\]|[a-z0-9~#%@\&:;,=\?\/_\+-])+)", "\\1<A HREF=\"\\2\" TARGET=\"_blank\">\\2</A>", $value);
  $value = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])(www\.[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+[a-z0-9~#%@\&:;,=\?\/_\+-]+)", "\\1<A HREF=\"http://\\2\" TARGET=\"_blank\">\\2</A>", $value);

  $value = eregi_replace("([_\.0-9a-z-]+@([0-9a-z-]+)+\.[a-z]{2,4})","<A HREF=\"mailto:\\1\">\\1</A>", $value);
// Slut på tagster


//Undgå at \ bliver sat før ' og " når der skrives til filen
$value = stripslashes($value);

// Bruger array'et $felter
// $felter[0] starter med første input felt, $_POST['navn'], o.s.v.
$felter[] = $value;
    }

//Omdan f.eks. æ til htmlkode, lagt her for ikke at "forstyrre" tagsteren
$felter[0] = htmlentities($felter[0]);
$felter[3] = htmlentities($felter[3]);

// Erstatter entertryk fra textarea'et med en enkelt <br>-tag så linieskift osse vil blive vist
$felter[3] = ereg_replace("(\r\n|\n\r|\n|\r)+", "<br>", $felter[3]);


// Hvis navn $felter[0] ikke er indtastet, skriver vi anonym i stedet
    if(empty($felter[0])) {
$felter[0] = "Anonym";
    }

// finder tidspunkt
$tid=date("d-m-Y : H:i:s",time());

// Den streng som skal skrives til textfilen, startende med tidspunkt og afluttet med en ny linie
$str = $tid ."|". $felter[0] ."|". $felter[1] ."|". $felter[2] ."|". $felter[3] ."\n";   


// Åben txt-filen for skrivning
$fp = fopen($filnavn, 'a+');
if ($fp) {
fputs($fp, $str);
fclose($fp);

    }
//redirecte til filen selv
header("Location:". $_SERVER['PHP_SELF'] ."");
exit;
}
?><html><head><title>G&aelig;stebog</title>
<style type="text/css">
body, td, th {font-family: arial; font-size: 0.8em; color: black; background-color: #ffffff;}
a:link {color: #4f0000; text-decoration: underline;}
a:visited {color: black; text-decoration: underline;}
a:hover {color: #4f0000; text-decoration: none;}
a.menu:hover {color: #4f0000; text-decoration: none; background-color: #cfd192;}

.big {font-size: 2.4em;}
.input {color: black; background-color: #ffffff; font-family: arial; font-size: 0.9em; border-color: black; border-width: 1px;}
.submit {font-family: arial; font-size: 0.8em; border-width: 1px; border-color: black;}
.fra {background-color: #999966; color: white;}
.besked {background-color: #eaeaea;  color: black; padding-left: 16px; padding-left: 10px;}
</style>
</head>
<body>
<center>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0" width="70%" cellspacing="0" cellpadding="4"><tr>
    <td class="big" align="center">G&aelig;stebog</td>
</tr><tr>
    <td align="center" style="border-bottom: solid black; border-width: 1px;"><table border="0" cellspacing="0" cellpadding="4"><tr>

<td>Dit navn:<br>
<input type="text" name="navn" size="24" class="input"></td>
<td>Din email:<br>
<input type="text" name="email" size="24" class="input"></td>
</tr><tr>
<td colspan="2">Din hjemmeside:<br>
<input type="text" name="homepage" size="52" value="http://" class="input"></td>
</tr><tr>
<td colspan="2" align="center"><textarea cols="48" rows="8" name="besked" class="input"></textarea><br>
<input type="submit" value="Tilf&oslash;j indl&aelig;g" class="submit"></td>

</tr></table></td>

</tr><?php

$indhold = file($filnavn);

// for-løkke til at hente hver linie ud af txt-filen.
// Startende med sidste linie først! Tak til jakoba og tipsen fra eksperten for hjælp
for ($i = count($indhold)-1; $i >=0; $i--) {

// Del hver linie op efter " | " og "ignorer" nylinie tegn, "chop"
$vis = split("\|", chop($indhold[$i]));

// Lav output
echo"<tr>\n";
echo"    <td class=\"fra\" style=\"border-left: solid black; border-right: solid black; border-width: 1px;\">Indl&aelig;g af ". $vis[1] ." d. ". $vis[0] ." &nbsp; &nbsp; Email: ". $vis[2] ." &nbsp; &nbsp; ". $vis[3] ."</td>\n";
echo"</tr><tr>\n";
echo"    <td class=\"besked\" style=\"border-left: solid black; border-right: solid black; border-bottom: solid black; border-width: 1px;\">". $vis[4] ."</td>\n";
echo"</tr>";
    }
?></table>
</form>
</center>
</body></html>
Avatar billede dcheng Novice
01. december 2005 - 15:54 #1
noget på stil med dette:



<?php
// Definer navn på txt-fil og tjek at den findes, og hvis ikke, så lav den.
$filnavn = "gaestebog.txt";

if(!file_exists($filnavn)) {

$fp = fopen($filnavn, 'w+');
if ($fp) {
fputs($fp, "");
fclose($fp);
    }
chmod($filnavn, 0777);
}
clearstatcache();

// Er der klikket på submitknappen?
if (isset($_POST['navn'], $_POST['email'], $_POST['homepage'], $_POST['besked'])) {

    $message.= "Noget email tekst\n";
    $message.= "Mere emailtekst\n";
    $subject = "Emne\n";
    $headers.= "MIME-Version: 1.0\n";
    $headers.= "Content-type: text/html; charset=iso-8859-1\n";
    $headers.= "From: MitNavn <minemail@hotmail.com>\n";
    mail($mail,$subject,$message,$headers);

//hvis textarea-feltet er tomt, er der ingen grund til at skrive noget i textfilen
    if(empty($_POST['besked'])) {
header("Location:". $_SERVER['PHP_SELF'] ."");
exit;
    }

//definerer $felter som et array, for nemmere at kunne "bearbejde" input
$felter = array();

// en foreach til at bearbejde inputs
// 1. Fjerne html tags
// 2. Fjerne alle | tegn da de bruges til at holde info adskilt
// 3. Gøre brug af LJweb\'s tagster
foreach($_POST as $value) {
$value = strip_tags($value);
$value = ereg_replace("(\|)", "", $value);

// LJweb's tagster, som kan findes på "http://ljweb.biz" eller "http://lars.jensen.name"
// Spørg mig IKKE om hvordan den virker, men den virker! :O) (steffen)
  $value = " ".$value;
  $value = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])((ftp|http|https|telnet|news|nttp|nntp|file):\/\/[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+(\\[|\\]|[a-z0-9~#%@\&:;,=\?\/_\+-])+)", "\\1<A HREF=\"\\2\" TARGET=\"_blank\">\\2</A>", $value);
  $value = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])(www\.[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+[a-z0-9~#%@\&:;,=\?\/_\+-]+)", "\\1<A HREF=\"http://\\2\" TARGET=\"_blank\">\\2</A>", $value);

  $value = eregi_replace("([_\.0-9a-z-]+@([0-9a-z-]+)+\.[a-z]{2,4})","<A HREF=\"mailto:\\1\">\\1</A>", $value);
// Slut på tagster


//Undgå at \ bliver sat før ' og " når der skrives til filen
$value = stripslashes($value);

// Bruger array'et $felter
// $felter[0] starter med første input felt, $_POST['navn'], o.s.v.
$felter[] = $value;
    }

//Omdan f.eks. æ til htmlkode, lagt her for ikke at "forstyrre" tagsteren
$felter[0] = htmlentities($felter[0]);
$felter[3] = htmlentities($felter[3]);

// Erstatter entertryk fra textarea'et med en enkelt <br>-tag så linieskift osse vil blive vist
$felter[3] = ereg_replace("(\r\n|\n\r|\n|\r)+", "<br>", $felter[3]);


// Hvis navn $felter[0] ikke er indtastet, skriver vi anonym i stedet
    if(empty($felter[0])) {
$felter[0] = "Anonym";
    }

// finder tidspunkt
$tid=date("d-m-Y : H:i:s",time());

// Den streng som skal skrives til textfilen, startende med tidspunkt og afluttet med en ny linie
$str = $tid ."|". $felter[0] ."|". $felter[1] ."|". $felter[2] ."|". $felter[3] ."\n";   


// Åben txt-filen for skrivning
$fp = fopen($filnavn, 'a+');
if ($fp) {
fputs($fp, $str);
fclose($fp);

    }
//redirecte til filen selv
header("Location:". $_SERVER['PHP_SELF'] ."");
exit;
}
?><html><head><title>G&aelig;stebog</title>
<style type="text/css">
body, td, th {font-family: arial; font-size: 0.8em; color: black; background-color: #ffffff;}
a:link {color: #4f0000; text-decoration: underline;}
a:visited {color: black; text-decoration: underline;}
a:hover {color: #4f0000; text-decoration: none;}
a.menu:hover {color: #4f0000; text-decoration: none; background-color: #cfd192;}

.big {font-size: 2.4em;}
.input {color: black; background-color: #ffffff; font-family: arial; font-size: 0.9em; border-color: black; border-width: 1px;}
.submit {font-family: arial; font-size: 0.8em; border-width: 1px; border-color: black;}
.fra {background-color: #999966; color: white;}
.besked {background-color: #eaeaea;  color: black; padding-left: 16px; padding-left: 10px;}
</style>
</head>
<body>
<center>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0" width="70%" cellspacing="0" cellpadding="4"><tr>
    <td class="big" align="center">G&aelig;stebog</td>
</tr><tr>
    <td align="center" style="border-bottom: solid black; border-width: 1px;"><table border="0" cellspacing="0" cellpadding="4"><tr>

<td>Dit navn:<br>
<input type="text" name="navn" size="24" class="input"></td>
<td>Din email:<br>
<input type="text" name="email" size="24" class="input"></td>
</tr><tr>
<td colspan="2">Din hjemmeside:<br>
<input type="text" name="homepage" size="52" value="http://" class="input"></td>
</tr><tr>
<td colspan="2" align="center"><textarea cols="48" rows="8" name="besked" class="input"></textarea><br>
<input type="submit" value="Tilf&oslash;j indl&aelig;g" class="submit"></td>

</tr></table></td>

</tr><?php

$indhold = file($filnavn);

// for-løkke til at hente hver linie ud af txt-filen.
// Startende med sidste linie først! Tak til jakoba og tipsen fra eksperten for hjælp
for ($i = count($indhold)-1; $i >=0; $i--) {

// Del hver linie op efter " | " og "ignorer" nylinie tegn, "chop"
$vis = split("\|", chop($indhold[$i]));

// Lav output
echo"<tr>\n";
echo"    <td class=\"fra\" style=\"border-left: solid black; border-right: solid black; border-width: 1px;\">Indl&aelig;g af ". $vis[1] ." d. ". $vis[0] ." &nbsp; &nbsp; Email: ". $vis[2] ." &nbsp; &nbsp; ". $vis[3] ."</td>\n";
echo"</tr><tr>\n";
echo"    <td class=\"besked\" style=\"border-left: solid black; border-right: solid black; border-bottom: solid black; border-width: 1px;\">". $vis[4] ."</td>\n";
echo"</tr>";
    }
?></table>
</form>
</center>
</body></html>
Avatar billede moore Nybegynder
02. december 2005 - 10:38 #2
Hej

Jo.. det er noget lignede det jeg søger.
Nu skal der bare tilføjes at, feltet

"message" = $_POST['besked'] området.
$headers.= "From: MitNavn <minemail@hotmail.com>\n"; = $_POST['email'] området.

Men hvordan ser det ud i PHP, når man skal det??

// Er der klikket på submitknappen?
if (isset($_POST['navn'], $_POST['email'], $_POST['homepage'], $_POST['besked'])) {

    $message.= "Noget email tekst\n";
    $subject = "Emne\n";
    $headers.= "MIME-Version: 1.0\n";
    $headers.= "Content-type: text/html; charset=iso-8859-1\n";
    $headers.= "From: MitNavn <minemail@hotmail.com>\n";
    mail($mail,$subject,$message,$headers);
Avatar billede dcheng Novice
02. december 2005 - 12:10 #3
Jeg vil nok ikke bruge isset, idet den spørger om variablen er sat.. hvis der bliver postet vil den jo altid være sat. Så du skal validere om den er lig '' altså ingenting. Hvis det altså er det du vil.

Dette udtryk tvinger navn,email,homepage,besked til at være ydfyldt.

// Er der klikket på submitknappen?
if (($_POST['navn']!='') AND ($_POST['email']!='') AND ($_POST['homepage']!='') AND ($_POST['besked']!='')) {

    $message.= "Noget email tekst\n";
    $subject = "Emne\n";
    $headers.= "MIME-Version: 1.0\n";
    $headers.= "Content-type: text/html; charset=iso-8859-1\n";
    $headers.= "From: MitNavn <minemail@hotmail.com>\n";
    mail($mail,$subject,$message,$headers);

............. evt. noget mere kode ............
}
Avatar billede dcheng Novice
02. december 2005 - 12:15 #4
Hvis brugerens besked skal være beskeden i emailen skal den se således ud:

// Er der klikket på submitknappen?
if (($_POST['navn']!='') AND ($_POST['email']!='') AND ($_POST['homepage']!='') AND ($_POST['besked']!='')) {

    $message = $_POST['besked'];
    $subject = "Emne\n";
    $headers.= "MIME-Version: 1.0\n";
    $headers.= "Content-type: text/html; charset=iso-8859-1\n";
    $headers.= "From: MitNavn <minemail@hotmail.com>\n";
    mail($mail,$subject,$message,$headers);

............. evt. noget mere kode ............
}
Avatar billede moore Nybegynder
02. december 2005 - 12:29 #5
lige et sidste spørgsmål, så tror jeg efterhånden jeg har fattet lidt af det PHP værk.

Hvor skal jeg skrive min email adresse ind.
Altså, når folk klikker på "submit" knappen, så skal jeg modtage en mail, med indholdet af det som brugeren har skrevet. Min mail er : thomas@thomasknielsen.dk
Avatar billede dcheng Novice
02. december 2005 - 19:51 #6
Hver gang du ser en funktion er det en god ide at gå ind på www.php.net også finde den så du kan se hvordan man gør.

I dette tilfælde: http://dk2.php.net/manual/da/function.mail.php
Jeg lærte php kun ved hjælp af www.webcafe.dk som du også bør gå igennem.

men sådan skal den se ud

// Er der klikket på submitknappen?
if (($_POST['navn']!='') AND ($_POST['email']!='') AND ($_POST['homepage']!='') AND ($_POST['besked']!='')) {

    $mail = "thomas@thomasknielsen.dk";
    $message = $_POST['besked'];
    $subject = "Emne\n";
    $headers.= "MIME-Version: 1.0\n";
    $headers.= "Content-type: text/html; charset=iso-8859-1\n";
    $headers.= "From: MitNavn <minemail@hotmail.com>\n";
    mail($mail,$subject,$message,$headers);

............. evt. noget mere kode ............
}
Avatar billede moore Nybegynder
03. december 2005 - 17:58 #7
Prøver det lige. tak for hjælpen
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