Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:

Zdravím.
Nevím, co se děje, ale včera se mi skoro komplet rozsypal web po zásahu do kodu, který obsluhuje odesílání emailu na adresu inzerenta. Dřív všechno fungovalo, včera jsem kod do noci opravoval a už to zase jede, kromě posílání emailu.
Přijde mi, že si model neumí vytáhnout adresu z db, ale předtím mu to problém nedělalo.

Kontroler reagovat:

class ReagovatKontroler extends Kontroler {
    public function zpracuj($parametry){
        $this->hlavicka = array(
                        'titulek' => 'Kontaktní formulář',
                        'klicova_slova' => 'kontakt, email, formulář, reagovat na inzerát',
                        'popis' => 'Reagovat na vybraný inzerát.'
                );
         $spravceInzeratu=new SpravceInzeratu();
         $spravceUzivatelu=new SpravceUzivatelu();
         $inzerat=$spravceInzeratu->reakceInzerat($_GET['autor']);
         $this->data['autor']=$inzerat['autor'];
         $adresa=$spravceUzivatelu->vratAdresu($inzerat['autor']);
         print_r($adresa);
if ($_POST)
                {
                        try
                        {

                                $odesilacEmailu = new OdesilacEmailu();
                                $odesilacEmailu->odesliSAntispamem( $_POST['rok'], $adresa, "Reakce na inzerát",$_POST['zprava'], $_POST['email']);
                                $this->pridejZpravu('Email byl úspěšně odeslán.');
                                $this->presmeruj('nejnovejsi');
                        }
                        catch (ChybaUzivatele $chyba)
                        {
                                $this->pridejZpravu($chyba->getMessage());
                        }
                }

                $this->pohled = 'reagovat';

    }
}

funkce vratAdresu:

public function vratAdresu($parametry)
        {
            $res=Db::dotazJeden('
                    SELECT email
                    FROM uzivatele
                    WHERE login=?
                    ',array($parametry));

            return $res;


        }

a pro jistotu pohled reagovat, ale ten je asi v cajku

<form method="post">
<div class="form-group">
        <label for="email">Vaše emailová adresa</label>
        <input type="email"  class="form-control" name="email" required="required" value="<?php if (isset($_POST['email'])) echo(htmlspecialchars($_POST['email'])); ?>" /></div><div class="form-group">
        <label for="rok">Antispam - zadejte aktuální rok</label>
        <input type="text" class="form-control" name="rok" required="required" /></div>
        <div class="form-group">
    <textarea name="zprava" class="form-control" required><?php if (isset($_POST['zprava'])) echo(htmlspecialchars($_POST['zprava'])); ?></textarea></div>
    <div class="form-group">
        <button type="submit" class="btn">Odeslat</button>
    </div>
</form>

Většinou to píše, že email nejde odeslat - hláška pramení z OdesilacEmailu:

public function odesli($komu, $predmet, $zprava, $od)
        {
                $hlavicka = "From: " . $od;
                $hlavicka .= "\nMIME-Version: 1.0\n";
                $hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
                print_r($komu,$predmet,$zprava,$hlavicka);

                if (!mb_send_mail($komu, $predmet, $zprava, $hlavicka))
                        throw new ChybaUzivatele('Email se nepodařilo odeslat.');
        }

        // Zkontroluje zda byl zadán aktuální rok jako antispam a odešle email
        public function odesliSAntispamem($rok, $komu, $predmet, $zprava, $od)
        {
                if ($rok != date("Y"))
                        throw new ChybaUzivatele('Chybně vyplněný antispam.');
                $this->odesli($komu, $predmet, $zprava, $od);
        }

a nebo se to odešle, ale vyhodí to bílou stránku a po návratu zpět se ani neobjeví hláška, ale na email zpráva dojde..

Nevíte někdo, co s tím? Několik hodin na to čučím a už fakt nevím :(

 
Odpovědět  -1 28.8.2015 10:56
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Michal Kuba
Michal Kuba:

Tak ted jsem si s tím trošku pohrál, zpátky jsem do kontroleru doplnil

$adresa['email]

a už se zprávy posílají, jenže předtím vyskočí bílá stránka a až po návratu zpět se objeví hláška o odeslání..

Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět 28.8.2015 11:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.