Gå til innhold

PHP Mail form med upload funksjon?


Anbefalte innlegg

Hei.

 

Finnes det noen gode eksempler / script som gjør det mulig å lage et mail form (gjerne i php), der folk kan sende en melding til administrator sammen med filer (bilder)

 

Jeg skal lage en side, der folk skal kunne legge ut sine egne nyheter, og trenger da en slik funksjon...

Lenke til kommentar
Videoannonse
Annonse

Selve skjemaet kan lages i HTML - om du ikke vet hvordan, er det bare å spørre igjen. Her har du i hvert fall noe som kan brukes som resultat (det som faktisk laster opp/sender):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>XXX</title>
</head>

<body>
<?
error_reporting(E_ALL);
$dir = 'lo2/';
$fil1 = $dir . basename($_FILES['fil']['navn']);
$server = basename($_SERVER['server']);

ini_set('max_execution_time',XXX);
echo '<br />Filstørrelse:' . $_FILES['fil']['size'] . '<br />';

if ( $_FILES['fil']['size']  < XXX ) {
echo '<br />Filstørrelse:' . $_FILES['fil']['size'] . '<br />';
die('Avbrutt: For liten fil');
}

if ($_FILES['fil']['navn']) {
if (move_uploaded_file($_FILES['fil']['tmp_name'], $dir . $_FILES['fil']['navn'])) {
	$fil = $_FILES['fil']['navn'];
}
else {
	die(''. $_FILES['fil']['navn'] .' feilet.');
}
}

echo 'XXX';

$header  = 'MIME-Version: 1.0\r\n';
$header .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$header .= 'From:'.$_POST['navn1'].' <'.$_POST['epost'].'>\r\n';
$body  = '<html>\n';
$body .= '<body>\n';
$body .= 'DET DU VIL SKAL SENDES\n';
$body .= '</body>\n';
$body .= '</html>\n';
mail('dinmail', 'subject', $body, $header);
?>
</body>
</html>

Endret av Jooakim
Lenke til kommentar

Tenker du på skjemaet / infoen som skal sendes?

 

Jeg har laget et eksempel som ser slik ut i html.

 

Kan jeg flette dette inn i ditt script på et vis?

 

<body>
<p> </p>
<p> </p>
<p><table width="658">
<tr><td width="96">Navn:</td><td width="422"><input name=navn></td></tr>
<tr>
 <td>Overskrift:</td><td><input name=overskrift size="50" maxlength="30"></td></tr>
<tr>
 <td>Tekst:</td><td><input name=tekst size="50"></td></tr>
<tr><td>E-post:</td><td><input name=epost></td></tr>
<tr>
 <td>Legg ved bilde :</td><td><input type="file" name="file" id="file" /></td></tr>
</table>
<input type="submit" value="Send" /> </p>
</body>

 

Og må filen hete .php etter punktum da?

Lenke til kommentar

Neida, men du må legge alt sammen inn i

<form method="post" action="XX.php" enctype="multipart/form-data"></form>

Du har forresten glemt et par anførselstegn, i tillegg bør tekstboksen være i <textarea>. Her er en mal du kan bruke:

<form method="post" action="">
<p>
<label for="name">Name</label>
<input id="name" name="name" type="text" size="30" maxlength="40" /><br />

<label for="email">Email</label>
<input id="email" name="email" type="text" size="30" maxlength="40" /><br />

<label for="subject">Subject</label>
<input id="subject" name="subject" type="text" size="30" maxlength="40" /><br />

<label for="message">Message</label>
<textarea id="message" name="msg" cols="50" rows="6"></textarea><br />

<label for="submit"> </label>
<input id="submit" class="button" type="submit" name="submit" value="Send" />
</p>
</form>

Husk at det som står i name="", er navnet på det som skal sendes, for å skrive inn dette i PHP-filen, bruker du $_POST['navnet'];. Når du poster teksten, bør du gjøre slik: nl2br($_POST['tekst']); - slik at alt ikke blir på én linje. :)

Lenke til kommentar
Navnet på PHP-filen du lagrer det første scriptet som. ;)

 

OK.

 

Men trenger jeg 2 filer? Et script og en "form" fil ?

Eller lager jeg alt i en fil?

 

KAn jeg f.eks. bare lagre alt i mail.php slik:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>XXX</title>
</head>

<body>

<form method="post" action="mail.php">
<p>
<label for="name">Name</label>
<input id="name" name="name" type="text" size="30" maxlength="40" /><br />

<label for="email">Email</label>
<input id="email" name="email" type="text" size="30" maxlength="40" /><br />

<label for="subject">Subject</label>
<input id="subject" name="subject" type="text" size="30" maxlength="40" /><br />

<label for="message">Message</label>
<textarea id="message" name="msg" cols="50" rows="6"></textarea><br />

<label for="submit"> </label>
<input id="submit" class="button" type="submit" name="submit" value="Send" />
</p>
</form>

<?
error_reporting(E_ALL);
$dir = 'lo2/';
$fil1 = $dir . basename($_FILES['fil']['navn']);
$server = basename($_SERVER['server']);

ini_set('max_execution_time',XXX);
echo '<br />Filstørrelse:' . $_FILES['fil']['size'] . '<br />';

if ( $_FILES['fil']['size']  < XXX ) {
   echo '<br />Filstørrelse:' . $_FILES['fil']['size'] . '<br />';
   die('Avbrutt: For liten fil');
}

if ($_FILES['fil']['navn']) {
   if (move_uploaded_file($_FILES['fil']['tmp_name'], $dir . $_FILES['fil']['navn'])) {
       $fil = $_FILES['fil']['navn'];
   }
   else {
       die(''. $_FILES['fil']['navn'] .' feilet.');
   }
}

echo 'XXX';

$header  = 'MIME-Version: 1.0\r\n';
$header .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$header .= 'From:'.$_POST['navn1'].' <'.$_POST['epost'].'>\r\n';
$body  = '<html>\n';
$body .= '<body>\n';
$body .= 'DET DU VIL SKAL SENDES\n';
$body .= '</body>\n';
$body .= '</html>\n';
mail('[email protected]', 'subject', $body, $header);
?>
</body>
</html>

Og trenger jeg denne også, for å kunne finne og laste opp aktuelt bilde? :

 

<tr><td>Legg ved bilde :</td><td><input type="file" name="file" id="file" /></td></tr></table>

Eller tar scriptet hånd om dette?

Lenke til kommentar
  • 4 uker senere...

Tok litt tid å svare på denne :p har vært i syden :)

 

jeg har en fil som jeg kaller mail.php som er som følger:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>XXX</title>
</head>

<body>
<?
error_reporting(E_ALL);
$dir = 'lo2/';
$fil1 = $dir . basename($_FILES['fil']['navn']);
$server = basename($_SERVER['server']);

ini_set('max_execution_time',XXX);
echo '<br />Filstørrelse:' . $_FILES['fil']['size'] . '<br />';

if ( $_FILES['fil']['size']  < XXX ) {
   echo '<br />Filstørrelse:' . $_FILES['fil']['size'] . '<br />';
   die('Avbrutt: For liten fil');
}

if ($_FILES['fil']['navn']) {
   if (move_uploaded_file($_FILES['fil']['tmp_name'], $dir . $_FILES['fil']['navn'])) {
       $fil = $_FILES['fil']['navn'];
   }
   else {
       die(''. $_FILES['fil']['navn'] .' feilet.');
   }
}

echo 'XXX';

$header  = 'MIME-Version: 1.0\r\n';
$header .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$header .= 'From:'.$_POST['navn1'].' <'.$_POST['epost'].'>\r\n';
$body  = '<html>\n';
$body .= '<body>\n';
$body .= 'DET DU VIL SKAL SENDES\n';
$body .= '</body>\n';
$body .= '</html>\n';
mail('**minmail**@yahoo.no', 'subject', $body, $header);
?>
</body>
</html>

 

Og så har jeg en "hovedfil" som jeg kaller mail.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<form method="post" action="mail.php" enctype="multipart/form-data"></form><p>
<label for="name">Name</label>
<input id="name" name="name" type="text" size="30" maxlength="40" /><br />

<label for="email">Email</label>
<input id="email" name="email" type="text" size="30" maxlength="40" /><br />

<label for="subject">Subject</label>
<input id="subject" name="subject" type="text" size="30" maxlength="40" /><br />

<label for="message">Message</label>
<textarea id="message" name="msg" cols="50" rows="6"></textarea><br />

<label for="submit"> </label>
<input id="submit" class="button" type="submit" name="submit" value="Send" />
</p>
</form>

</body>
</html>

 

 

Når jeg kjører filen mail.html skjer det ingen ting når jeg trykker på send..

Jeg kjører filen med WAMPSERVER, så har php installert...

 

Takker for alle svar...

Lenke til kommentar

 

Tok litt tid å svare på denne :p har vært i syden :)

 

jeg har en fil som jeg kaller mail.php som er som følger:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>XXX</title>
</head>

<body>
<?
error_reporting(E_ALL);
$dir = 'lo2/';
$fil1 = $dir . basename($_FILES['fil']['navn']);
$server = basename($_SERVER['server']);

ini_set('max_execution_time',XXX);
echo '<br />Filstørrelse:' . $_FILES['fil']['size'] . '<br />';

if ( $_FILES['fil']['size']  < XXX ) {
   echo '<br />Filstørrelse:' . $_FILES['fil']['size'] . '<br />';
   die('Avbrutt: For liten fil');
}

if ($_FILES['fil']['navn']) {
   if (move_uploaded_file($_FILES['fil']['tmp_name'], $dir . $_FILES['fil']['navn'])) {
       $fil = $_FILES['fil']['navn'];
   }
   else {
       die(''. $_FILES['fil']['navn'] .' feilet.');
   }
}

echo 'XXX';

$header  = 'MIME-Version: 1.0\r\n';
$header .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$header .= 'From:'.$_POST['navn1'].' <'.$_POST['epost'].'>\r\n';
$body  = '<html>\n';
$body .= '<body>\n';
$body .= 'DET DU VIL SKAL SENDES\n';
$body .= '</body>\n';
$body .= '</html>\n';
mail('**minmail**@yahoo.no', 'subject', $body, $header);
?>
</body>
</html>

 

Og så har jeg en "hovedfil" som jeg kaller mail.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<form method="post" action="mail.php" enctype="multipart/form-data"></form><p>
<label for="name">Name</label>
<input id="name" name="name" type="text" size="30" maxlength="40" /><br />

<label for="email">Email</label>
<input id="email" name="email" type="text" size="30" maxlength="40" /><br />

<label for="subject">Subject</label>
<input id="subject" name="subject" type="text" size="30" maxlength="40" /><br />

<label for="message">Message</label>
<textarea id="message" name="msg" cols="50" rows="6"></textarea><br />

<label for="submit"> </label>
<input id="submit" class="button" type="submit" name="submit" value="Send" />
</p>
</form>

</body>
</html>

 

 

Når jeg kjører filen mail.html skjer det ingen ting når jeg trykker på send..

Jeg kjører filen med WAMPSERVER, så har php installert...

 

Takker for alle svar...

 

 

 

 

Du kan ta alt i en fil!

Prøv å trykk submit knappen med denne koden:

 

hoved.php:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
if(isset($_POST['submit'])) {

print 'Ta din php koden hit!';

}
?>
<form method="post" action="mail.php" enctype="multipart/form-data"></form><p>
<label for="name">Name</label>
<input id="name" name="name" type="text" size="30" maxlength="40" /><br />

<label for="email">Email</label>
<input id="email" name="email" type="text" size="30" maxlength="40" /><br />

<label for="subject">Subject</label>
<input id="subject" name="subject" type="text" size="30" maxlength="40" /><br />

<label for="message">Message</label>
<textarea id="message" name="msg" cols="50" rows="6"></textarea><br />

<label for="submit"> </label>
<input id="submit" class="button" type="submit" name="submit" value="Send" />
</p>
</form>

</body>
</html>

 

Endret av Rematusen
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...