1

これは、php クラスを使用する初めての試みであり、これまで行ったことはありませんでした。このプロセスをとても楽しんでいます。

コードは少し面倒かもしれません。何か提案があれば、よろしくお願いします!!

問題について、私はしようとしecho "$asd->getData()"ていますが、結果は少し奇妙で、結果を説明できません:

配列 ( [0] => nome [1] => email [2] => telemovel [3] => loja [4] => assunto [5] => mensagem [6] => localidade [7] => nserie [名前] => 所有者 [電子メール] => eeee [telemovel] => 913582837 [loja] => ブラガ [assunto] => [mensagem] => [localidade] => [nserie] => )

私は次の結果を探していました:

Array([nome] => MyName [email] => emailHotmail [telemovel] => cellphone_here [loja] => store_name [assunto] => subject_here [mensagem] => Message_here [localidade] => Location [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") ? "email1@email.com" : "email1@email.com";
            $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/>";


?>
4

3 に答える 3

0

次のように呼び出しで $campos を設定します。

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

$campos 配列は値のリストであり、代わりにこれらの値を空白値のキーにしたいとします。

幸運を!

于 2012-07-07T16:12:57.300 に答える
0

配列を出力しています。配列内の各項目をループして出力する必要があります。

于 2012-07-07T16:03:17.023 に答える
0
$campos = array('nome','email','telemovel','loja','assunto','mensagem','localidade','nserie');

/の略と同じです

$campos = array(0=> 'nome',1=> 'email',....);
于 2012-07-07T16:04:43.167 に答える