Witamy, Gość. Zaloguj się lub zarejestruj.

Autor Wątek: Newsletter/substrykcja  (Przeczytany 5052 razy)

0 Użytkowników i 1 Gość przegląda ten wątek.

Sympatyk

  • *****
  • Podziękowania otrzymane: 44
  • Master of science
    • Zobacz profil
    • Moje
  • Ostatnie nagrody:
  • Layout of the Fortnight #45
Newsletter/substrykcja
« dnia: Marzec 02, 2011, 13:40:06 »
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, 09:32:46 wysłana przez Sympatyk »

Abik

Odp: Newsletter/substrykcja
« Odpowiedź #1 dnia: Marzec 02, 2011, 13:43:54 »
oblukam go sobie dokładniej wieczorem, ale tak na pierwszy rzut oka jest całkiem spoko :D przydatny gadżet ^^

Kenty^

  • *****
  • Podziękowania otrzymane: 80
    • Zobacz profil
    • Forum Graficzne
  • Ostatnie nagrody:
  • Layout of the Fortnight #4
  • Userbar of the Week #30
Odp: Newsletter/substrykcja
« Odpowiedź #2 dnia: Marzec 02, 2011, 16:25:47 »
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

styko

  • *
  • Podziękowania otrzymane: 0
    • Zobacz profil
Odp: Newsletter/substrykcja
« Odpowiedź #3 dnia: Czerwiec 09, 2011, 08:18:21 »
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, 11:00:06 wysłana przez styko »

Sympatyk

  • *****
  • Podziękowania otrzymane: 44
  • Master of science
    • Zobacz profil
    • Moje
  • Ostatnie nagrody:
  • Layout of the Fortnight #45
Odp: Newsletter/substrykcja
« Odpowiedź #4 dnia: Czerwiec 09, 2011, 16:32:08 »
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, 18:00:49 wysłana przez Sympatyk »

styko

  • *
  • Podziękowania otrzymane: 0
    • Zobacz profil
Odp: Newsletter/substrykcja
« Odpowiedź #5 dnia: Czerwiec 10, 2011, 08:47:44 »
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, 08:52:28 wysłana przez styko »

Sympatyk

  • *****
  • Podziękowania otrzymane: 44
  • Master of science
    • Zobacz profil
    • Moje
  • Ostatnie nagrody:
  • Layout of the Fortnight #45
Odp: Newsletter/substrykcja
« Odpowiedź #6 dnia: Czerwiec 10, 2011, 09:32:14 »
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.


styko

  • *
  • Podziękowania otrzymane: 0
    • Zobacz profil
Odp: Newsletter/substrykcja
« Odpowiedź #7 dnia: Czerwiec 10, 2011, 10:43:35 »
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

Lysander

  • *****
  • Podziękowania otrzymane: 202
    • Zobacz profil
  • Ostatnie nagrody:
  • Layout of the Fortnight #42
  • Layout of the Fortnight #27
Odp: Newsletter/substrykcja
« Odpowiedź #8 dnia: Czerwiec 10, 2011, 11:32:33 »
A_I to AUTO_INCREMENT, po prostu postaw przy tym ptaszka
Give sanity a longer leash  |  H+ 

styko

  • *
  • Podziękowania otrzymane: 0
    • Zobacz profil
Odp: Newsletter/substrykcja
« Odpowiedź #9 dnia: Czerwiec 10, 2011, 11:33:37 »
no i wszystko jasne...logika czasami nie idzie w parze z codziennością :)
Dziękuję za podpowiedź, życzę miłego weekendu ;)

Sympatyk

  • *****
  • Podziękowania otrzymane: 44
  • Master of science
    • Zobacz profil
    • Moje
  • Ostatnie nagrody:
  • Layout of the Fortnight #45
Odp: Newsletter/substrykcja
« Odpowiedź #10 dnia: Czerwiec 10, 2011, 12:02:08 »
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);