/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Nyhedsbrev
Fra : rinarina
Vist : 644 gange
100 point
Dato : 31-01-05 23:45

Hej.

Jeg har fundet et nyhedsbrevs-script, som skulle være ret enkelt, desværre kan jeg ikke få det til at virke. DEt består af to php-filer, 'kontakt.php' og 'kontakt_sendt.php'. Er der mon nogen, der kan gennemskue, hvad der går galt? Jeg har naturligvis skrevet min egen mail ind i koden.. Filerne ser sådan ud:

Kontakt.php:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table border="0" width="350" height="350" cellspacing="0" align="center">
<tr>
<td height="213" valign="top"> <form action="<?php echo $PHP_SELF; ?> " method="POST">
<div align="center"><font face="Verdana" size="1"><b><br>
</b>Dit navn:</font><br>
<input type="text" class="but" name="navn">
<br>
<font face="Verdana" size="1"><br>
Din email adresse:</font><br>
<input type="text" class="but" name="epost">
<br>
<b><font face="Verdana" size="1"><br>
</font></b><font face="Verdana" size="1">Emne:</font><b><font face="Verdana" size="1"><br>
</font> </b>
<input type="text" class="but" name="emne">
<br>
<font face="Verdana" size="1"><b><br>
</b>Besked:</font><br>
<textarea wrap="on" class="but" rows="10" cols="40" name="tekst"></textarea>
<br>
<br>
<input type="submit" class="button" value="Send Besked" name="send">
<font color="#FFFFFF">__</font>
<input type="reset" class="button" value="Slet Besked" name="reset">
<br>
<br>
<font face="Verdana" size="1">
<?php

if ($send) {
function tilbage($meddelelse) {
echo "$meddelelse\n";
echo "<form><input type=button value=\"<<< Tilbage\" onClick=history.back()></form>\n";
echo "</body></html>\n";
exit;
}

if (!$navn) tilbage( "<BR><BR>Du har glemt at skrive dit navn...");
if (!$tekst) tilbage( "Du har glemt at skrive noget i beskedfeltet");

$tekst = "$tekst ";


mail( "minadresse@hotmail.com", "Mail fra minhjemmeside.dk - Emne: $emne", $tekst, "From: $epost\nX-Mailer: http://$HTTP_HOST$REQUEST_URI");
echo "Du er nu tilmeldt nyhedsbrevet\n";
}


?>
</font> </div>
</form></td>
</tr>
</table>
</body>
</html>


Kontak_sendt.php:

<html>
<head>
<title>Besked sendt!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<? mail("minadresse@hotmail.com", "Mail fra minhjemmeside.dk - Emne: $emne",
"
Navn:
$navn

Email:
$email

Besked:
$skriv"); ?>
</body>
</html>

Mvh. R.


 
 
Kommentar
Fra : jeppebundsgaard


Dato : 31-01-05 23:53

Hvad mener du med at det ikke virker? Får du ikke nogen mail fra programmet? Siger den der er fejl? Hvad skriver den af fejlmeddelelser?
Hvis du ikke får nogen mail, skyldes det givetvis at din mailserver (hotmail?) er restriktiv med hvad den lader komme igennem - og den måde mail() er sat op på er den ikke så glad for - der mangler flere fa de såkaldte headers. mail()-funktionen er i det hele taget rigtig irriterende fordi der er så mange ting der kan gå galt og som afhænger af modtager, den server du bruger mm. Se evt på php.net (søg efter mail-funktionen). Hvis ikke selv du kan programmere må du hellere finde et andet script som virker bedre... eller få nogen her eller et andet sted til at tune den for dig...
Mvh
Jeppe

Kommentar
Fra : rinarina


Dato : 31-01-05 23:59

Tak for din kommentar, Jeppe. Nej, jeg får ikke nogen mail. Men udover det vises der en tom side ('siden blev ikke fundet') når jeg trykker på 'send'. Her burde koden jo enten generere en fejlmeddelse eller en besked om at nu er man tilmeldt nyhedsbrevet.
Hmm, håber jeg kan få nogen til at 'tune' den, som du siger

Kommentar
Fra : poul_from


Dato : 01-02-05 00:11

jeg retter lige dit script da der en del fejl i det vender tilbage om ca halv times tid

Kommentar
Fra : jeppebundsgaard


Dato : 01-02-05 00:17

Nå, så er det $PHP_SELF i Kontakt.php-s tag <form action=... der er noget galt med - din server har sat register_globals fra - så du skal skrive $_SERVER["PHP_SELF"] i stedet for - det er det samme med de andre variable med stort. det er ikke ngoet godt script - find et andet vil jeg opfordre til.

Kommentar
Fra : poul_from


Dato : 01-02-05 00:42

her så et script du måske kan bruge og det gemmer du i en fil da det hele er i scriptet.
Scriptet tjekker om der er tomme felter og at emial adressen er skrevet korrekt

gem det som ditfilnavn.php

Kode
<?

//denne funktion tjekker om feltet navn er indtastet
//og retunere om det sandt eller falsk
Function navn($navn){
if ($navn==""){
return false;
}
else{
return true;
}
}
//denne funktion tjekker om det er en gyldig email adresse der tastet ind
function email($mail){
if ((!ereg(".+\@.+\..+", $mail)) || (!ereg("^[a-zA-Z0-9_@.-]+$", $mail))){
return false;
}
else{
return true;
}
}
//denne funktion tester om der indtastet et emne
//og retunerer sandt eller falsk
Function subject($emne){
if ($emne==""){
return false;
}
else{
return true;
}
}

//denne funktion tester om der indtastet en besked
//og retunerer sandt eller falsk
Function besked($besked){
if ($besked==""){
return false;
}
else{
return true;
}
}
?>
<html>
<head>
<title>test form</title>
</head>
<body>
<?
//dette er output til hjemmesiden inden brugeren har trykket send
if ($afsend==""){
?>
<form action="<? echo $PHP_SELF;?>?afsend=ok" method="post" name="formular">
<table summary="">
<tr><td>Dit Navn</td><td><input type="text" name="navn" /></td></tr>
<tr><td>Din E-mail</td><td><input type="text" name="mail" /></td></tr>
<tr><td>Emne</td><td><input type="text" name="emne" /></td></tr>
<tr><td valign="top">Besked</td><td><textarea rows="8" cols="15"></textarea></td></tr>
</table>
<input type="submit" value="send" /> <input type="reset" value="slet" />
</form>
<?
}

else{
//dette er tekststrengen til emailen
$message="Disse oplysniger er indtastet på hjemmesiden\n\n".
"Navn....\t\t".$navn."\n".
"E-mail....\t\t".$mail."\n".
             "emne.......\t\t".$emne."\n.
"Besked fra brugeren:\n".$besked;
//dette er tekststrengen til output til hjemmesiden efter korekt udfyldt formular
$message2="Disse oplysniger er indtastet på hjemmesiden\n\n<br>".
"Navn....\t\t".$navn."\n<br>".
"E-mail....\t\t".$mail."\<br>n".
             "emne.......\t\t".$emne."\<br>n.
"Besked fra brugeren:\n<br><br>".$besked;
//dette afsender mail og kommer med et output til brugeren at oplysningerne er sendt og hvad der er sendt
if (navn($navn)&email($mail)&subject($emne)&besked($besked)){
echo "der er afsendt mail med disse oplysninger\n<br>\n<br>\n";
echo $message2;
mail('minadresse@hotmail.com','Emne - '$emne ,$message,'From: dit navn<dit navn@dit domaene.dk>');
}else{
// hvis brugeren har trykket send og der fejl i indtasningen skal dette output til hjemmesiden
?>
<form action="send.php?afsend=ok" method="post" name="formular">
<table summary="">
<tr><td>Dit Navn</td><td>
<?
if (!navn($navn)){
?>
<input type="text" name="navn" />fejl
<?
}
else{
?>
<input type="text" name="navn" value="<? echo $navn; ?>" />
<?
}
?>
</td></tr>
<tr><td>Din E-mail</td><td>
<?
if (!email($mail)){
?>
<input type="text" name="mail" value="<? echo $mail; ?>" />fejl
<?
}
else{
?>
<input type="text" name="mail" value="<? echo $mail; ?>" />
<?
}
?>
</td></tr>
<tr><td>Emne</td><td><?
if (!subject($emne)){
?>
<input type="text" name="emne"/>fejl
<?
}
else{
?>
<input type="text" name="emne" value="<? echo $emne; ?>" />
<?
}
?>
</td></tr>
<tr><td valign="top">Besked</td><td valign="top"><textarea rows="8" name="besked" cols="15"><?
if (!besked($besked)){
?>
</textarea>fejl
<?
}
else{
echo $besked?></textarea>
<?
}
?></td></tr>
</table>
<input type="submit" value="send" /> <input type="reset" value="slet" />
</form>
<?
}
}
?>
</body>
</html>



Kommentar
Fra : rinarina


Dato : 01-02-05 01:02

Hej Poul.
Kanon at du gider kigge på det! Tror dog der er en fejl i koden. Når jeg lægger den op på min server bliver der nemlig vist TO formularer og også en del kildekode (kommentarer). En anden ting: egentlig tror jeg, at det er bedst udelukkende at bede brugeren om at indtaste e-mail - dvs. helt droppe navn og besked..

Kommentar
Fra : rinarina


Dato : 01-02-05 01:04

--> Jeppe
Prøvede at gøre, som du foreslag, men det løste ikke problemet..

Kommentar
Fra : rinarina


Dato : 01-02-05 01:05

foreslog

Kommentar
Fra : poul_from


Dato : 01-02-05 01:10

understøtter dit webhotel php for hvis det er kun html så kan jeg godt forstå det jeg prøver lige at uploade til mit egen server og ser om der noget galt


Kommentar
Fra : rinarina


Dato : 01-02-05 01:16

Jo, har server hos b-one.dk og de udnerstøtter php

Kommentar
Fra : rfh


Dato : 01-02-05 16:24

> rinarina

Der mangler HEADER information i mail funktion linie 50 & 71

rfh

Kommentar
Fra : Lasse_Madsen


Dato : 01-02-05 22:21

Er problemet løst?

Kommentar
Fra : poul_from


Dato : 01-02-05 22:22

hej igen du må undskylde jeg har lavet nogle fejl i scriptet
men de er rettet nu og jeg tjekket scriptet om det kører og det gør det
jeg har lavet scriptet sådan når du modtager mailen er afsenderen lige til at tilføje i dit adressekartotek eller distributionsliste ved at højreklikke på den modtagne mail i din indbakke

jeg har scriptet kørende et stykke tid på min egen server hvis du vil teste det
http://www.skovfolket.dk/test.php

her så den ny kode

Kode
<?

$navn = $HTTP_GET_VARS['navn'];
$mail=$HTTP_GET_VARS['mail'];
$afsend=$HTTP_GET_VARS['afsend'];
$emne=$HTTP_GET_VARS['emne'];
$besked=$HTTP_GET_VARS['besked'];

//denne funktion tjekker om feltet navn er indtastet //og retunere om det sandt eller falsk

Function navn($navn){
if ($navn==""){
return false;
}
else{
return true;
}
}

//denne funktion tjekker om det er en gyldig email adresse der tastet ind
function email($mail){
if ((!ereg(".+\@.+\..+", $mail)) || (!ereg("^[a-zA-Z0-9_@.-]+$", $mail))){
return false;
} else{
return true;
}
}
//denne funktion tester om der indtastet et emne
//og retunerer sandt eller falsk
Function subject($emne){
if ($emne==""){
return false;
}
else{
return true;
}
}

//denne funktion tester om der indtastet en besked //og retunerer sandt eller falsk
Function besked($besked){
if ($besked==""){
return false;
}
else{
return true; }
}
?>

<html>
<head>
<title>test form</title>
</head>
<body>
<?

//dette er output til hjemmesiden inden brugeren har trykket send
if ($afsend==""){
?>
<form action="<? echo $_SERVER['PHP_SELF'] ; ?>" name="formular">
<table summary="">
<tr>
<td>Dit Navn</td><td><input type="text" name="navn" /><input type="hidden" name="afsend" value="ok" />
</td>
</tr>
<tr>
<td>Din E-mail</td><td><input type="text" name="mail" />
</td>
</tr>
<tr>
<td>Emne</td><td><input type="text" name="emne" /></td>
</tr>
<tr>
<td valign="top">Besked</td><td><textarea rows="8" cols="15" name="besked"></textarea>
</td>
</tr>
</table>
<input type="submit" value="send" /> <input type="reset" value="slet"
/>
</form>
<?
}
else{
//dette er tekststrengen til emailen

$message="Disse oplysniger er indtastet på hjemmesiden\n\n".
"Navn....\t\t".$navn."\n".
"E-mail....\t\t".$mail."\n".
"emne.......\t\t".$emne."\n.".
"Besked fra brugeren: \n".$besked;

//dette er tekststrengen til output til hjemmesiden efter korekt udfyldt formular

$message2="Disse oplysniger er indtastet på hjemmesiden\n\n<br>".
"Navn....\t\t".$navn."\n<br>".
"E-mail....\t\t".$mail."\n<br>".
"emne.......\t\t".$emne."<br> \n ".
"Besked fra brugeren:\n<br><br>".$besked;

//dette afsender mail og kommer med et output til brugeren at oplysningerne er sendt og hvad der er sendt

if (navn($navn)&email($mail)&subject($emne)&besked($besked)){
echo "der er afsendt mail med disse oplysninger\n<br>\n<br>\n"; echo $message2;
mail('dit navn<din@maildresse.dk>','Emne - '.$emne ,$message,'From:'.$navn.'<'.$mail.'>');
}
else{
// hvis brugeren har trykket send og der fejl i indtasningen skal dette output til hjemmesiden
?>
<form action="<? echo $_SERVER['PHP_SELF'] ; ?>" name="formular">
<input type="hidden" name="afsend" value="ok" />
<table summary=""> <tr><td>Dit Navn</td><td>
<?
if (!navn($navn)){
?>
<input type="text" name="navn" />fejl
<?
}
else{
?>
<input type="text" name="navn" value="<? echo $navn; ?>" />
<?
}
?>
</td></tr>
<tr><td>Din E-mail</td><td>
<?
if (!email($mail)){
?>
<input type="text" name="mail" value="<? echo $mail; ?>" />fejl
<?
}
else{
?>
<input type="text" name="mail" value="<? echo $mail; ?>" /> <?
}
?>
</td></tr>
<tr><td>Emne</td><td><?
if (!subject($emne)){
?>
<input type="text" name="emne"/>fejl
<?
}
else{
?>
<input type="text" name="emne" value="<? echo $emne; ?>" /> <?
}
?>
</td></tr>
<tr><td valign="top">Besked</td><td valign="top"><textarea rows="8"
name="besked" cols="15"><?
if (!besked($besked)){
?>
</textarea>fejl
<?
}
else{
echo $besked?></textarea>
<?
}
?></td></tr>
</table>
<input type="submit" value="send" /> <input type="reset" value="slet"
/>
</form>
<?
}
}
?>
</body>
</html>



Kommentar
Fra : rinarina


Dato : 01-02-05 23:03

Hej Poul. Dejligt at du har gidet kigge på det. Det hele ser fint nok ud på min server, men jeg modtager dog ingen mail, hmm.. Hvordan kan det være? en anden ting: er det muligt at skære i koden sådan så brugeren kun skal indtaste sin mailadresse og intet andet?

Mange hilsner

R.

Kommentar
Fra : rinarina


Dato : 01-02-05 23:06

Hov nu har jeg modtaget mailen, jubii Er det mon for omfattende at tilpasse koden sådan så kun mail skal udfyldes?

Kommentar
Fra : poul_from


Dato : 01-02-05 23:20

nej det er det ikke
Kode
<?


$mail=$HTTP_GET_VARS['mail'];
$afsend=$HTTP_GET_VARS['afsend'];


//denne funktion tjekker om feltet navn er indtastet //og retunere om det sandt eller falsk


//denne funktion tjekker om det er en gyldig email adresse der tastet ind
function email($mail){
if ((!ereg(".+\@.+\..+", $mail)) || (!ereg("^[a-zA-Z0-9_@.-]+$", $mail))){
return false;
} else{
return true;
}
}

<html>
<head>
<title>test form</title>
</head>
<body>
<?

//dette er output til hjemmesiden inden brugeren har trykket send
if ($afsend==""){
?>
<form action="<? echo $_SERVER['PHP_SELF'] ; ?>" name="formular">
<table summary="">

<tr>
<td>Din E-mail</td><td><input type="text" name="mail" />
</td>
</tr>

</table>
<input type="submit" value="send" /> <input type="reset" value="slet" />
</form>
<?
}
else{
//dette er tekststrengen til emailen

$message="Denne mailadresse er tilmeldt nyhedsbrev\n\n".
"E-mail....\t\t".$mail."\n";

//dette er tekststrengen til output til hjemmesiden efter korekt udfyldt formular

$message2="Denne mail adresse er tilmeldt nyhedsbrevet\n\n<br>".
"E-mail....\t\t".$mail."\n<br>";

//dette afsender mail og kommer med et output til brugeren at oplysningerne er sendt og hvad der er sendt

if (email($mail)){
echo "der er afsendt mail med disse oplysninger\n<br>\n<br>\n"; echo $message2;
mail('dit navn<din@maildresse.dk>','Emne - Tilmelding til nyhedesbrevet' ,$message,'From:'.$navn.'<'.$mail.'>');
}
else{
// hvis brugeren har trykket send og der fejl i indtasningen skal dette output til hjemmesiden
?>
<form action="<? echo $_SERVER['PHP_SELF'] ; ?>" name="formular">
<input type="hidden" name="afsend" value="ok" />
<table summary="">
<tr><td>Din E-mail</td><td>
<?
if (!email($mail)){
?>
<input type="text" name="mail" value="<? echo $mail; ?>" />fejl
<?
}
else{
?>
<input type="text" name="mail" value="<? echo $mail; ?>" /> <?
}
?>
</td></tr>
</table>
<input type="submit" value="send" /> <input type="reset" value="slet"/>
</form>
<?
}
}
?>
</body>
</html>


Kommentar
Fra : rinarina


Dato : 01-02-05 23:28

Oki, men når jeg kan ikke åbne filen på serveren, jeg får beskeden:
Parse error: parse error, unexpected '<' on line 35

...

Kommentar
Fra : poul_from


Dato : 01-02-05 23:35

tjekker det lige

Kommentar
Fra : rinarina


Dato : 01-02-05 23:39

Jeg har fundet fejlen, det drejede sig om et ?> for meget i nederste del af koden. Jeg kan nu godt se formularen på min skærm, men jeg får ingen returbesked om at man er tilmeldt nyhedsbrevet - og jeg modtager heller ingen mail...

Kommentar
Fra : poul_from


Dato : 01-02-05 23:44

vent lidt så kommer den nok
har du husket at indsætte din egen mail adresse
jeg fandt også fejlen den
smuttede da jeg rettede scriptet til
det går lidt forstærkt engang imellem

Kommentar
Fra : poul_from


Dato : 01-02-05 23:49

her er den endelige udgave
Kode
<?

$mail=$HTTP_GET_VARS['mail'];
$afsend=$HTTP_GET_VARS['afsend'];

//denne funktion tjekker om feltet navn er indtastet //og retunere om det sandt eller falsk

//denne funktion tjekker om det er en gyldig email adresse der tastet ind
function email($mail){
if ((!ereg(".+\@.+\..+", $mail)) || (!ereg("^[a-zA-Z0-9_@.-]+$", $mail))){
return false;
} else{
return true;
}
}
?>
<html>
<head>
<title>test form</title>
</head>
<body>
<?

//dette er output til hjemmesiden inden brugeren har trykket send
if ($afsend==""){
?>
<form action="<? echo $_SERVER['PHP_SELF'] ; ?>" name="formular">
<input type="hidden" name="afsend" value="ok" />
<table summary="">

<tr>
<td>Din E-mail</td><td><input type="text" name="mail" />
</td>
</tr>

</table>
<input type="submit" value="send" /> <input type="reset" value="slet" />
</form>
<?
}
else{
//dette er tekststrengen til emailen

$message="Denne mailadresse er tilmeldt nyhedsbrev\n\n".
"E-mail....\t\t".$mail."\n";

//dette er tekststrengen til output til hjemmesiden efter korekt udfyldt formular

$message2="Denne mail adresse er tilmeldt nyhedsbrevet\n\n<br>".
"E-mail....\t\t".$mail."\n<br>";

//dette afsender mail og kommer med et output til brugeren at oplysningerne er sendt og hvad der er sendt

if (email($mail)){
echo "der er afsendt mail med disse oplysninger\n<br>\n<br>\n"; echo $message2;
mail('info@p-nissen.dk','Emne - Tilmelding til nyhedesbrevet' ,$message,'From:'.$navn.'<'.$mail.'>');
}
else{
// hvis brugeren har trykket send og der fejl i indtasningen skal dette output til hjemmesiden
?>
<form action="<? echo $_SERVER['PHP_SELF'] ; ?>" name="formular">
<input type="hidden" name="afsend" value="ok" />
<table summary="">
<tr><td>Din E-mail</td><td>
<?
if (!email($mail)){
?>
<input type="text" name="mail" value="<? echo $mail; ?>" />fejl
<?
}
else{
?>
<input type="text" name="mail" value="<? echo $mail; ?>" /> <?
}
?>
</td></tr>
</table>
<input type="submit" value="send" /> <input type="reset" value="slet"/>
</form>
<?
}
}
?>
</body>
</html>


Accepteret svar
Fra : poul_from

Modtaget 100 point
Dato : 01-02-05 23:51

der manglede en linie den er nu tilføjet
test er er det også og virker

Godkendelse af svar
Fra : rinarina


Dato : 02-02-05 00:01

Du er en skat! Tusind tak for din store hjælp, nu virker det perfekt! Har lige lagt en håndfuld point oveni
                        

Kommentar
Fra : poul_from


Dato : 02-02-05 00:02

det man har venner til her på kandu


Kommentar
Fra : rinarina


Dato : 02-02-05 00:09

Det er bare dejligt! Lige et lille spørgsmål: kan jeg skrive html-kode ind i php-koden - hvis jeg nu vil have en bestemt font eller lignende?

Kommentar
Fra : rinarina


Dato : 02-02-05 00:25

Jo, det kan man vist, har lige prøvet..


Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste