Problem ze skryptem php wysyłającym maila.

Pozostałe tematy dotyczące tworzenia stron WWW.
Crevusel
Posty: 2
Rejestracja: 21 maja 2014, 17:40:10
Płeć: Niewybrana
User Agent: Chrome Windows

Problem ze skryptem php wysyłającym maila.

Post autor: Crevusel »

Witam,

W skrypcie php który posiadam coś nie działa. Mianowicie wysyła on maila ale pustego z samym tematem :(

Oto kod skryptu.
plik: ustawienia.php

Kod: Zaznacz cały

<?php 
/* Ustawienia formularza kontaktowego */

$adres_odbiorcy = '';     //tu wpisz adres e-mail na który mają przychodzić wiadomości



/* Ustawienia wymaganych pól */

$valid['nick'] = 2 ; 
$valid['mail'] = 1 ;     
$valid['skype'] = 3 ;     
$valid['kanal'] = 10 ;     


/* Komunikaty */

$komunikat['sukces'] = 'Dziękujemy. Twoja wiadomość została wysłana.';         //Wiadomość po udanym wysłaniu formularza
$komunikat['blad'] = 'Wiadomość <b>NIE</b> została wysłana. Popraw poniższe błędy.';     //Wiadomość przy błędzie w sprawdzaniu danych, błędy zostaną wymienione poniżej
$komunikat['nick'] = 'Nick musi mieć min. 2 znaki.';     //Wpisz właściwą ilość znaków jeśli pole wymagane
$komunikat['mail'] = 'Podaj poprawny adres e-mail.';     //Wiadomość po błędnym wpisaniu adresu e-mail
$komunikat['skype'] = 'skype musi mieć min. 3 znaki.';     //Wpisz właściwą ilość znaków jeśli pole wymagane
$komunikat['kanal'] = 'link do kanału musi mieć min. 10 znaków';     //Wpisz właściwą ilość znaków jeśli pole wymagane
$komunikat['fail'] = 'Przepraszamy wystąpił chwilowy błąd. Spróbuj ponownie później';     //W przypadku nieudanego wyslania wiadomości np. błędu serwera

?>
Plik: mail.php

Kod: Zaznacz cały

<?php 

include ('ustawienia.php');

ob_start();
    include('formularz.php');
    $formularz = ob_get_contents();
ob_end_clean();


function wyswietl_forme($komunikat='') {
    global $formularz;
    
    $do_zmiany = array(
        '#komunikat#',
        '#strona#',
        '#nick#',
        '#mail#',
        '#skype#',
        '#kanal#',
        '#typpracy#'
    );
    $zmien_na = array(
        $komunikat,
        $_SERVER['REQUEST_URI'],
        $_POST['nick'],
        $_POST['mail'],
        $_POST['skype'],
        $_POST['kanal'],
        $_POST['typpracy'],
    );
    
    $formularz = str_replace ( $do_zmiany, $zmien_na, $formularz);
    
    return $formularz;    
}


function waliduj() {
    global $komunikat;
    global $valid;
    
    if( $valid['nick'] > 0 ) {
        if(strlen($_POST['nick']) < $valid['nick'] ){
            $walidacja['nick'] = $komunikat['nick']; 
        }
    }
    
    if( $valid['mail'] == 1 ) {
        if(!filter_var($_POST['mail'],FILTER_VALIDATE_EMAIL)) {
            $walidacja['mail'] =  $komunikat['mail'];
        }
    }
    
    if( $valid['skype'] > 0 ) {
        if(strlen($_POST['skype']) < $valid['skype'] ){
            $walidacja['skype'] = $komunikat['skype']; 
        }
    }
    
    if( $valid['kanal'] > 0 ) {
        if(strlen($_POST['kanal']) < $valid['kanal'] ){
            $walidacja['kanal'] = $komunikat['kanal']; 
        }
    }
    
    if( $valid['typpracy'] > 0 ) {
        if(strlen($_POST['typpracy']) < $valid['typpracy'] ){
            $walidacja['typpracy'] = $komunikat['typpracy']; 
        }
    }
    
    if(empty($walidacja)) {
        return 'true';
    }else{
        return $walidacja;
    }
    
}

// Działanie
if (($_SERVER['REQUEST_METHOD'] == 'POST')) {// wejście postem
        $walidacja = waliduj();
        
        if ($walidacja == 'true'){ //poprawnie wypełniony formularz
            
            if(mail($adres_odbiorcy,"=?UTF-8?B?".base64_encode($_POST['temat'])."?=",'<p>Od: <b>'.$_POST['nick'].'</b></p><pre>'.$_POST['tresc'].'</pre>','From:'.$_POST['mail']."\r\nContent-Type: text/html; charset=utf-8")){ //sukces
                print '
                    <div id="sukces">
                        <p>'.$komunikat['sukces'].'</p>
                    </div>
                    ';    
            }else{ //bląd serwera
                print '    
                    <div id="blad">
                        <p>'.$komunikat['fail'].'</p>
                    </div>
                    ';
                print wyswietl_forme();
            }
            
        }else{
            //błędna walidacja
            $blad_walidacji = $walidacja;
            
            $blad_walidacji = '
                    <div id="blad">
                        <p>'.$komunikat['blad'].'</p>
                        <ul>
                        ';
            foreach ($walidacja as $wpis) {
                $blad_walidacji .= '<li>'.$wpis.'</li>';
            }    
            $blad_walidacji .= '
                        </ul>
                    </div>
                    ';
                    
            print wyswietl_forme($blad_walidacji);
        }    
    
}else{
    // nowe wejście
    print wyswietl_forme();
}






?>
Plik: formularz.php

Kod: Zaznacz cały

    #komunikat#
    <form action="#strona#" method="post" id="formularz">
        
        <div>
            <label>Nick: <span class="red">*</span></label>
            <input type="text" id="nick" name="nick" value="#nick#" />
        </div>
        <div>
            <label>Adres e-mail: <span class="red">*</span></label>
            <input type="text" id="mail" name="mail" value="#mail#" />
        </div>
        <div>
            <label>skype: <span class="red">*</span></label>
            <input type="text" id="skype" name="skype" value="#skype#" />
        </div>
        <div>
            <label>link do kanału: <span class="red">*</span></label>
            <input type="text" id="kanal" name="kanal" value="#kanal#" />
        </div>
        <div>
            <label>Typ pracy: <span class="red">*</span></label>
            <input type="radio" id="typpracy" name="typpracy" value="animacja" />animacja 
            <input type="radio" id="typpracy" name="typpracy" value="grafika" />grafika
        </div>
        <div>
            <span class="red">*</span> - oznacza pola wymagane.
        </div>
        <div>
            <input type="submit" value="Wyślij" />
        </div>
        
    </form>
Będę wdzięczny jak pomożecie mi z tym.

Pozdrawiam,
Crevusel :)
ODPOWIEDZ