Använder hoglinds mailscript, men jag har försökt modifiera det lite själv. Lyckas ju inte så bra - oväntat... :p
<?php
$mottagare = array(
'1' => array('namn', 'mail'),
'2' => array('namn', 'mail'),
'3' => array('namn', 'mail'),
'4' => array('namn', 'mail'),
'5' => array('namn', 'mail')
)
//för de olika personer man ska kunna välja att skicka till.
?>
<?php
$din_site="weoo";
?>
<div id="kontakta">
<form action="" method="post">
<select id="to" name="to" tabindex="1">
<?php
foreach ($mottagare as $key => $val) {
echo "<option value=\"$key\">$val[0]</option>\n";
//i den här selecten väljs personen man vill skicka till
}
?>
</select>
<fieldset>
<h3>namn:</h3>
<input type="text" name="name" size="40" />
<h3>ämne:</h3>
<input type="text" name="subject" />
<h3>e-post:</h3>
<input type="text" name="email" size="40" />
<h3>Telefonnummer</h3>
<input type="text" name="telefon" />
<h3>skriv ditt meddelande här:</h3>
<textarea name="message" rows="9" cols="55"></textarea><br />
<button name="submit" type="submit" value="send">skicka</button>
<button name="submit" type="reset" value="reset">rensa </button>
</fieldset>
</form>
<?php
extract($_POST);
if ($_POST['submit']) {
if($name && $subject && $email && $message ) { //kollar så alla fält är ifyllda
if (return_valid($email)) {
//$message = about_mail()."\n"."\n".$message; //funktion som tilldelar message en del info
$message = about_mail()."\n";
foreach($_POST AS $key=>$val) {
$message .= $key .": ". $val ."\n";
}
mail($mottagare,$subject,$message,"From: $name <$email>"); // skickar mailet, och message
$newlog=new logging("logs","log.txt","log.xml"); //instantierar logg klassen
$newlog->create_txt(); //kör loggfunktioner i logg klassen
$newlog->create_xml();
echo "<h2>Meddelandet skickat!</h2>
<p>Vi svarar så fort vi kan. Skulle det ta för lång tid så skicka ett nytt.</p>";
} else {
echo '<p class="red">Felaktig mailadress.</p>';
}
} else {
print '<p class="red">Fyll i alla fält</p>';
}
}
// Returnerar sant om det är en korrekt adress.
function return_valid($e_mail) {
if(
ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $e_mail)) {
return TRUE;
}
else {
return FALSE;
}
}
// returnerar info om adressaten i mailet. i meddelande delens topp.
function about_mail() {
global $din_site;
//$headline3="| obs!, denna info sparas i xml filen log.xml "."\n";
//$headline2="| ----------------------------------------------"."\n";
$headline1="Mail ifrån ".$din_site."\n";
$date.="Den: ".date("D-d-M-Y")."\n";
$time.="Klockan: ".date("H:i:s")."\n";
$ip.="Från ip nummer: ".$_SERVER['REMOTE_ADDR']."\n";
$port.="Adressatens port: ".$_SERVER['REMOTE_PORT']." \n";
$browser.="Adressatens läsare: ".$_SERVER['HTTP_USER_AGENT']."\n";
$all = ($headline1.$date.$time.$ip.$port.$browser);
return "$all";
}
// klass som loggar adressaten
class logging
{
var $folder;
var $logname;
var $xmlname;
var $filename;
var $dirname;
function logging($f,$l,$x)
{
$this->folder=$f;
$this->logname=$l;
$this->xmlname=$x;
$this->mode=$m;
if ($this->mode==1)
{
$this->filename=getcwd()."\\$this->folder\\$this->logname";
$this->dirname=getcwd()."\\$this->folder\\";
}
else
{
$this->filename=getcwd().'/'.$this->folder.'/'.$this->logname;
$this->dirname=getcwd().'/'.$this->folder.'/';
}
}
function create_txt()
{
if (!file_exists($this->dirname)) mkdir ($this->dirname);
$fp = fopen ($this->filename,a);
$logs="<logging>\n";
$logs.="<ip> visitor's IP address: ".$_SERVER['REMOTE_ADDR']." </ip>\n";
$logs.="<port> visitor's port: ".$_SERVER['REMOTE_PORT']." </port>\n";
$logs.="<browser> visitor's browser: ".$_SERVER['HTTP_USER_AGENT']." </browser>\n";
$logs.="<date> date: ".date("D-d-M-Y")." </date>\n";
$logs.="<time> time: ".date("H:i:s")." </time>\n";
$logs.="</logging>\n\n";
fwrite($fp,$logs);
fclose($fp);
}
function create_xml()
{
$filename=$this->xmlname;
$fp=fopen($this->filename,r);
$contents=fread($fp,filesize($this->filename));
$final='<?xml version="1.0" encoding="iso-8859-1"?>'."\n".
'<!-- generator="logging class Ver:1.1" -->'.
"\n".
'<start>'
.$contents.
'</start>';
fclose($fp);
if ($this->mode==1) $fp=fopen($this->dirname."\\$filename",w);
else $fp=fopen($this->dirname."/$filename",w);
fwrite($fp,$final);
fclose($fp);
}
}
?>
</div>
När man skickar mailet så får jag ett felmeddelande:
Warning: mail() expects parameter 1 to be string, array given in test2.php on line 61
Någon som kan hjälpa mig? Är det något krångligt så behöver ni inte göra er något bekymmer, då struntar jag i det. Men om det är smidigt så får ni gärna ge mig lite kod. Tänk på att jag inte kan något, så tala tydligt. :e
Och du Hoglind, jag tog bort din jättelånga kommentar för att det inte skulle bli överdrivet mycket kod här. Vet inte om man får göra så... men i så fall så får jag redigera senare.
Jag använde mig av den koden! Funkade prima. Men du missuppfattade mig lite. Jag vill inte att den ska skicka mail till alla i Arrayen, utan bara till den man väljer. Eller var det så du menade med ditt sista exempel?
<?php
foreach ($mottagare as $key => $val) {
echo "<option value=\"$val[1]\">$val[0]</option>\n";
//i den här selecten väljs personen man vill skicka till
}
?>
<?php
foreach ($mottagare as $key => $val) {
echo "<option value=\"$val[1]\">$val[0]</option>\n";
//i den här selecten väljs personen man vill skicka till
}
?>
Ändringen jag gjorde gör att adresserna syns i koden. Det kanske inte var så bra. Jag fixar till det när jag får tid senare idag.
Ja, eller fler än två. Vet inte riktigt hur många gånger jag testade att skicka, men det ploppade in mail fortfarnade efter 15 minuter. :p Fast jag fick väl runt 15 stycken också. Men att det tar tid att få mailet, har det med scriptet eller mailservern att göra?
... Ja, eller fler än två. Vet inte riktigt hur många gånger jag testade att skicka, men det ploppade in mail fortfarnade efter 15 minuter. :p Fast jag fick väl runt 15 stycken också. Men att det tar tid att få mailet, har det med scriptet eller mailservern att göra?
Varje gång du backar tillbaka till sidan kommer mailet att skickas på nytt. Likadant om du är kvar på sidan efter att ha skickat iväg det och trycker på refresh...
...och håll dina fingrar i styr och skicka bara ett mail när du testar... ;)
Det resulterar fortfarande i TVÅ mail. Tyvärr. Och jag håller fingrarna i styr. ;)
assah skrev:
Varje gång du backar tillbaka till sidan kommer mailet att skickas på nytt. Likadant om du är kvar på sidan efter att ha skickat iväg det och trycker på refresh...
Hehe, ja så långt är jag med. ;) Vet inte vad som hände, den bara spammade mail. :p
r\ kod:
<?php
foreach ($mottagare as $key => $val) {
echo "<option value=\"$key\">$key</option>\n";
//i den här selecten väljs personen man vill skicka till
}
?>
Så ser den ut. Sen använde jag den du skrev sist. Rätt så annars? Och sen i min array på sidan, så kan jag bara välja mellan 1, 2 och 3, inga namn alltså. :o
<?php
foreach ($mottagare as $key => $val) {
echo "<option value=\"$key\">$val[0]</option>\n";
//i den här selecten väljs personen man vill skicka till
}
?>
<?php
foreach ($mottagare as $key => $val) {
echo "<option value=\"$key\">$val[0]</option>\n";
//i den här selecten väljs personen man vill skicka till
}
?>
Kanske var otydlig... :)
Tre mail? :( :q
Eller så är det jag som inte förstår... :) Nu har jag kommit på vad som är fel. Kolla in detta
<?php
$mottagare = array(
'1' => array('namn ett', 'mail1@mail.com'),
'2' => array('namn två', 'mail2@mail.com'),
'3' => array('namn tre', 'mail3@mail.com')
)
//för de olika personer man ska kunna välja att skicka till.
?>
Jag får så många mail, som namnet jag väljer. Väljer jag namn tre får jag tre mail, namn ett ger bara ett mail. Skumt va? :P