Forum graficzne Burning-Brushes.pl

Newsletter/substrykcja

Sympatyk

  • VIP
  • *****
    • Master of science
      • Zobacz profil
      • Moje
    Nie wiem do końca jak się to nazywa. Generalnie chodzi o to, że podajemy swój adres E-mail i dostajemy co jakiś czas troche spamiku.

    Najpierw zaczynamy od tabelki w (mojej szkole)
    ID(int) | mail(varchar(255) ) | random(int)Nazwy kolumn a w nawiasach ich typ, dodatkowo ID jest kluczem i ma auto inkrementacje.
    Nazwa całej tabelki nazwałem substrykcja

    Robimy tam jakiś formularzyk
    <form method="post" action="php/subskrypcja.php" >
    <fieldset>
    Subskrypcja:
    <input name="mail" type="text"  size="35" value="Twój adres e-mail" />
    <input type="submit" value="Wyślij" class="input1"/>
    <input type="reset" value="Wyczyść" class="input1"/>
    </fieldset>
    </form>
    No i jeszcze plik lacz.php, dzięki któremu będziemy sie łączyc z sql.
    <?php
    $mysql_server "[SERWER BAZY DANYCH]";
    $mysql_admin "[UZYTKOWNIK]";
    $mysql_pass "[HASLO]";
    $mysql_db "[NAZWA BAZY DANYCH]";

    $connection = @mysql_connect($mysql_server$mysql_admin$mysql_pass) or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
    $db = @mysql_select_db($mysql_db$connection) or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
    ?>
    No i teraz pora na plik substrykcja.php
    <?php
    $email $_POST['mail'] ;
    if($email != null)
    {
    if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"$email))

    echo '<p>Wprowadzony adres jest nieprawidłowy.</p>';
    echo '<a href="http:/index.php">Powrót do strony głównej.</a>';
    }
    else
    {
    include('lacz.php');

    $wynik mysql_query("SELECT * FROM subskrypcja")  or die('Błąd zapytania'); 
    if(mysql_num_rows($wynik) > 0

    /* jeżeli wynik jest pozytywny, to wyświetlamy dane */ 
    while($t mysql_fetch_assoc($wynik)) 
    {
    $maill $t['mail'];
    if($email == $maill)
    {
    $mozna=1;
    }
    }
    }
    if($mozna == 1)
    {
    echo '<p>Adres Email jest już w bazie.</p>';
    echo '<a href="http:/index.php">Powrót do strony głównej.</a>';
    }
    else
    {
    $random rand(0100);
    $ins mysql_query("INSERT INTO subskrypcja SET mail='$email', random = '$random' ");
    if($ins)
    {
    echo '<p>Adres Email został zapisany. Teraz będziesz powiadamiany o wszystkich nowościach.</p>';
    echo '<a href="http:/index.php">Powrót do strony głównej.</a>';
    }
    }
    }
    }
    ?>
    Po krótce go opowiem.
    Pierwszy if sprawcza czy pole w formularzu zostało wypełnione.
    Potem sprawdzamy czy został wpisany z prawidławami adresu email
    Jeśli został dobrze wpisany to łączymy się z bazą przez plik zaincludowany.
    W pętli while sprawdzamy czy podany adres email już nie jest wpisany.
    Jeśli jest to wyskoczy komunikat jeśli nie to losuje liczbę z przedziały 0-100 i potem dodajemy wiersz do naszej tabelki w sql.
    I to na tyle samego zapisywania adresów.
    Teraz jeszcze trzeba miec możliwośc wykasowania danego adresu.
    <?php
    $email $_GET['mail'];
    $number $_GET['number'];

    include('lacz.php');
    $wynik mysql_query("SELECT * FROM subskrypcja")  or die('Błąd zapytania'); 
    if(mysql_num_rows($wynik) > 0

    /* jeżeli wynik jest pozytywny, to wyświetlamy dane */ 
    while($t mysql_fetch_assoc($wynik)) 
    {
    $mail $t['mail'];
    $random $t['random'];
    if($email == $mail AND $number == $random)
    {
    $mozna=1;
    }
    }
    }
    if($mozna == 1)
    {
    $kasowanie mysql_query("DELETE FROM subskrypcja WHERE random = '$number' ") or die(mysql_error());
    echo '<p>Adres Email został wykasowany.</p>';
    echo '<a href="http:/index.php">Powrót do strony głównej.</a>';
    }
    else
    {
    echo '<p>Błędne dane.</p>';
    echo '<a href="http:/index.php">Powrót do strony głównej.</a>';
    }
    ?>
    Na tą stronę wchodzimy
    nazwastrony.php?mail=[*ADRES EMAIL]&number=[**LICZBA WYLOSOWANA 0-100]
    Oczywiście ten link będzie się automatycznie generował
    Pobieramy dwie wartości adres i liczbe. I ponownie łączymy się z sql, w pętli while jest warunek if sprawdzamy czy jest taki wiersz gdzie w kolumnie mail jest taki adres mejla(patrz *) i kolumnie random (patrz **) Jeśli tak to kasuje cały wiersz jeśli to wyjdzie komuniakt.

    Teraz pliczek wysyłający spam, send.php
    <?php
    include(
    'lacz.php');
    $temat "Temat wiadomosc";
    $tresc 'tresc wiadomosc';
    $wynik mysql_query("SELECT * FROM subskrypcja")  or die('Błąd zapytania'); 
    if(mysql_num_rows($wynik) > 0

    /* jeżeli wynik jest pozytywny, to wyświetlamy dane */  
    while($t mysql_fetch_assoc($wynik)) 
    {
    $liczba $t['random'];
    $mail $t['mail'] ;
    $out ='\n\nAby wyłączyc subskrypcji klijnij w poniższy link\nhttp://outsub.php?mail='.$mail.'&number='.$liczba;
    $wiadomosc $tresc.$out;

    mail ($mail$temat$wiadomosc );
    }
    echo '<p>Poszło.</p>';
    echo '<a href="http:/index.php">Powrót do strony głównej.</a>';
    }
    ?>
    Edytujemy 3 i 4 linijeczke.
    « Ostatnia zmiana: Czerwiec 10, 2011, 11:32:46 wysłana przez Sympatyk »


    Abik

    • VIP
    • *****
      • Amerykański plastik
        • Zobacz profil
      oblukam go sobie dokładniej wieczorem, ale tak na pierwszy rzut oka jest całkiem spoko :D przydatny gadżet ^^


      Kenty^

      • Administrator
      • *****
          • Zobacz profil
          • Forum Graficzne
        Chodzi Ci o subskrypcję chyba, a nie substrykcję;p
        Dzięki za tuta, faktycznie fajny gadżet, być może kiedyś mi się przyda:P


        Witam. Wybaczcie, że na wstępie pisze posta z prośbą o pomoc aczkolwiek to chyba pierwszy tutek na jakiego trafiłem, co jest naprawdę rzeczowy. A poszukiwania jakiegoś tutoriala do robienia newslettera php+baza danych szukam od pewnego czasu, gdyż mój szef nie bacząc na to, iż jestem zielony w tym temacie polecił mi stworzyć rzeczony newsletter, przez co szarpię się z tematem już sporo czasu.

        W tym wypadku, ten formularz umieściłem na stronie, łącznie z plikami lacz.php i substrykcja.php (subskrypcja u mnie), z formularza info wypada, że nie można połączyć z bazą danych. Oczywiście jej nie mam i tutaj moje pierwsze pytanie

        [code]
        Najpierw zaczynamy od tabelki w (mojej szkole)
        ID(int) | mail(varchar(255) ) | random(int)\[/code]

        Czy w phpmyadmin to powinno wyglądać w ten sposób??



        Moje drugie pytanie o 2 ostatnie kody.

        <?php
           $email 
        $_GET['mail'];
           
        $number $_GET['number'];

           include(
        'lacz.php');
           
        $wynik mysql_query("SELECT * FROM subskrypcja")  or die('Błąd zapytania');    
           if(
        mysql_num_rows($wynik) > 0
           { 
              
        /* jeżeli wynik jest pozytywny, to wyświetlamy dane */ 
              
        while($t mysql_fetch_assoc($wynik)) 
              {
                 
        $mail $t['mail'];
                 
        $random $t['random'];
                 if(
        $email == $mail AND $number == $random)
                 {
                       
        $mozna=1;
                 }
              }
           }         
           if(
        $mozna == 1)
           {
              
        $kasowanie mysql_query("DELETE FROM subskrypcja WHERE random = '$number' ") or die(mysql_error());
              echo 
        '<p>Adres Email został wykasowany.</p>';
              echo 
        '<a href="http:/index.php">Powrót do strony głównej.</a>';
           }   
           else
           {
              echo 
        '<p>Błędne dane.</p>';
              echo 
        '<a href="http:/index.php">Powrót do strony głównej.</a>';
           }
        ?>

        Gdzie powinienem dokładnie umieścić ten kod ;/ dołączyć do któregoś z tych plików w/w, czy też stworzyć kolejny plik.

        oraz ostatnie pytanko, w jaki sposób mogę wysyłać maile do subskrybentów. Chodzi o konkretną treść słaną do całej listy mailowej co mi się w przyszłości ma zapełnić. Rozumiem, że chodzi o plik send.php, ale w jaki sposób za jego pomocą słać maile z newsletterem.

        Przepraszam za tak rzeczowe pytania aczkolwiek jak mówiłem jestem w kropce bo nie znam się na tej dziedzinie, a odgórnie mnie przycisnęli, żebym coś takiego stworzył.

        Dziękuję z góry.
        « Ostatnia zmiana: Czerwiec 09, 2011, 13:00:06 wysłana przez styko »


        Sympatyk

        • VIP
        • *****
          • Master of science
            • Zobacz profil
            • Moje
          Tabela tak ma wyglądac.

          <?php
          $result="CREATE TABLE subskrypcja (
          ID int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
          mail varchar(255) default NULL,
          ramdom INT default NULL
          )"
          ;
          $tworzenie mysql_query($result) or die(mysql_error());

          if (!$tworzenie$fail "1";
          if (isset($fail) && $fail == "1") {
          echo "ERROR";
          exit;
          } else {
          echo "Tabela subskrypcja poprawnie utworzona.";
          }
          ?>
          Pisane z palca na tworzenie tej tabelki

          Jeśli chodzi o kodzik, to fakt zapomniałem napisac, ale w pliku send.php była jakby podpowiedz
          http://outsub.php?mail='.$mail.'&number='.$liczba'czyli stworzyc kolejny pliczek outsub.php

          Jak wysyłac wiadomości.
          W pliku send.php, jak pisałem należy edytowac 3 i 4 linijeczke.
          I teraz wystarczy odpalic ten pliczek.
          Powinienen się pojawic napis, Poszło i link do strony głównej.
          Wysyłanie zrobione tak, ponieważ teraz łatwo można go pod jakiś formularz podłączyc.
          « Ostatnia zmiana: Czerwiec 09, 2011, 20:00:49 wysłana przez Sympatyk »


          wielkie dzięki za odpowiedź, bardzo fajnie napisany tutorial. Nawet ja jako kompletny laik, który zielonością aż świeci doszedł do momentu, że w bazie danych zapisują się maile ;) Szef pogłaszcze po głowie w nagrodę ;)

          tabelkę stworzyć udało mi się już wczoraj za pomocą phpmyadmin aczkolwiek jeden problem, gdyż nie mogę nigdzie znaleźć opcji, żeby w rekordzie DODATKOWO było AUTO_INCREMENT...rozumiem, że to ważne jest.

          kwestia pliku send.php

          Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/public_html/newsletter/send.php on line 18

          coś takiego mi wyskakuje po odpaleniu tego pliku.

          Jakoś może podepnę to pod formularz do wysyłania ;) Ważne, że maile można do bazy danych zapisywać (Zawsze można je skopiować do outlooka;P)


          Dziękuję za pomoc, uratowałeś mi głowę.
          « Ostatnia zmiana: Czerwiec 10, 2011, 10:52:28 wysłana przez styko »


          Sympatyk

          • VIP
          • *****
            • Master of science
              • Zobacz profil
              • Moje
            AUTO_INCREMENTACJA.
            w phpmyadmin. Wchodzisz do tabeli. Potem zakładka struktura potem tam gdzie jest wiesz ID na jego wysokoście po prawej stronie w kolumnie działania będzie taki ołówek który należy kliknąc, potem już dasz sobie rade.

            Ten błąd.
            Linia 13, ostatni apostrof zaraz za zmienna liczba wywalic i będzie grało.
            Już to w kodzie w pierwszym poście zmieniłem.



            ok, send.php już gra....

            natomiast kwestia tej tabeli z AUTO_INCREMENT ... przy zakładaniu tabeli w phpmyadmin już miałem te opcje i nie widziałem nigdzie tej opcji z list rozwijanych, a nie wiem czy to wpisać z palca gdzieś czy z pola wyboru wybrać.



            Przepraszam za taką namolność ale czy mógłbyś mi wskazać jeszcze w tej tabelce gdzie umieścić opcję AUTO_INCREMENT ??

            P.S

            po odpaleniu pliku send.php dostałem maila od www-data@ ... czy można to zmienić w jakiś sposób, żeby wysyłało z innego adresu mailowego?? powiedzmy newsletter@ ...


            Dzięki wielki i o wybaczenie proszę, że piątek tak pytaniami zaśmiecam :)

            Pozdrawiam


            A_I to AUTO_INCREMENT, po prostu postaw przy tym ptaszka
            Give sanity a longer leash  |  H+ 


            no i wszystko jasne...logika czasami nie idzie w parze z codziennością :)
            Dziękuję za podpowiedź, życzę miłego weekendu ;)


            Sympatyk

            • VIP
            • *****
              • Master of science
                • Zobacz profil
                • Moje
              Cytuj
              czy można to zmienić w jakiś sposób, żeby wysyłało z innego adresu mailowego
              chyba tak się to robi.
              $header = 'From: newsletter(malpa)costam.pl';
              ...
              mail ($mail, $temat, $wiadomosc , $header);