Gå til innhold

Problemer med klasser og mailfunksjon i php


Anbefalte innlegg

Hei!

 

Jeg har et lite problem i et av phpscriptene mine der jeg har en mail funksjon i en klasse som heter kunde. Problemet er at jeg får bare en blank mail uten informasjonen som blir skrevet inn i html skjemaet som jeg har laget. Php koden er som følger:

 

session_start();

if(isset($_REQUEST["bestill"])){

$_SESSION["navn"]=$_REQUEST["navn"];

$_SESSION["telefonnr"]=$_REQUEST["telefonnr"];

$_SESSION["epost"]=$_REQUEST["epost"];

$_SESSION["typebillett"]=$_REQUEST["typebillett"];

$_SESSION["antall"]=$_REQUEST["antall"];

}

 

class Kunde

{

private $navn;

private $telefonnr;

private $epost;

private $melding;

 

public function setNavn($navnInn){

$this->navn = $navnInn;

}

public function getNavn(){

return $this->navn;

}

public function setTlf($tlf){

$this->telefonnr = $tlf;

}

public function getTlf(){

return $this->telefonnr;

}

public function setEpost($epost){

$this->epost = $epost;

}

public function getEpost(){

return $this->epost;

}

public function sendMail(){

$this->melding=$this->navn." ";

$this->melding.=$this->telefonnr." ";

$this->melding.=$this->epost." ";

$this->melding.=$this->Bestilling->$typebillett. " ";

$this->melding.=$this->Bestilling->$antallbilletter. " ";

 

mail("epost","Bestilling",$melding);

}}

 

Videre følger klassen bestilling:

 

class Bestilling

{

private $typebillett;

private $antallbilletter;

public function setBillett($billettInn){

$this->typebillett = $billettInn;

}

public function getBillett(){

return $this->typebillett;

}

public function setAntall($antall){

$this->antallbilletter = $antall;

}

public function getAntall(){

return $this->antallbilletter;

}

}

 

Så opprettes objektet og gis verdier/skrives ut. Verdiene blir skrevet ut i motsetning til i mailen der jeg bare får en blank mail.

 

$kunde=new Kunde();

$kunde->setNavn($_SESSION["navn"]);

echo "Navn ";

echo $kunde->getNavn(). "<br />";

$kunde->setTlf($_SESSION["telefonnr"]);

echo "Telefonnr ";

echo $kunde->getTlf(). "<br />";

$kunde->setEpost($_SESSION["epost"]);

echo "Epost ";

echo $kunde->getEpost(). "<br />";

$bestilling=new Bestilling();

$bestilling->setBillett($_SESSION["typebillett"]);

echo "Type billett ";

echo $bestilling->getBillett()."<br />";

$bestilling->setAntall($_SESSION["antall"]);

echo "Antall billetter ";

echo $bestilling->getAntall()."<br />";

$_SESSION["kunde"]=$kunde;

 

if(isset($_REQUEST["bekreft"]))

{

$kunde=$_SESSION["kunde"];

$kunde->sendMail();

echo "Bestillingen din har blitt registrert";

}

 

Som sagt så er problemet at jeg bare får en blank mail når det funker å skrive ut verdiene. Hjelp ville vært høyst verdsatt:D

Lenke til kommentar
Videoannonse
Annonse

Mailfunksjonen din ser forsåvidt riktig ut. Sitter du på en development server? Kanskje det har noe med oppsett av posix eller lignende?

 

Hvis du ikke har sett på PHPMailer, så anbefaler jeg deg å bruke den. Har aldri hatt problemer med den, og du kan enkelt sette opp ssl / tsl kryptert mail over valgfri SMTP slik at du ungår spambox filter og annet krøll. :)

 

Mail med PHP kan være et hærk uten like hvis du ikke har de rette omstendigheter i systemet utenfor php :hmm:

Lenke til kommentar

Mailscriptet skal fungere på serveren jeg bruker(skolens server) og får også sendt mailen, men den inneholder ikke verdiene:S Har brukt mailfunksjonen før på samme server og da har dt fungert og mailen har inneholdt riktig info. Må nok være noe galt i koden som gjør at infoen ikke kommer med i mailen.

Lenke til kommentar

$melding er vel ikke det samme som $this->melding ?

Slik jeg har forstått det så bruker man $this i php hvis man skal refere til en variabel inne i klassen og i dette tilfellet "private $melding".

 

Når det gjelder:

 

$kunde=$_SESSION["kunde"];

$kunde->sendMail();

 

Jeg fikk beskjed av studieassistent at det var nødvendig å legge objektet inn i en session variabel fordi jeg bruker enda et htmlskjema lenger nede i scriptet

 

"<form action="" method="post">

<input type="submit" name="bekreft" value="Bekreft" />

</form>"

Lenke til kommentar

Hva skjer her?

$kunde=$_SESSION["kunde"];
   $kunde->sendMail();

 

Du setter $kunde til, ikke et objekt, men en session.

«En session»? Skal det liksom være en annen type verdi enn alle andre? Til informasjon, så er det ingen ting i veien for å lagre objekter i sessions. Det kan faktisk brukes til å lagre veldig enkle og elegante løsninger, sammenliknet med å f.eks. lagre en brukeridentifikator der og hente ut resten av brukerinformasjonen ved hver sidelastning.

Lenke til kommentar

Hva skjer her?

$kunde=$_SESSION["kunde"];
   $kunde->sendMail();

 

Du setter $kunde til, ikke et objekt, men en session.

«En session»? Skal det liksom være en annen type verdi enn alle andre? Til informasjon, så er det ingen ting i veien for å lagre objekter i sessions. Det kan faktisk brukes til å lagre veldig enkle og elegante løsninger, sammenliknet med å f.eks. lagre en brukeridentifikator der og hente ut resten av brukerinformasjonen ved hver sidelastning.

 

Ja, fult klar over det.. Så ikke på koden over det, før etterpå :)

 

 

Trådstarter,

mail("epost","Bestilling",$melding);

 

Bytt til

mail("epost","Bestilling",$this->melding);

 

Se om det fungerer da :)

Endret av Thomas.
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å
×
×
  • Opprett ny...