Avatar billede funkylezzz Praktikant
19. juni 2011 - 20:39 Der er 5 kommentarer

Modtage en mail når en bruger opretter en tråd i gæstebog.

Hej jeg vil høre om jeg kan sætte et stykke kode ind i max guestbook så jeg modtager en mail når en bruger skriver i gæstebogen.


<form class="iform1" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
      Navn:<br/>
    <input type="text" name="name" size="30"/><br/><br/>
    Email:<br/>
    <input type="text" name="email" size="30"/><br/><br/>
      Din besked:<br/>
    <textarea name="message" cols="49" style="height: 54px"></textarea><br/>
    <center><input type="submit" name="submit" value="Gem" /></center>
  </form>
<?php
/**
* Max's Guestbook
*
* This is the Max's Guestbook business logic class.
* For more details please read the readme.txt
*/
?>
<?php
class maxGuestbook{
  var $messageDir = 'messages';
  var $dateFormat = 'D  j  M  G:i:s  Y';
  var $itemsPerPage = 20;
  var $messageList;
 
function processGuestbook(){
  if (isset($_POST['submit'])) {
      $this->insertMessage();
  }
  $page = isset($_GET['page']) ? $_GET['page'] : 1;
 
  $this->displayGuestbook($page);
}
 
function getMessageList(){
   
  $this->messageList = array();
 
    // Open the actual directory
    if ($handle = @opendir($this->messageDir)) {
        // Read all file from the actual directory
        while ($file = readdir($handle))  {
            if (!is_dir($file)) {
              $this->messageList[] = $file;
          }
        }
    }   
   
    rsort($this->messageList);
   
    return $this->messageList;


function displayGuestbook($page=1){
      $list = $this->getMessageList();
      //echo "<center><a href='add.php'>Leave a message</a></center>";
      echo "<table class='newsList1'>";
     
      //Get start point and end point
      $startItem = ($page-1)*$this->itemsPerPage;
      if (($startItem + $this->itemsPerPage) > sizeof($list)) $endItem = sizeof($list);
      else $endItem = $startItem + $this->itemsPerPage;
     
      for ($i=$startItem;$i<$endItem;$i++){
        //foreach ($list as $value) {
        $value = $list[$i];
          $data = file($this->messageDir.DIRECTORY_SEPARATOR.$value);
          $name  = trim($data[0]);
          $email = trim($data[1]);
        $submitDate = trim($data[2]);   
        unset ($data['0']);
        unset ($data['1']);
        unset ($data['2']);
         
        $content = "";
        foreach ($data as $value) {
              $content .= $value;
        }
         
          echo "<div><div align='left'><a href=\"mailto:$email\">$name</a></div>
                    <div class='right1'>$submitDate</div></div>";
          echo "<div><div id=\"text\">".nl2br(htmlspecialchars($content))."<br/></div></div>";
      }
      echo "</table>";
      if (sizeof($list) == 0){
        echo "<center><p>No messages at the moment!</p><p>&nbsp;</p></center>";
      }
      // Create pagination
      if (sizeof($list) > $this->itemsPerPage){
        echo "<div id=\"navigation1\">";
        if ($startItem == 0) {
            if ($endItem < sizeof($list)){
              echo "<div id=\"nright1\"><a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\" >Next &raquo;</a></div>";
            } else {
              // Nothing to display
            }
        } else {
            if ($endItem < sizeof($list)){
              echo "<div id=\"nleft1\"><a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\" >&laquo; Prev</a></div>";
              echo "<div id=\"nright1\"><a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\" >Next &raquo;</a></div>";
            } else {
              echo "<div id=\"nleft1\"><a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\" >&laquo; Prev</a></div>";
            }
        }
       
        echo "<br/></div><br/>";
      }
      echo "";
      $this->displayAddForm();
}

function displayAddForm(){
?> 
 
 
<?php 
}

function insertMessage(){
  $name  = isset($_POST['name']) ? $_POST['name'] : 'Anonym';
  $email  = isset($_POST['email']) ? $_POST['email'] : '';
  $submitDate  = date($this->dateFormat);
  $content = isset($_POST['message']) ? $_POST['message'] : '';
 
  if (trim($name) == '') $name = 'Anonym';
  if (strlen($content)<5) {
      exit();
  }
 
  $filename = date('DjMGis');
  if (!file_exists($this->messageDir)){
      mkdir($this->messageDir);
  }
  $f = fopen($this->messageDir.DIRECTORY_SEPARATOR.$filename.".txt","w+");       
  fwrite($f,$name."\n");
  fwrite($f,$email."\n");
  fwrite($f,$submitDate."\n");
  fwrite($f,$content."\n");
  fclose($f);
 
}
}
?>
Avatar billede heinzdmx Nybegynder
19. juni 2011 - 20:48 #1
Tilføj følgende til din insertMessage()


$to      = 'nobody@example.com';
$subject = 'Ny besked i din gæstebog';
$message = 'Der er en ny besked i din gæstebog fra'.  isset($_POST['email']) ? $_POST['email'] : 'anonym';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);


Der skal muligvis tages ekstra forholds regler mod spam, tag et kig på:
http://php.net/manual/en/function.mail.php
Avatar billede funkylezzz Praktikant
19. juni 2011 - 21:19 #2
Jeps det virker. tak
Kan jeg ændre dette så jeg kan repley til brugerens email.

'Reply-To: webmaster@example.com' . "\r\n
Avatar billede kjeldsted Novice
19. juni 2011 - 21:35 #3
Reply-to adressen kan være lige hvad det skulle være, så ja.
Avatar billede kjeldsted Novice
19. juni 2011 - 21:39 #4
Og så skal From adressen desuden også liiige ændres til en gyldig-adresse (evt. en noreply), hvor du jo fx. kan skrive
'Navnet-på-min-side <noreply@domæne.dk>'
Så står der bare Navnet-på-min-side som afsender.

Og på visse webhosts SKAL afsender-adressen (Ikke nødvendigvis reply-to adressen) fra samme domæne som afsender mailen.
Avatar billede kjeldsted Novice
09. oktober 2011 - 12:08 #5
Er det ved at være på tide at få lukket spørgsmålet? :)
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

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