M Mycodez Medlem sedan feb. 2010 445 inlägg Frågan 25 aug. 2010 18:39 #1 Hej,
Jag har lite problem med mitt kontakt formulär. Jag är ny med detta med PHP. så kan inte mycket alls.
<?php
if (isset($_REQUEST['email']))
//if "email" is filled out, send email
{
//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail( "Utveckling@mycodez.se", "Subject: $subject",
$message, "From: $email" );
echo "Tack för ditt mail! Vi mailar dig så fort vi kan.";
}
else
//if "email" is not filled out, display the form
{
echo "<form method='post' action='Utvecklare.php'>
Email:<br/> <input name='email' type='text' /><br />
Ämna: <br/><input name='subject' type='text' /><br />
Meddelande:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>
När jag skulle testa och skicka ett mail från detta forumlär så skickas det inte och så syns detta efter submit knappen ";}?>
varför gör det detta och hur ska jag få igång detta?
Tack på för hand!
N newseed Medlem sedan maj 2010 117 inlägg Koden du har lagt upp fungerar fint för mig. Är du säker på att "Utvecklare.php" är samma fil som innehåller koden samt att inget annat i den filen ställer till det?
Ett tips när det kommer till att skicka e-post är dock att antingen testa inskriven e-postadressen så att den ser korrekt ut alternativt inte använda den som "from" eftersom detta ibland kan ställa till det när man vill skicka iväg det.
M Mycodez Medlem sedan feb. 2010 445 inlägg Okej! konstigt sidan jag har den koden på heter "Utvecklare.php". Vad kan vara för fel tro?
N newseed Medlem sedan maj 2010 117 inlägg Är där någon annan kod som strular till det på sidan? Prova att ta bort allt annat och testa (eller kopiera ut detta till en ny test-sida).
M Mycodez Medlem sedan feb. 2010 445 inlägg Får göra detta men hur göra jag för att kolla så allt är inskrivet nu e det ju bara Email, jag vill ju ha så man kollar upp allt annat också och kanske skriver ut vad felet är. i textrutan där man skriver kanske en text dyker upp eller jämte i en label eller något. Hur gör man det i denna kod?
M Mycodez Medlem sedan feb. 2010 445 inlägg Det funkade inte det heller :( jag har kollade tillcoh med på denan guidé ( http://cert.w3schools.com/php/php_ref_mail.asp ) och det funka inte
Jag lånar denna tråden.
Jag testade koden ovan och den funkade för mig. Men jag skulle vilja ändra den.
Jag skulle vilja att kontaktformuläret syns hela tiden och när man skickat så kommer en liten leveransbekräftelse under formuläret.
Sen vill jag ha Namn, Telefon, Epost, Meddelande. Men lyckas inte få det att funka så jag får alla uppgifter i mailet. Sen vill jag ha en med endast Namn , Epost, meddelande.
Någon snäll själ som kan klura ut den koden åt mig?
<?php
//if "email" is filled out, send email
if (isset($_REQUEST['email']))
{
//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail( "Utveckling@mycodez.se", "Subject: $subject",
$message, "From: $email" );
echo "Tack för ditt mail! Vi mailar dig så fort vi kan.";
}
}
echo "<form method='post' action='Utvecklare.php'>
Email:<br/> <input name='email' type='text' /><br />
Ämna: <br/><input name='subject' type='text' /><br />
Meddelande:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
?>
lägg till de fält du vill ha och sätt ett namn på det, bygg ut $message med de värdena du ville ha.
voigtann1 skrev:
lägg till de fält du vill ha och sätt ett namn på det, bygg ut $message med de värdena du ville ha.
Okej då vill jag ha det så här i from fältet.
<?php
//if "email" is filled out, send email
if (isset($_REQUEST['email']))
{
//send email
$email = $_REQUEST['epost'] ;
$namn = $_REQUEST['namn'] ;
$message = $_REQUEST['meddelande'] ;
mail( "Utveckling@mycodez.se", "Subject:Mail från sidan dindomän.com",
$message, $namn, "From: $epost" );
echo "Tack för ditt mail! Vi mailar dig så fort vi kan.";
}
}
echo "<form method='post' action='Utvecklare.php'>
Namn:<br/> <input name='namn' type='text' /><br />
E-post: <br/><input name='epost' type='text' /><br />
Meddelande:<br />
<textarea name='meddelande' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
?>
Så ändrade jag fälten så här ovan men ingenting blev ju rätt :q
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
(http://php.net/manual/en/function.mail.php ) säger php manualen, så du kan inte lägga in ett argument till om det är $namn du vill ha in, om det är så du vill bygga ut $message så skriver du $message . $namn
eller bygger du ut det i $message direkt:
<?php
//if "email" is filled out, send email
if (isset($_REQUEST['email']))
{
//send email
$email = $_REQUEST['epost'] ;
$namn = $_REQUEST['namn'] ;
$message = $_REQUEST['meddelande'] . $namn;
mail(
"Utveckling@mycodez.se",
"Subject:Mail från sidan dindomän.com",
$message,
"From: $epost"
);
echo "Tack för ditt mail! Vi mailar dig så fort vi kan.";
}
}
echo "<form method='post' action='Utvecklare.php'>
Namn:<br/> <input name='namn' type='text' /><br />
E-post: <br/><input name='epost' type='text' /><br />
Meddelande:<br />
<textarea name='meddelande' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
?>
<?php
//if "email" is filled out, send email
if (isset($_REQUEST['email']))
{
//send email
$email = $_REQUEST['epost'] ;
$namn = $_REQUEST['namn'] ;
$message = $_REQUEST['meddelande'] . $namn;
mail(
"fieldgrove@gmail.com",
"Subject:Mail från sidan dindomän.com",
$message,
"From: $email"
);
echo "Tack för ditt mail! Vi mailar dig så fort vi kan.";
}
echo "<form method='post' action='Utvecklare.php'>
Namn:<br/> <input name='namn' type='text' /><br />
E-post: <br/><input name='epost' type='text' /><br />
Meddelande:<br />
<textarea name='meddelande' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
?>
När jag testade den kod laddades sidan bara om inget mail kom.
if (isset($_REQUEST['email']))
är ju inte satt, den heter epost i ditt formulär
voigtann1 skrev:
if (isset($_REQUEST['email']))
är ju inte satt, den heter epost i ditt formulär
Nu funkar det. Men meddelande och namn sitter ihop. Man kan inte få det så här.
Meddelande:
Meddelande skrivs ut här
Namn:
Namnet skrivs ut här.
Akerlundh skrev:
Nu funkar det. Men meddelande och namn sitter ihop. Man kan inte få det så här.
Meddelande:
Meddelande skrivs ut här
Namn:
Namnet skrivs ut här.
det är bara att bygga upp strängar:
$message = $_REQUEST['meddelande'] . "\nNamn:" . $namn;
typ kan inte PHP men det borde bli radbrytning?
voigtann1 skrev:
det är bara att bygga upp strängar:
$message = $_REQUEST['meddelande'] . "\nNamn:" . $namn;
typ kan inte PHP men det borde bli radbrytning?
Perfekt :birp
Det finns inget enkelt sätt man kan göra samtliga fält obligatoriska på ?
Akerlundh skrev:
Perfekt :birp
Det finns inget enkelt sätt man kan göra samtliga fält obligatoriska på ?
beror på vilka webbläsare, du kan ju köra html5 require på dina element, men lägg in i din if fråga AND (&&) som kollar på att de fält som skall vara obligatoriska.
E ezra19 Medlem sedan apr. 2014 3 inlägg hoppas allt är bra nu, och hitta lösningen på ditt problem
M Mycodez Medlem sedan feb. 2010 445 inlägg Roligt att tråden lever ^^
jag tänkte att jag kunde bjuda på min version av ditt problem då jag gjort en sådan lösning för ett tag sedan, åt en vän till mig.
function escape($string) {
return strip_tags(htmlentities($string, ENT_QUOTES, 'UTF-8'));
}
if($_POST){
$name = escape($_POST['name']);
$email = escape($_POST['email']);
$cellphone = escape(trim($_POST['cellphone']));
$cellphone = preg_replace('/\s+/', '', $cellphone);
$sub = strip_tags($_POST['sub']);
$message = $_POST['message'];
$errors = array();
if(!is_numeric($cellphone)) {
$errors[] = "Telefonnummeret får bara innehålla siffror";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Du angav en felaktig e-post";
}
if (empty($sub) === TRUE) {
$errors[] = "Du har inte skrivit något ämne";
}
if (empty($message) === TRUE) {
$errors[] = "Du har inte skrivit något meddelade";
}
if(empty($errors)===TRUE) {
//send the email
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=utf-8"; //change charset to iso-8859-1?
$headers[] = "From: {$name} <{$email}>";
$headers[] = "Bcc: Robin Kardell <carden.rk@gmail.com>";
$headers[] = "Reply-To: {$name} <{$email}>"; //sender?
$headers[] = "Subject: {$sub}";
$headers[] = "X-Mailer: PHP/".phpversion();
$email = $message ."\r\n\r\n Kontakt uppgifter: \r\n Telefon: ".$cellphone."\r\n email: ".$email;
if(mail(mailen du vil lfå mailen till", $sub, $email, implode("\r\n", $headers))) {
$sended = true;
echo "send";
} else {
$sended = false;
echo "inte skickat";
}
}
}
?>
och mitt formulär
<form role="form" action="" method="post">
<div class="form-group">
<label for="name">Ditt namn *</label>
<input type="text" class="form-control" id="name" name="name" value="<?php echo escape($_POST['name']); ?>" placeholder="Skriv in ditt namn">
</div>
<div class="form-group">
<label for="email">Din e-post *</label>
<input type="text" class="form-control" id="email" name="email" value="<?php echo escape($_POST['email']); ?>" placeholder="Skriv in din e-post">
</div>
<div class="form-group">
<label for="cellphone">Ditt telefonnummer *</label>
<input type="text" class="form-control" id="cellphone" name="cellphone" value="<?php echo escape($_POST['cellphone']); ?>" placeholder="Skriv in ditt telefonnummer">
</div>
<div class="form-group">
<label for="sub">Ämne *</label>
<input type="text" class="form-control" id="sub" name="sub" value="<?php echo escape($_POST['sub']); ?>" placeholder="Vad rör ditt meddelande?">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Meddelande *</label>
<textarea class="form-control" rows="6" name="message"><?php echo escape($_POST['message']); ?></textarea>
</div>
<input type="submit" class="btn btn-default" value="Skicka ditt meddelande" />
</form>
jag vet det går att göra koden snyggare och bättre men orkar inte i dagsläget:)
MVH Robin