2012-07-07 3 views
1

это моя первая попытка использования классов php, никогда не делала этого раньше, мне очень нравится этот процесс.php отправить класс электронной почты - первая попытка

Код может быть немного грязным, если у вас есть предложения, я буду очень признателен!

О проблеме, я пытаюсь echo "$asd->getData()" и результат немного странно и я не могу объяснить результат:

Array ([0] => нома [1] => email [2] => telemovel [3] => loja [4] => assunto [5] => mensagem [6] => localidade [7] => nserie [nome] => holder [email] => ээээ [telemovel] => 913582837 [Лоха] => Braga [Assunto] => [сообщение] => [localidade] => [nserie] =>)

Я смотрю г для следующего результата:

Array ([нома] => MyName [электронная почта] => emailHotmail [telemovel] => cellphone_here [Лоха] => STORE_NAME [Assunto] => subject_here [сообщение] = > Message_here [localidade] => Местоположение [nserie] => SERIAL_NUMBER)

Почему число массива/ключи появляются?

<?php 

class Email{ 

    private $data; 

    function Email(){ 
      $this->data=array(); 
    } 

     public function setData($d){ 
      $this->data = $d; 
     } 

    public function valida(){ 
      $verifica = true; 
     foreach ($this->data as $campo) { 
       $this->data[$campo] = $_GET[$campo]; 
       if(!isset($_GET[$campo]) || empty($_GET[$campo])){ 
        $verifica=true; 
       } 
      } 
      return $verifica; 
    } 

    public function getData(){ 
      print_r($this->data); 
     } 


     public function sendEmail($data){ 
      $to = ($this->data['loja']=="braga") ? "[email protected]" : "[email protected]"; 
      $subject = $this->data['assunto'];//$campos[4]; 
     $nserie = ($this->data['nserie']) ? '\r\n nº de série:'.$this->data['nserie'] : ""; 
     $localidade = ($this->data['localidade']) ? '\r\n Localidade:'.$this->data['localidade'] : ""; 
     $messages = $this->data['mensagem'];//$campos[5]; 
     $message = $messages.$nserie.$localidade; 
      $message = htmlspecialchars_decode($message,ENT_QUOTES);//optional - I use encoding to POST data 
      $name = $this->data['nome']; 
      $from = $this->data['email'];//$campos[1]; 
      $headers = "From:".$name." <".$from.">\r\n"; 
      $headers .= "MIME-Version: 1.0\r\n"; 
      $headers .= "Content-type: text/plain; charset=utf-8\r\n"; 
      $headers .= "Content-Transfer-Encoding: 8bit"; 

      return mail($to, "=?utf-8?B?".base64_encode($subject)."?=", $message, $headers); 
     } 
} 
$asd = new Email(); 
$campos = array('nome','email','telemovel','loja','assunto','mensagem','localidade','nserie'); 
$asd->setData($campos); 
$asd->sendEmail($data); 
echo ($asd->valida($data)) ? "sent<br/>" : "not sent<br/>"; 
echo "<br/>".$asd->getData()."<br/>"; 


?> 

ответ

0

Вы печатаете массив. Вам необходимо выполнить цикл и распечатать каждый элемент в массиве.

0
$campos = array('nome','email','telemovel','loja','assunto','mensagem','localidade','nserie'); 

так же, как/короткий для

$campos = array(0=> 'nome',1=> 'email',....); 
0

Вы хотите установить $ Campos в вызове, как это:

$campos = array('nome' => '','email' => '','telemovel' => '','loja' => '','assunto' => '','mensagem' => '','localidade' => '','nserie' => ''); 
$asd->setData($campos); 

в $ Кампос массив был список значений и вы хотите вместо этого использовать эти значения для ключей пустых значений.

Удачи вам!

Смежные вопросы