Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  42 2155
jeg har litt problemer med denne phpen. jeg får mail, men jeg får ikke innholdet jeg har skrevet inn i feltene. har slitt lenge med denne og nå begynner det å bli flaut med en så enkel php som denne :S

Kode

<?php
$name = $_POST['name'];
$mail = $_POST['mail'];
$phone = $_POST['phone'];
$text = $_POST['text'];
$to	  = "meg <eksempel@lol.com>";
$subject  = "HEI!";
$message  = "$text";
$message  = "$phone";
$headers  = "From: $name <$mail>";
$headers  = "MIME-Version: 1.0\n" ; 
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; 
$headers .= "X-Priority: 1 (Higuest)\n"; 
$headers .= "X-MSMail-Priority: High\n"; 
$headers .= "Importance: High\n";
$status   = mail($to,$subject,$message,$headers);
?>
Har du i det hele tatt postet data til skriptet med en HTML-form?!
Har du forsøkt å spytte ut innholdet i $_POST-arrayet og sett om det er verdier i det? print_r( $_POST ); eller var_dump( $_POST );
ser hvertfall du har glemt ett punktum etter 2. $headers og 2. $message.
Trådstarter
ja colafreak har gjort det
<form action="sendmail.php" method="post" enctype="text/plain">

men når jeg hadde en sikkerhetsfunksjon så ville den ikke sende. brukte denne:

if (empty($name,$mail,$phone,$text)) {
sendmail = "0";
echo " Du har glemt ett eller flere felt åpne";
}

da fikk jeg en feilmelding i linje 7 som er "if (empty($name,$mail,$phone,$text)) {"
og mailen ble heller ikke sendt. virker som om sendmail.php ikke finner feltene hvor det er tekst
Gjør som |dl3m0b sa og kjør en print_r($_POST) i scriptet ditt.

Forøvrig så kan du kun sjekke èn og en streng ved bruk av empty(), så finner det ikke merkelig at det ikke funket.
Dette vil funke:

Kode

if( empty($var1) || empty($var2) ) // osv
{
// ???
}
Eventuellt kjøre alle postdata gjennom en loop og sjekket det den veien om du kun skal sjekke om feltene er tomme/ikke.
Sist endret av lsrr; 23. februar 2010 kl. 23:13.
Sur og sarkastisk
droppboks's Avatar
Sitat av Eska Vis innlegg
ja colafreak har gjort det
<form action="sendmail.php" method="post" enctype="text/plain">

men når jeg hadde en sikkerhetsfunksjon så ville den ikke sende. brukte denne:

if (empty($name,$mail,$phone,$text)) {
sendmail = "0";
echo " Du har glemt ett eller flere felt åpne";
}

da fikk jeg en feilmelding i linje 7 som er "if (empty($name,$mail,$phone,$text)) {"
og mailen ble heller ikke sendt. virker som om sendmail.php ikke finner feltene hvor det er tekst
Vis hele sitatet...
Hmm... og feltene i HTMLformen har faktisk riktig navn (i "name" attributtet til elementet)? (sikkert dumt spørsmål, men det lønner seg vel og dobbeltskjekke )

f. eks vil

Kode

<form action="" method="post">
<input type="text" name="name" />
<input type="submit" value="Trykk" />
</form>
bli til

Kode

<?php
$_POST['name'];
?>
på siden du sender til (i mitt eksempel seg selv).
Sist endret av droppboks; 24. februar 2010 kl. 11:24.
Aha!
Hva med å prøve

Kode

<form action="" method="post">
<input type="text" name="name" id="name" />
<input type="submit" value="Trykk" />
</form>
Det jeg la til er

Kode

id="name"
i

Kode

<input type="text" name="name" id="name" />
Sist endret av Colafreak; 24. februar 2010 kl. 11:59.
Sur og sarkastisk
droppboks's Avatar
Sitat av Colafreak Vis innlegg
Aha!
Hva med å prøve

Kode

<form action="" method="post">
<input type="text" name="name" id="name" />
<input type="submit" value="Trykk" />
</form>
Det jeg la til er

Kode

id="name"
i

Kode

<input type="text" name="name" id="name" />
Vis hele sitatet...
Er ikke id hovedsaklig til bruk i CSS og JavaScript? Når jeg lager PHP script har jeg hvertfall aldri brukt "id" som attributt til PHPen (mulig det går an, men jeg sier jeg aldri har brukt det, og scriptene mine funker fint ).

Men du fikk meg til å tenke vidre... kanskje det bugger fordi "name" ikke kan ha verdien "name" (jeg har alltid brukt name="user"). Bare en teori, ikke bekreftet.

Kode

$message  = "$text";
$message  = "$phone";
Her har du den første feilen din. Først setter du $message til "$text", deretter setter du den til "$phone". Ønsker du å ha med begge deler må du gjøre det slik:

Kode

$message = $text."\n";
$message.= $phone;
Du gjør samme feil med $headers-variablen:

Kode

$headers = "From: $name <$mail>\n";
$headers = "MIME-Version: 1.0\n" ;
Riktig:

Kode

$headers = "From: $name <$mail>\n";
$headers.= "MIME-Version: 1.0\n" ;
Sitat av CHooBE Vis innlegg
Er ikke id hovedsaklig til bruk i CSS og JavaScript? Når jeg lager PHP script har jeg hvertfall aldri brukt "id" som attributt til PHPen (mulig det går an, men jeg sier jeg aldri har brukt det, og scriptene mine funker fint ).

Men du fikk meg til å tenke vidre... kanskje det bugger fordi "name" ikke kan ha verdien "name" (jeg har alltid brukt name="user"). Bare en teori, ikke bekreftet.
Vis hele sitatet...
PHP bruker inneholdet i name-attributen til å navngi elementer i $_POST-arrayet, så å sette id-attributen vil ikke hjelpe stort.

Name-attributen kan fint inneholde strengen "name". Det er ikke noe problem.
Sist endret av danielsk; 24. februar 2010 kl. 12:12.
Sitat av Colafreak Vis innlegg
Aha!
Hva med å prøve

Kode

<form action="" method="post">
<input type="text" name="name" id="name" />
<input type="submit" value="Trykk" />
</form>
Det jeg la til er

Kode

id="name"
i

Kode

<input type="text" name="name" id="name" />
Vis hele sitatet...
Tull og vas! Du forvirrer mer enn du hjelper. Som sagt, se hva du får om du spytter ut $_POST før validering.
Trådstarter
herregud dette begynner å bli håpløst!

her er html koden...

HTML-kode

<form action="sendmail.php" method="post" enctype="text/plain">
Navn:<br>
<input name="user" size="30" type="text" id="user" /><br>
E-Post:<br>
<input name="mail" size="30" type="text" id="mail" /><br>
Telefon:<br>
<input name="phone" size="30" type="text" id="phone" /><br>
Melding:<br>
<textarea rows="5" cols="28" name="text" id="text" /></textarea><br>
<input value="Send" type="submit"><input value="Reset" type="reset">
</form>
og slik ser php koden ut nå

Kode

<?php
$user = $_POST['user'];
$mail = $_POST['mail'];
$phone = $_POST['phone'];
$text = $_POST['text'];
$to	  = "Meg <eksempel@lol.com>";
$subject  = "Hei!";
$message  = $text."\n";
$message .= $phone;
$headers  = "From: $user <$mail>\n";
$headers .= "MIME-Version: 1.0\n" ; 
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; 
$headers .= "X-Priority: 1 (Higuest)\n"; 
$headers .= "X-MSMail-Priority: High\n"; 
$headers .= "Importance: High\n";
$status   = mail($to,$subject,$message,$headers);
?>
jeg bare klør meg i hode... btw har domene hos one.com
PRØV:
Først

Kode

<?php 
$user = $_POST['user']; 
echo "$user <br>";
$mail = $_POST['mail'];
echo "$mail <br>"; 
$phone = $_POST['phone']; 
echo "$phone <br>";
$text = $_POST['text']; 
echo "$text <br>";
$to      = "Meg <eksempel@lol.com>"; 
$subject  = "Hei!"; 
$message  = $text."\n"; 
$message .= $phone; 
$headers  = "From: $user <$mail>\n"; 
$headers .= "MIME-Version: 1.0\n" ;  
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";  
$headers .= "X-Priority: 1 (Higuest)\n";  
$headers .= "X-MSMail-Priority: High\n";  
$headers .= "Importance: High\n"; 
mail($to,$subject,$message,$headers); 
?>
Får du ut resultatene? Hvis ikke, så prøver du dette:

HTML-kode

<form action="sendmail.php" method="post" enctype="text/plain">
Navn:<br>
<input name="user" size="30" type="text" id="user" name="user"/><br>
E-Post:<br>
<input name="mail" size="30" type="text" id="mail" name="mail"/><br>
Telefon:<br>
<input name="phone" size="30" type="text" id="phone" name="phone" /><br>
Melding:<br>
<textarea rows="5" cols="28" name="text" id="text" name="text"/></textarea><br>
<input value="Send" type="submit"><input value="Reset" type="reset">
</form>
Edit> Typo
Sist endret av Colafreak; 24. februar 2010 kl. 21:31.
... du setter bare mail til en variabel der, du kjører den faktisk ikke.

Kode

<?php 
$user = $_POST['user']; 
$mail = $_POST['mail']; 
$phone = $_POST['phone']; 
$text = $_POST['text']; 
$to      = "Meg <eksempel@lol.com>"; 
$subject  = "Hei!"; 
$message  = $text."\n"; 
$message .= $phone; 
$headers  = "From: ". $user. " <". $mail .">\n"; 
$headers .= "MIME-Version: 1.0\n" ;  
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";  
$headers .= "X-Priority: 1 (Higuest)\n";  
$headers .= "X-MSMail-Priority: High\n";  
$headers .= "Importance: High\n"; 
mail($to,$subject,$message,$headers) or die("Error with mail"); 
?>
Colafreak, hva er vits med name-tag 2 ganger? über presisering at feltet har name=blabla?
Sist endret av pinkrabbitz; 24. februar 2010 kl. 21:32.
Trådstarter
jeg får desverre bare en tom mail.. :S

HTML-kode

<form action="sendmail.php" method="post" enctype="text/plain">
Navn:<br>
<input name="user" size="30" type="text" id="user" /><br>
E-Post:<br>
<input name="mail" size="30" type="text" id="mail" /><br>
Telefon:<br>
<input name="phone" size="30" type="text" id="phone" /><br>
Melding:<br>
<textarea rows="5" cols="28" name="text" id="text" /></textarea><br>
<input value="Send" type="submit"><input value="Reset" type="reset">
</form>
litt offtopic:

<textarea rows="5" cols="28" name="text" id="text" /></textarea>

du avslutter taggen med />, så kommer </textarea> etterpå det igjen?
Trådstarter
Colafreak jeg fikk ikke ut noen resultater i sendmail.php :P
Well.. Prøv med HTML-formen jeg laga?
Trådstarter
Nei -.- funker fortsatt ikke får ikke resultater i sendmail.php
Sitat av pinkrabbitz Vis innlegg
... du setter bare mail til en variabel der, du kjører den faktisk ikke.
Vis hele sitatet...
Jo, den kjøres. Resultatet av kommandoen(om noe blir returnert) blir lagt til i variabelen. For eks i dette tilfellet vil det være TRUE om det er vellykket og FALSE om det ikke gikk(feil oppstod).

Kode

<?php
$user 	= $_POST['user']; 
$mail 	= $_POST['mail']; 
$phone	= $_POST['phone']; 
$text 	= $_POST['text'];  

if(empty($user)) 
	exit("empty user");
if(empty($mail))
	exit("empty mail");
if(empty($phone))
	exit("empty phone");
if(empty($text))
	exit("empty text");
	
$to = "mail@mail.com"; 
$subject = "Subject";

$message = $text."\n"; 
$message.= $phone; 

$headers = "From: ". $user. " <". $mail .">\r\n"; 
$headers.= "MIME-Version: 1.0\r\n" ;  
$headers.= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";  
$headers.= "X-Priority: 1 (Higuest)\r\n";  
$headers.= "X-MSMail-Priority: High\r\n";  
$headers.= "Importance: High\r\n"; 

mail($to,$subject,$message,$headers) or die("Could not send mail"); 
?>
Dette er testet og skal fungere, så lenge du setter opp form riktig. Legg merke til endringen gjort på $headers
Sist endret av danielsk; 25. februar 2010 kl. 00:12.
Trådstarter
nå begynte det å skje ting :P får opp empty user
mail.html:

HTML-kode

<form action="sendmail.php" method="post" enctype="text/plain">
Navn:<br>
<input name="user" size="30" type="text" name="user" id="user"/><br>
E-Post:<br>
<input name="mail" size="30" type="text" name="mail" id="mail"/><br>
Telefon:<br>
<input name="phone" size="30" type="text" name="phone" id="phone"/><br>
Melding:<br>
<textarea rows="5" cols="28" name="text" id="text" /></textarea><br>
<input value="Send" type="submit"><input value="Reset" type="reset">
</form>
sendmail.php:

Kode

<?php
$user     = $_POST['user']; 
$mail     = $_POST['mail']; 
$phone    = $_POST['phone']; 
$text     = $_POST['text'];  

if(empty($user)) 
    exit("empty user");
if(empty($mail))
    exit("empty mail");
if(empty($phone))
    exit("empty phone");
if(empty($text))
    exit("empty text");
    
$to = "mail@mail.com"; 
$subject = "Subject";

$message = $text."\n"; 
$message.= $phone; 

$headers = "From: ". $user. " <". $mail .">\r\n"; 
$headers.= "MIME-Version: 1.0\r\n" ;  
$headers.= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";  
$headers.= "X-Priority: 1 (Higuest)\r\n";  
$headers.= "X-MSMail-Priority: High\r\n";  
$headers.= "Importance: High\r\n"; 

mail($to,$subject,$message,$headers) or die("Could not send mail"); 
?>
fungerer DETTE da?
Trådstarter
nei
får bare opp empty user der å :S
Skriver du noe i user-feltet da?
Tør å ta sjansen på dette:

Kode

<?php 
$user     = $_POST["user"];  
$mail     = $_POST["mail"];  
$phone    = $_POST["phone"];  
$text     = $_POST["text"];   

if(empty($user))  
    exit("empty user"); 
if(empty($mail)) 
    exit("empty mail"); 
if(empty($phone)) 
    exit("empty phone"); 
if(empty($text)) 
    exit("empty text"); 
     
$to = "mail@mail.com";  
$subject = "Subject"; 

$message = $text."\n";  
$message.= $phone;  

$headers = "From: ". $user. " <". $mail .">\r\n";  
$headers.= "MIME-Version: 1.0\r\n" ;   
$headers.= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";   
$headers.= "X-Priority: 1 (Higuest)\r\n";   
$headers.= "X-MSMail-Priority: High\r\n";   
$headers.= "Importance: High\r\n";  

mail($to,$subject,$message,$headers) or die("Could not send mail");  
?>
Sitat av Colafreak Vis innlegg
Tør å ta sjansen på dette:

Kode

<?php 
$user     = $_POST["user"];  
$mail     = $_POST["mail"];  
$phone    = $_POST["phone"];  
$text     = $_POST["text"];   

if(empty($user))  
    exit("empty user"); 
if(empty($mail)) 
    exit("empty mail"); 
if(empty($phone)) 
    exit("empty phone"); 
if(empty($text)) 
    exit("empty text"); 
     
$to = "mail@mail.com";  
$subject = "Subject"; 

$message = $text."\n";  
$message.= $phone;  

$headers = "From: ". $user. " <". $mail .">\r\n";  
$headers.= "MIME-Version: 1.0\r\n" ;   
$headers.= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";   
$headers.= "X-Priority: 1 (Higuest)\r\n";   
$headers.= "X-MSMail-Priority: High\r\n";   
$headers.= "Importance: High\r\n";  

mail($to,$subject,$message,$headers) or die("Could not send mail");  
?>
Vis hele sitatet...
Det utgjør ingen forskjell om du bruker double eller single quotes i $_POST-arrayet. Ser ikke poenget med å drive å gjette løsninger? Dersom du tester koden selv så vil du se at det fungerer fint, så her eksisterer nok problemet hos brukeren.
Trådstarter
mhm... one.com sa at de ikke støtter sendmail.php
det var rart fordi jeg har klart å sende mail fra den, men innholdet kom ikke. bare en tom mail
Sitat av Eska Vis innlegg
mhm... one.com sa at de ikke støtter sendmail.php
det var rart fordi jeg har klart å sende mail fra den, men innholdet kom ikke. bare en tom mail
Vis hele sitatet...

What lol?
Sa de at de ikke støtter fila?!
Da betyr det vel at de ikke støtter php_mail? Men da burde heller ikke du fått en epost ...
Så klart kan du sende mail fra en webside hvis du bruker one.com. Å påstå noe annet er bare bs.
Du kan jo bare bruke smtp-serveren til one.com.

Sitat av one.com
Kan jeg sende mails fra min webside?
Hvis du ønsker å sende e-mails fra din web-side via et script kan dette naturligvis godt la seg gjøre. Her skal du bruke vår interne smtp-serveradresse: mailout.one.com.
Vis hele sitatet...
Sist endret av s1gh; 25. februar 2010 kl. 15:32.
Hei.
Prøv å kjøre dette:

Kode

<?php
$to = "mail@mail.com"; // Din epost her 
$subject = "Subject";  
$text = "LOL!";
$phone = "98765432";
$message = $text."\n";   
$message.= $phone;   
$user = "Myname";
$mail = "my@mail.com";

$headers = "From: ". $user. " <". $mail .">\r\n";   
$headers.= "MIME-Version: 1.0\r\n" ;    
$headers.= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";    
$headers.= "X-Priority: 1 (Higuest)\r\n";    
$headers.= "X-MSMail-Priority: High\r\n";    
$headers.= "Importance: High\r\n";   

mail($to,$subject,$message,$headers) or die("Could not send mail");
?>
Sist endret av Colafreak; 25. februar 2010 kl. 15:33.
Eska:
Kunne du være så vennlig å legge ut HTML-formen din, så vi kan se selv?

Nå har du fått et fungerende mailscript, så feilen må ligge i formscriptet ditt.
Sitat av nomore Vis innlegg
Jo, den kjøres. Resultatet av kommandoen(om noe blir returnert) blir lagt til i variabelen. For eks i dette tilfellet vil det være TRUE om det er vellykket og FALSE om det ikke gikk(feil oppstod).
Vis hele sitatet...
Beklager så mye, aner ikke hvor hodet mitt var igår, men det er såklart helt korrekt!
Trådstarter
her er form scriptet

HTML-kode

<form action="sendmail.php" method="post" enctype="text/plain">
Navn:<br>
<input name="user" size="30" type="text" name="user" id="user"/><br>
E-Post:<br>
<input name="mail" size="30" type="text" name="mail" id="mail"/><br>
Telefon:<br>
<input name="phone" size="30" type="text" name="phone" id="phone"/><br>
Melding:<br>
<textarea rows="5" cols="28" name="text" name="text" id="text"/></textarea><br>
<input value="Send" type="submit"><input value="Reset" type="reset">
</form>
etter mye endringer så ser det sånn ut nå :P

colafreak, jeg fikk mail nå med innholdet som var skrevet i sendmail.php
hvorfor setter du name på alle to ganger?
Sitat av Eska Vis innlegg
colafreak, jeg fikk mail nå med innholdet som var skrevet i sendmail.php
Vis hele sitatet...
Det betyr at det er noe galt med formen din.
Trådstarter
jo det står name 2 ganger fordi at noen sa at jeg skulle prøve det ut for å se om det funket... skjønner ikke helt selv hvorfor det skulle stå mail to ganger.
Var jeg som gjorde det, og det er fordi jeg ikke så "name" feltene før etter jeg hadde postet.

Bare slett det ene
Trådstarter
ok, men tviler på at det utgjør noe forskjell
Vi vet at noe er galt med formen din uansett.
Fant noen småfeil i scriptet. Rettet de. Si om dette fungerer...

Kode

<?php
$user     = $_POST['user']; 
$mail     = $_POST['mail']; 
$phone    = $_POST['phone']; 
$text     = $_POST['text'];  

if(empty($user)){ 
    exit("empty user");
}

if(empty($mail)){
    exit("empty mail");
}

if(empty($phone)){
    exit("empty phone");
}

if(empty($text)){
    exit("empty text");
}
    
$to = "mail@mail.com"; 
$subject = "Subject";

$message = $text."\n"; 
$message.= $phone; 

$headers = "From: ". $user. " <". $mail .">\r\n"; 
$headers .= "MIME-Version: 1.0\r\n" ;  
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";  
$headers .= "X-Priority: 1 (Higuest)\r\n";  
$headers .= "X-MSMail-Priority: High\r\n";  
$headers .= "Importance: High\r\n"; 

mail($to, $subject, $message, $headers) or die("Could not send mail"); 
?>
Trådstarter
testet den, men den virket ikke :S da må det jo nesten være noe feil i formen. men jeg ser ingen :S
Form og script ser rett ut nå, eneste jeg kan komme på at er feil er headerne, men ettersom jeg ikke er noen guru på feltet skal jeg ikke si noe sikkert.

Prøv å:

Kode

// Bytt ut
mail($to, $subject, $message, $headers) or die("Could not send mail");
// med
mail($to, $subject, $message) or die('!');
- Om det funker har du funnet problemet.

Mekket i tilegg et mailscript selv, som du kan prøve:

Kode

<form method="post" action="">
Navn:<br />
<input type="text" name="name"/><br />
E-post:<br />
<input type="text" name="email"/><br />
Telefon:<br />
<input type="text" name="phone"/><br />
Melding:<br />
<textarea name="message"></textarea><br />
<input type="submit" name="submit" value="..." />
</form>

<?php
// Kan brukes  i samme fil, eller kopieres over til egen fil (eks:sendmail.php)
if( isset($_POST['submit']) )
{
	$post	= true;
	$keys	= array('name','email','phone','message');
	foreach( $keys as $key )
	{
		if( empty($_POST[$key]) )
		{
			$post	= false;
			echo 'Tomt felt: '. $key; 
			break;
		}
		
		${$key}	= $_POST[$key];
	}
	
	if($post)
	{
		// Mottaker
		$to		 = 'DinMail@mail.com';	# Mottakers mail
		$subject = 'DittEmne';			# Emne
		
		// Legger til Telefon til $message
		$message .=	"\n".'Telefon: '. $phone;
		
		// Headers
		$headers = 'From: '. $name. '<'. $email .'>'."\n"; 
		$headers .= 'MIME-Version: 1.0\n';
		$headers .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";  
		$headers .= 'X-Priority: 1 (Highest)'."\n";  
		$headers .= 'X-MSMail-Priority: High'."\n";  
		$headers .= 'Importance: High'."\n";
		
		# Debug
		#echo 'Navn: '. $name .', Email: '. $email .', Telefon: '. $phone .', Melding: '. $message ."\n\n";
		#echo  $headers;
		#print_r($_POST);
		
		// Sende mail og gi brukeren feedback
		echo ( @mail($to, $subject, $message, $headers) ) ? 'Mail sendt' : 'Kunne ikke sende mail'; 
	}
}
?>
Sist endret av lsrr; 26. februar 2010 kl. 00:13.