Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Michal Kuba
Tvůrce
Avatar
Michal Kuba:28.8.2015 10:56

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
28.8.2015 10:56
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Michal Kuba
Michal Kuba:28.8.2015 11:27

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.