Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP zapis emaila
Forum PHP.pl > Forum > PHP
jakub333
więc tak mam takie coś
  1. <?php
  2. print '<table border="1" width="100%" align="center">';
  3. print '<tr>';
  4. print '<td bgcolor="teal">';
  5. print '<p align="center">PODAJ SWOJ E-MAIL</p>';
  6. print '</td>';
  7. print '<td bgcolor="gold" align="center">';
  8. function walidacja_email($email)
  9.  
  10. {
  11. if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
  12. {
  13. echo '<font color="red"> wprowadzony adres email jest niepoprawny</font>';
  14. }
  15. else echo '<font color="green">wprowadziłeś poprawny adres email</font>';
  16. }
  17.  
  18.  
  19. $email = $_POST ["email"];
  20. echo <<<KOD
  21.  
  22. <form name="formularz" action="index.php" method="post">
  23.   <input type"text" name="email" value="$email" />
  24.   <input type="submit" value="Zapisz" />
  25. </form>
  26. KOD;
  27. if ($email) walidacja_email($email);
  28.  
  29. {
  30. $plik = fopen ("email.txt","a");
  31. fputs ($plik, "$email ").'';
  32. fclose ($plik);
  33. }
  34. print '</td>';
  35. print '</tr>';
  36. print '</table>';
  37. print '</form>';
  38. ?>

i tu moja pośba skrypt ma zapisywać tylko kiedy email jest poprawny a zapisuje nawet jak nie jest co mam z tym zrobić ? z góry dziękuje
Ziem
Cytat(jakub333 @ 22.09.2011, 19:40:47 ) *
  1. if ($email) walidacja_email($email);

Zwracaj z funkcji walidacja_email true (w przypadku poprawnego maila) i false (w przeciwnym wypadku) i wtedy robisz tak:
  1. if(walidacja_email($email))
  2. ...
jakub333
nie wiem czy robię coś źle bo dalej nie działa tak jak powinno
Ziem
  1. <?php
  2. print '<table border="1" width="100%" align="center">';
  3. print '<tr>';
  4. print '<td bgcolor="teal">';
  5. print '<p align="center">PODAJ SWOJ E-MAIL</p>';
  6. print '</td>';
  7. print '<td bgcolor="gold" align="center">';
  8. function walidacja_email($email)
  9. {
  10. if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
  11. {
  12. return false;
  13.  
  14. }
  15. else return true;
  16. }
  17.  
  18.  
  19. $email = $_POST ["email"];
  20. echo <<<KOD
  21.  
  22. <form name="formularz" action="index.php" method="post">
  23.   <input type"text" name="email" value="$email" />
  24.   <input type="submit" value="Zapisz" />
  25. </form>
  26. KOD;
  27. if (walidacja_email($email))
  28. {
  29. echo '<font color="green">wprowadziłeś poprawny adres email</font>';
  30. $plik = fopen ("email.txt","a");
  31. fputs ($plik, "$email ").'';
  32. fclose ($plik);
  33. }
  34. else
  35. {
  36. echo '<font color="red"> wprowadzony adres email jest niepoprawny</font>';
  37. }
  38. print '</td>';
  39. print '</tr>';
  40. print '</table>';
  41. print '</form>';
  42. ?>

Powinno działać.
jakub333
niestety nie "Parse error: syntax error, unexpected $end in D:\httpd\index.php on line 44"
Ziem
  1. <?php
  2. print '<table border="1" width="100%" align="center">';
  3. print '<tr>';
  4. print '<td bgcolor="teal">';
  5. print '<p align="center">PODAJ SWOJ E-MAIL</p>';
  6. print '</td>';
  7. print '<td bgcolor="gold" align="center">';
  8. function walidacja_email($email)
  9. {
  10. if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
  11. {
  12. return false;
  13.  
  14. }
  15. else return true;
  16. }
  17.  
  18.  
  19. $email = $_POST ["email"];
  20. echo '<form name="formularz" action="test2.php" method="post">
  21. <input type"text" name="email" value="$email" />
  22. <input type="submit" value="Zapisz" />
  23. </form>';
  24. if (walidacja_email($email))
  25. {
  26. echo '<font color="green">wprowadziłeś poprawny adres email</font>';
  27. $plik = fopen ("email.txt","a");
  28. fputs ($plik, "$email ").'';
  29. fclose ($plik);
  30. }
  31. else
  32. {
  33. echo '<font color="red"> wprowadzony adres email jest niepoprawny</font>';
  34. }
  35. print '</td>';
  36. print '</tr>';
  37. print '</table>';
  38. print '</form>';
  39. ?>
klocu
No to dziwne bo u mnie działa.

Ale do rzeczy, zawsze jak widzę taki sajgon to strasznie się złoszczę.
Uporządkuj to, mimo że to kod strukturalny. Wszystkie funkcje w jedno miejsce, reszta w drugie.

Co do kodu:
Sprawdzaj czy otrzymujesz jakiekolwiek dane od użytkownika - bo przepisujesz na ślepo dane z POST'a do zmiennej, potem te dane walidujesz. Ale po co jak nic w takiej zmiennej może nie być.
Po drugie czytamy dokumentację - eregi jest funkcją zdeprecjonowaną - używamy do tego preg_match. (zakładając, że mówimy o testach na najnowszej wersji parsera)

I w HTMLu znaczniki zamykamy od najpóźniej występującego, a nie jak nam się podoba. wink.gif
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.