Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie E-maili z informacjami o koncie.
Forum PHP.pl > Forum > PHP
Jawo
Witam, jestem początkującym "programistą" jeżeli w ogóle można to tak nazwać.

Otóż chciałbym zrobić skrypt, oparty na plikach, bez bazy SQL.
Teraz wytłumaczę działanie skryptu, który chciałbym byście wy drodzy doświadczeni programiści pomogli mi zrobić:
rejestracja.php w tym pliku Będzie formularz
Rejestracji usera ale mniejsza z tym, oraz e-mail
który będzie sesją wysyłaną do register.php
a w register będą odczytywane:
$email= $_SESSION["email"];
$login= $_SESSION["login"];
$pass= $_SESSION["pass"];
... i tu się zaczyna moja prośba chciałbym skrypt który będzie zapisywał $emial, do pliku $login.xml w postaci email="' . $email . '", oraz wysyłał $login $pass na $emial. Potem osobny skrypt który, który będzie się z\składał też z 2 plików, jeden to formularz dajmy na to odzyskaj.php(Tu chciałbym też kod formularza), po wpisaniu do niego np swój login i e-mail będzie sprawdzał czy istnieje taki login czyli ten co poprzednio utworzyliśmy, jeżeli tak będzie otwierał ten plik fopen("$login", "r"); następnie sprawdzał czy w tym pliku $login, jest $email
czyli:

<?php
$login= $_SESSION["login"];
$filename = "$login";
$file = "c:\\loginy\\$filename.xml";
$fp = fopen($file,'r+') or die('Nie ma takiego loginu');
$tresc = fread($fp, filesize($file));
$email= $_SESSION["email"];

$dvx = "$tresc";
if(strstr($dvx, "$email")!==False)
{
print "<center><h1>To nie jest wlasciwy e-mail</h1>"; die;
} else {
print "JEST E-mail przepuszcza dalej";
}
fclose($fp);
?>


Jeżeli wszystko jest zrozumiałe proszę o pomoc, jeżeli nie proszę pisać, wytłumaczę
Pozdrawiam, Jawo
amadeo
Kod, który chcesz utworzyć, jest bardzo trudny i skomplikowany. Chciałbym poradzić, aby dane użytkownika zapisywało w formacie *.txt
Nie mniej jednak pokażę (mało optymalnie), jaki kod powinien być (z użyciem komentarzy):

kod do Register.php
  1. <?php
  2. //Definicja zmiennych
  3. $login = $_POST['login'];
  4. $password = $_POS['password'];
  5. $email = $_POST['email'];
  6. //Sprawdzanie, czy taki użytkownik istnieje.
  7. $adres = 'users/';
  8. $link = "$adres/$login.txt";
  9. if(file_exists($link))
  10. {
  11. print('Taki użytkownik już istnieje. Zmień nazwę użytkownika!');
  12. }
  13. else
  14. {
  15. //Przechodzimy do dalszej części kodu. Tworzenie pliku, w którym zapiszemy dane.
  16. $fo = fopen($link, 'w');
  17. //Zapisujemy dane w pliku
  18. $fw = fwrite($fo, "$login|$password|$email"); // Zapisanie danych
  19. if($fw) //sprawdzanie, czy zapisywanie się powiodło
  20. {
  21. print('Brawo! Zostałeś poprawnie zarejestrowany! Na twój email zostały wysłane twoje dane!');
  22. //Wysyłanie emaila
  23. $adres = 'boot@twojadomena.pl';
  24. $temat = 'Dane użytkownika';
  25. $tresc = "Witaj $login! r\nr\nr\nr\n Przesyłamy twoje dane, ponieważ zarejestrowałeś się w naszym serwisie!r\nr\nr\n Login: $login r\nr\n Hasło: $password. r\nr\nr\n Dziękujemy, że się zarejestrowałeś! Pozdrawiamy!";
  26. mail($adres, $temat, $tresc);
  27. }
  28. else
  29. {
  30. print('Wystąpił nieznany błąd.');
  31. }
  32.  
  33.  
  34. }
  35. ?>


Przepraszam, reszty kodów nie napiszę. Może jutro zdąże smile.gif
Pozdrowienia.

P.S. - zapisywanie do pliku, mogłem użyć za pomocą file_put_contents(), ale możesz mieć PHP 4.
Jawo
Dzięki wielkie na podstawie twojego kodu zrobiłem sobie odzyskiwanie, znalazłem trochę kodu i zrobiłem cosik biggrin.gif teraz potrzebne mi tylko że jak ktoś wpisze błędny e-mail to wyskakuje wiadomość o błednym e-mailu, a jeżeli poprawny przechodzi dalej, pozdrawiam
amadeo
Problemu najmniejszego nie ma... Korzystasz z pętli if()... Ok, mogłeś nie zrozumieć to napiszę.
Załóżmy, że login zapisany jest w Cookie $_COOKIE['log']
Z komentarzami objaśnie, że to bardzo proste:
  1. <?php
  2. $login = $_COOKIE['log']; //definicja loginu użytkownika
  3. $adres = "userzy/$login.txt";
  4. $fo = fopen($userzy, 'rw+'); //otwarcie pliku użytkownika.
  5. $fr = fread($fo, filesize($adres)); //czytanie pliku
  6. $plik = explode('|', $fr); //rozczytanie informacji między znakami |.
  7. $email = $_POST['email'];
  8. if($email != $plik[2]) //sprawdzanie, czy podany email rózni się od oryginalnego
  9. {
  10. print('Podałeś błędny email');
  11. }
  12. else
  13. {
  14. //dalsza część kodu
  15. }
  16. ?>
Jawo
Dzięki za ten kod, tylko że mam jeden jeszcze problem, otóż ja chę by przeszukiwało ten plik w poszukiwaniu tego e-mail'aw danej linijce, bo ja mam plik z userem o takich wartościach

  1. <?php
  2. pass="password"
  3. email="mail@gmail.com"
  4. ?>

Więc będzie wyświetlało że e-mail błędny bo nie będzie taka sama zawartość, czyli potrzebuje kody który będzie sprawdzał czy w pliku, po odcinku kodu email=" znajduje się $email

Z góry dziękuje za pomoc
amadeo
Napisz jeszcze raz, bo nie rozumiem..
Chodzi Ci o to czy $email ma przypisaną wartość?
  1. <?php
  2. if(IsSet($email))
  3. {
  4. //...
  5. }
  6. else
  7. {
  8. print('zwroc blad');
  9. }
  10. ?>

Ale czuje ze zle zrozumialem.
Jawo
Bo widzisz mój plik z kontem wygląda podobnie do tego
  1. <?php
  2. pass="password"
  3. email="mail@gmail.com"
  4. ?>


I tam dałeś mi skrypt który sprawdza czy a==b a tak nie jest ponieważ a w tym wypadku to jest $email nie jest równe b czyli plikowi konta więc potrzebuje skryptu, który będzie otwierał plik z kontem jeżeli oczywiście wpisany został dobry numer czyli będzie otwierał $plik, i szukał w tym pliku linijki email=" jeżeli po tej linijce będzie mail ten który wpisał w formularzu czyli email="$email" to przepuszcza dalej, natomiast jeżeli nie to blokuje informacją Błędny e-mail
amadeo
Wiesz, z PHP trudno odczytać pliki PHP, nie mniej jednak spróbuj z include_once();
http://pl.php.net/include_once i pętli if(). Zrób na podstawie wcześniejszych kodów.
Jawo
Nie chodzi o pliki PHP, mogą to być pliki txt lub xml, ale ja to dałem do przykładu i w znacznikach PHP, może to CIę mogło zmylić, poszukam jeszcze w tym linku co dałeś UP, może się czegoś dowiem, pozdro
amadeo
Chyba zrozumiałem o co chodzi. Załóżmy że dane użyktownika są w user.txt:
Kod
login|haslo|email@email.pl
.
Plik, sprawdz_email.php
  1. <?php
  2. $haslo = $_POST['haslo'];
  3. $email = $_POST['emial'];
  4. $login = $_COOKIE['logon'];
  5. $plik = "users/$login.txt";
  6. $fo = fopen($plik, 'rw+');
  7. $fr = fread($fo, filesize($plik));
  8. $czytaj = explode('|', $fr);
  9. if($haslo != $czytaj[1])
  10. {
  11. print('Złe hasło');
  12. }
  13. else
  14. {
  15. if($email != $czytaj[2])
  16. {
  17. print('Zły E-Mail');
  18. }
  19. else
  20. {
  21. print('Dalszy ciąg');
  22. }
  23. }
  24.  
  25. ?>

Nie wiem, czy zrozumiałem. Ten kod sprawdza hasło i mail.
Jawo
Prawie oto mi chodziło, ale patrz Ja chcę by to sprawdzałlo ten e-mail w ten sposób

pass="password"
email="mail@gmail.com"


Czyli żeby 'sprawdź_email.php' sprawdzał czy w środku pliku $login poprawne jest $_POST['email']; == $email
email="$email"

CHodzi mi oto że hasło jest
pass="password"
i chcę żeby czasami parser nie sprawdział pass="$email"

tylko
email="$email"

Podsumowując sprawdza czy pomiędzy email" a "
jest $email.


Z góry dzięki, pozdrawiam.
rav1989
Witam

Z tego co wyczytałem twój plik ma strukturę

nazwa pliku = login (czyli. login.txt np. admin.txt gdzie admin jest loginem).
a zawartość pliku wygląda tak:
pass=hasło
email=jakis@email.pl

Żeby wczytać dane do tablicy dane (smile.gif akurat taka nazwa) możemy użyć kodu:
  1. <?php
  2. $user='admin';
  3.  
  4. /* Dane w pliku admin.txt
  5. pass=root
  6. email=admin@admin.pl
  7. */
  8.  
  9. /*
  10. 1. Otwieramy plik i wczytujemy dane użytkownika.
  11. 2. Poszukujemy pozycji email= i pass= oraz wpisujemy ich zawartość do zmiennych tymczasowych
  12. 3. znak komentarza # zostanie pominięty.
  13. */
  14.  
  15. /* 1 */ $fp=fopen($user.'.txt','rt');              
  16. while(($line=fgets($fp,128))!= NULL) {
  17.       /* 3 */ if ($line[0]=='#')
  18.            continue;
  19.       /* 2 */ if (strncmp($line,"pass=",5)==0) {
  20.            $pass_tmp=explode('=',$line);
  21.        }
  22.       /* 2 */ if (strncmp($line,"email=",6)==0) {
  23.            $email_tmp=explode('=',$line);
  24.        }
  25.    }
  26.  
  27.    fclose($fp);
  28.  
  29. /*
  30. Przypisujemy wszystkie zmienne tymczasowe do tablic
  31. żeby łatwiej było korzystać :)
  32. */
  33.  
  34. $dane['login']=$user;    
  35. $dane['pass'] =$pass_tmp[1];
  36. $dane['email']=$email_tmp[1];
  37.  
  38. print_r($dane); // Możemy sprawdzić czy działa :)
  39.  
  40. $email = $_POST['emial'];
  41. if($email != $dane['email'])
  42. {
  43. print('Zły E-Mail');
  44. }else{
  45. print('Dalszy ciąg');
  46. /*
  47. Dalsza część kodu
  48. ...
  49. */
  50. }
  51.  
  52.  
  53. ?>


P.S.
1. Radziłbym zakodować hasło jakimś algorytmem np. md5 lub sha1 smile.gif
i/lub zablokować dostęp do plików txt z poziomu przeglądarki.
2. Pozbądź się tych cudzysłowów czyli jak masz email="adres@email.pl" to zapisz to tak email=adres@email.pl

Pozdrawiam
Jawo
Dzięki Ci wielkie rav1989, oraz Tobie amadeo, byliście mi bardzo pomocni, jeszcze raz bardzo dziękuje i pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.