Enkelt PHP-script för kontaktformulär?

Tråden skapades och har fått 11 svar. Det senaste inlägget skrevs .
1

Hej undrar om det är någon som har ett bra php för en simpel kontaktform. helst utan spam. Har inte jobbat så mycket med php så tar gärna emot instruktioner hur man implementerar scriptet.

Hej!

http://www.hotscripts.com/ finns enorma mängder färdiga scripts att använda.

Tackar, Men har fortfarande problem att få det att fungera... när man trycker på skicka kommer man bara till felmeddelandesidan. Har provat en rad olika script men det är samma varje gång. Det verkar vara enkelt, men får det ändå inte att fungera. Jag lägger in formen i html:en och länkar till scriptet men fan det funkar inte.. hjälp mig?
//Webbdesignern med noll koll på php!

Vad får du för felmeddelande?

Har du satt action till rätt fil? Stödjer din server PHP?

Servern stödjer php4 och håller på att uppgradera php5,

<form name="contactform" action="contactform.php" method="post">
<input type="hidden" name="require" value="Name,Email,Message">
<table width="444" align="center">
<tr>
<td colspan="2" align="center">
<p></td>
</tr>
<tr>
<td valign="top" align="right"><b>Name:</b></td>
<td valign="top">
<input name="Name" size="30">
</td>
</tr>
<tr>
<td valign="top" align="right"><b>E-mail:</b></td>
<td valign="top">
<input name="Email" size="30">
</td>
</tr>
<tr>
<td valign="top" align="right"><b>Message:</b></td>
<td valign="top">
<textarea name="Message" rows="5" cols="30"></textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center"><p><br>
<input type="submit" value="Send" name="submitform">
<input type="reset" value="Reset" name="reset"></p>
</td>
</tr>
</table>

och php

<?php
$nasaadresa = "jokarlsson@msn.com"; //please replace this with your address

$mail = $_POST['Email'];
$porukaa = $_POST['Message'];
$poruka = str_replace("\r", '<br />', $porukaa);
//START OF THANKS MESSAGE
//you may edit $thanks message. this is a message which displays when user sends mail from your site
$thanks = "
<p align='left'><br>
<b>Your message has sucessfuly been sent!<br></b>
#### MESSAGE TEXT ####
<br><br>
$poruka
<br><br>
#### END OF MESSAGE ####
<br><br>
You will recive a copy of the message at your email address <b>($mail).<br>We will reply you soon as possible<br></b></p>";
//do not edit nothing below this line until comment (ME) say so if you don't have skills with PHP
//END OF THANKS MESSAGE

if($_POST['submitform'])
{

$Name = $_POST['Name'];
$Email = $_POST['Email'];
$Message = $_POST['Message'];
$require = $_POST['require'];
$browser = $HTTP_USER_AGENT;
$ip = $_SERVER['REMOTE_ADDR'];

$dcheck = explode(",",$require);
while(list($check) = each($dcheck))
{
if(!$$dcheck[$check]) {
$error .= "You have not filled this filed(s): <b>$dcheck[$check]</b>.<br>";
}
}
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[a-zA-Z0-9_@.-]+$", $Email))){
$error .= "Wrong e-mail.<br>This e-mail address <b>$Email</b> - is not valid. Please enter correct e-mail address.";
}
if($error)
{
echo $error;
echo '<br><a href="#" onClick="history.go(-1)">Please try again.</a>';
}
else
{
//START OF INCOMING MESSAGE (this message goes to your inbox)
$message = "
Name: $Name:
E-mail: $Email

Message: $Message

-----------------------------
Browser: $browser
IP: $ip
";
//END OF INCOMING MESSAGE (this message goes to your inbox)

$subject = "Message from your site.com - Message was sent by $Name"; //subject OF YOUR INBOX MESSAGE sent to you

$subject2 = "You have succesfully sent message from yoursite.com!"; //subject of OUTGOING MESSAGE - edit this
//OUTGOING MESSAGE TEXT
$message2 = "You have sent a message to site admin of a yourdomain.com:
-----------------------------
From: $Name:
E-mail: $Email

Message: $Message

-----------------------------
";
//END OF outgoing MESSAGE

mail($nasaadresa,"$subject","$message","From: $Name <$Email>");
mail($Email,"$subject2","$message2","From: <$nasaadresa>");
echo "$thanks";
}
}
else{
//this is contact form down here, please edit if you know what are you doing... or the contact form may not be working.
echo '
<p align="center"><br><b>Please contact us:</b></p><br><br>
<form name="contactform" action="'.$PHP_SELF.'" method="post">
<input type="hidden" name="require" value="Name,Email,Message">
<table width="444" align="center">
<tr>
<td colspan="2" align="center">
<p></td>
</tr>
<tr>
<td valign="top" align="right"><b>Name:</b></td>
<td valign="top">
<input name="Name" size="30">
</td>
</tr>
<tr>
<td valign="top" align="right"><b>E-mail:</b></td>
<td valign="top">
<input name="Email" size="30">
</td>
</tr>
<tr>
<td valign="top" align="right"><b>Message:</b></td>
<td valign="top">
<textarea name="Message" rows="10" cols="30"></textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center"><p align="right"><br>
<input type="submit" value="Send" name="submitform">
<input type="reset" value="Reset" name="reset"></p>
</td>
</tr>
</table>
</form>';
}
?>

Nu detaljgranskade jag inte koden, men POSTAR du formuläret mot en annan fil som tar emot formulärdatan?

<form name="contactform" action="contactform.php" method="post"> och så har jag php:t som heter contactform.php.... eller gör jag fel

Vad är felmeddelandet? Det efterfrågades tidigare, men du skrev inte ut det.

felmeddelandet är i form av den klassiska "sidan finns inte" grejen.

The page cannot be found

The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.
Please try the following:

Make sure that the Web site address displayed in the address bar of your browser is spelled and formatted correctly.
If you reached this page by clicking a link, contact the Web site administrator to alert them that the link is incorrectly formatted.
Click the Back button to try another link.
HTTP Error 404 - File or directory not found.
Internet Information Services (IIS)

Technical Information (for support personnel)

Go to Microsoft Product Support Services and perform a title search for the words HTTP and 404.
Open IIS Help, which is accessible in IIS Manager (inetmgr), and search for topics titled Web Site Setup, Common Administrative Tasks, and About Custom Error Messages.

Har aldrig sett formen ".$PHP_SELF." så jag skulle prova att ta bort punkterna:

<form name="contactform" action="'$PHP_SELF'" method="post">

Men det kan ju vara så att det är en variant jag helt enkelt inte känner till, så det är inte säkert att det hjälper.

Om DET är felmeddelandet så har ju PHP ingenting med saken att göra, än så länge är det webbservern som vi "kommunicerar" med.

Förslagsvis kollar du sökvägar mm först. Det kan vara så att filen contactform.php som scriptet efterlyser inte VERKLIGEN heter just det. Jag tänker tex på gemener/versaler kan vara olika i relation till hur det står i koden i form action osv. Gemener/versaler spelar på en Windows-server vanligen ingen roll, men det kan göra det beroende på filsystem på diskarna. Eller så har du kanske döpt filen till contactform.php.txt.html.doc.jpg (din editor kanske gjort något roligt med filnamnet som du inte märkt, eller så visas inte den verkliga filtypen i filsystemet). Eller så ligger filen i en annan mapp än kontaktformuläret. Om du inkluderar kontaktformuläret från en annan fil i en annan mapp, så utgår ju webbläsaren från den filen när den skall tolka vad som står angivet i "form action osv", inte från den inkluderade filen. (Jag hoppas du förstod det där, om inte, fråga).

Förslagsvis kopierar du filsystemets namn på contactform.php in i html-koden för kontaktformuläret, och ser till att allt ligger i samma mapp.

Rättigheter är förstås nästa grej att kolla, kanske inte tjänsten php får se filen ens?

Vi har alltså inte kommit så långt att PHP har tittat på koden i filen.

  • Medlem
  • Göteborg
  • 2009-06-17 14:55

Ang. PHP_SELF

Angående variablen $PHP_SELF så sätts den normalt inte (utom då servern confats med register_globals, vilket normalt anses fel eftersom det kompromitterar säkerheten).

Det bättre sättet att syfta på det aktuella scriptet är med $_SERVER['PHP_SELF']

Det ger:

...
<form name="contactform" action="'.$_SERVER['PHP_SELF'].'" method="post">
...

Samma sak gäller även för $HTTP_USER_AGENT som sonika blir $_SERVER['HTTP_USER_AGENT']

Hoppas det löser sig.

1
Bevaka tråden