Wysyłanie maila w utf8 - rozwiązanie

Rozwiązanie dotyczy zadania numer 5 z tego posta. A więc zaczynamy. Najpierw trzeba dodać treść maila.

$tresc='
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
        Witaj drogi Użytkowniku!<br />
        <br />
        Właśnie zarejestrowałeś się w najlepszej grze na świecie typu MMORPG! Gratuluje słusznego wyboru.<br />
        Dane które podałeś to :<br />
        <table>
            <tr>
                <td>Login</td>
                <td>'.$_POST['login'].'</td>
            </tr>
            <tr>
                <td>Mail</td>
                <td>'.$_POST['mail'].'</td>
            </tr>
            <tr>
                <td>Login</td>
                <td>'.$_POST['login'].'</td>
            </tr>
            <tr>
                <td>Imię</td>
                <td>'.$_POST['imie'].'</td>
            </tr>
            <tr>
                <td>Nazwisko</td>
                <td>'.$_POST['nazwisko'].'</td>
            </tr>         
            <tr>
                <td>Imię Twojej postaci</td>
                <td>'.$_POST['imie_postaci'].'</td>
            </tr>
        </table>
    </body>
</html>
';

Jak widać - nic specjalnego. Zwykły html obrazujący dane, które wysłaliśmy za pomocą formularz. Warto zauważyć, że cały html jest kodowany w utf-8. Następnie dodajemy tytuł oraz pola dodatkowe.

$dodatkowo="From: Kurs PHP <no-replay@kurs-php.pl>\r\n";
$dodatkowo.="MIME-Version: 1.0\r\n";
$dodatkowo.="Content-type: text/html; charset=utf-8\r\n";

$temat = 'Potwierdzenie rejestracji w najlepszej grze MMORPG';
$temat = "=?UTF-8?B?".base64_encode($temat)."?=";
$dodatkowo = strtr($dodatkowo, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
$zam2 = strtr($zam2, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
if (mail($_POST['mail'], $temat, $tresc, $dodatkowo))
    echo 'Mail został wysłany';
else
    echo 'Nie udało się wysłać maila';

W zmiennych dodatkowych ustawiamy między innymi pole from (oraz inne nagłówki). W każdym pierwszym kursie znajduję się opis jak ustawiać nagłówki i co konkretnie znaczą. Ja tego robić nie będę. Nie wgłębiałem się w to - zawsze kopiuję kod, który jest sprawdzony i dostępny za darmo w sieci. Nie widzę powodu, dla którego mam to pamiętać albo opisywać. Parę następnych linijek odpowiada za odpowiednie polskie krzaczki. Normalnie nie trzeba tego robić, ale ja preferuje pisanie w utf-8 - a co za tym idzie trochę trzeba się pobawić z mailem. Po kliknięciu na funkcję pokaże się wam manual z opisem tej funkcji. Ogólnie odpowiadają one za zmianę znaków.

Jednocześnie chciałbym przypomnieć, że nie powinno się robić czegość takiego:

mail($_POST['mail'], $temat, $tresc, $dodatkowo);

, ponieważ nie wiadomo co wpisał użytkownik. Zakładam, że to jest kod uzupełniający do poprzednich rozwiązań i że te zmienne zostały sprawdzone, więc nic nie powinno się stać. Dzisiaj tak w miarę krótko, ale do końca tygodnia pokaże się kolejna lekcja, więc podglądajcie bloga.

Jakieś pytania?

Szkielet gry - pierwsze kroki

Trochę przeskoczę z tematami, miało być najpierw o dziedziczeniu i wyjątkach, ale stwierdziłem, że warto zacząć po prostu pisać grę. Dzisiaj będą pierwsze kroki. Po wielu przemyśleniach, stwierdziłem, że opiszę, jak zrobić grę strasznie zbliżoną bitefight. Na początku szkielet strony. Będzie on wyglądał mniej więcej tak:

tot

Śliczne nieprawdaż? Prawdaż. Kolorem niebieskim oznaczony jest nagłówek - tam będą wszystkie informację które są standardowe (łącznie z miejscem na reklamę, ale to na samym końcu). Na żółtym polu będzie menu, ba pomarańczowym główna treść, a na zielonym stopka. Proste. Jednocześnie chciałbym zaznaczyć, że layout będzie napisany na divach a nie na tabelkach.

Czytaj dalej

Obiektowość - rozwiązania

Znowu lekki poślizg względem planów, ale ważne, że nie dłużej niż tydzień :) Zaczynamy z rozwiązaniami. Pierwsze zadanie było banalne, ale trzeba było mieć podstawę do tego, żeby zacząć robić trudniejsze zadania. Pierwsze zadanie mogło wyglądać tak:

class jednej
{
    private $a;
    private $b;
    public $c;
    public function __construct ($a=0,$b=0,$c=0)
    {
        $this->a=(int)$a;
        $this->b=(int)$b;
        $this->c=(int)$c;
    }
}

Czytaj dalej