Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Forumularz
Forum PHP.pl > Forum > Przedszkole
^(-.-)^
Czesc smile.gif to znowu ja. Tym razem mam problem odnosnie Formularz w PHP. Zrobilem sobie taki forumlarz.

  1. <?php
  2.  
  3.   if ((empty($_POST['tresc']) or empty($_POST['imie']) or empty($_POST['temat']) or empty($_POST['email'])) and !empty($_POST['submit'])) {
  4.       // wyświetlamy formularz
  5.       echo ('<table border="0"><form method="post">
  6.   <div id="formularz">
  7.   Tema:
  8.  
  9.   <input type="text" name="temat" style="widt: 150px">
  10.  
  11.   Imię i Nazwisko lub nic:
  12.  
  13.   <input type="text" name="imie" style="widt: 180px">
  14.  
  15.   Email:
  16.  
  17.   <input type="text" name="email" style="widt: 180px">
  18.  
  19.   Treś&#263:
  20.  
  21.   <textarea name="tresc" cols="30" rows="5"></textarea>
  22.  
  23.   <input type="submit" name="submit" value="Wyślij">
  24.   <input type="reset" value="Resetuj"></div></form>
  25.   ');
  26.       // lub w przypadku nie wypełnienia formularza do końca
  27.       echo ('<img id ="exclamation" src="img/exclamation.png" alt="Wykrzyknik"> <div id="error_message">Wypełnij wszystkie pola formularza!!</div>');
  28.       echo ('
  29.   </table>');
  30.   }
  31.   elseif (empty($_POST['tresc']) or empty($_POST['imie']) or empty($_POST['temat']) or empty($_POST['email']) and empty($_POST['submit'])) {
  32.       // wyświetlamy formularz
  33.       echo ('<table border="0"><form method="post">
  34.   <div id="formularz">
  35.   Tema:
  36.  
  37.   <input type="text" name="temat" style="widt: 150px">
  38.  
  39.   Imię i Nazwisko lub nic:
  40.  
  41.   <input type="text" name="imie" style="widt: 180px">
  42.  
  43.   Email:
  44.  
  45.   <input type="text" name="email" style="widt: 180px">
  46.  
  47.   Treś&#263:
  48.  
  49.   <textarea name="tresc" cols="30" rows="5"></textarea>
  50.  
  51.   <input type="submit" name="submit" value="Wyślij">
  52.   <input type="reset" value="Resetuj"></table></div></form>');
  53.   }
  54.  
  55.   // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  56.   elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['temat']) && !empty($_POST['email'])) {
  57.       // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  58.       // zmienna $message zawiera treść wiadomości
  59.           $temat = "Tema:\n$_POST[temat]";
  60.       $message = "Treść wiadomośc:\n$_POST[tresc]\nWysła&#322: $_POST[imie]\ne-mail: $_POST[email]";
  61.       // zmienna $header zawiera przede wszystkim adres zwrotny
  62.       $header = "Fro: $_POST[imie] <$_POST[email]>";
  63.       // funkcja mail() za pomocą której wiadomość zostanie wysłana
  64.       @mail("admin@ejsi.site40.net","Wiadomosc ze strony WWW","$temat", "$message","$header")
  65.       or die('<img id ="smutny" src="img/smutny.png" alt="Emoticon smutny">
  66.   <p id="error_message">Przepraszam,
  67.   Nie udało się wysłać wiadomości.
  68.   Proszę sprobować ponownie!</p>
  69.  
  70.  
  71.           <p><a style="color:blue;" href="/mail.php">Powrót do kontaktu</a></p>
  72.   ');
  73.       // wyświetlenie komunikatu w przypadku powodzenia
  74.       echo ('<img id ="happy" src="img/smiley.png" alt="Emoticon Zadowolony">
  75.   <p id="error_message">Wiadomość została wysłana poprawnie!</p>
  76.  
  77.           <p><a href="index.php" style="color:blue;" />Powrót do strony głównej</a></p>');
  78.   }
  79.  
  80.   ?>


Wszystko dziala normalnie lecz brakuje tu bezpieczenstwa.
Chcialbym lecz nie wiem gdzie umieszczac tutaj w tym kodzie:
-Sprawdzenie email (skrypt sprawdza czy email jest poprawny)
-Dac limit znakow: przyklad
Temat: nie dluzej niz 55 znakow
Imie i nazwisko: nie dluzej niz 55 znakow


czy ktos moze mi pomoc gdzie te warunki dodac do mojego skryptu?? smile.gif ja jestem poczatkujacym i bardzo prosze o poparcie i pomoc. Dziekuje
Mystic007
Cytat(^(-.-)^ @ 6.09.2008, 20:28:03 ) *
-Dac limit znakow: przyklad
Temat: nie dluzej niz 55 znakow
Imie i nazwisko: nie dluzej niz 55 znakow


Wystarczy zwykły HTML: maxlength="55" a jesli uważasz, że to za mało możesz dodać IF'y (pobieranie długości stringu przez strlen() )


A oto funkcja do sprawdzania czy E-Mail jest poprawny:

  1. <?php
  2. function email($sEmail){
  3.  
  4.      if (!preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/', $sEmail))
  5.            return false;
  6.      
  7.      list($sUsername, $sServer) = split('@', $sEmail);
  8.      
  9.      if (!checkdnsrr($sServer,'MX'))
  10.            return false;
  11.      
  12.      return true;
  13. }
  14. ?>
batman
Cytat(Mystic007 @ 6.09.2008, 22:35:06 ) *
Wystarczy zwykły HTML: maxlength="55" (...)

Nie wystarczy. Walidację należy zawsze wykonywać po stronie serwera! Każdy, kto ma odrobinę umiejętności w posługiwaniu się przeglądarką, ominie to zabezpieczenie.
^(-.-)^
Cytat
$sUsername, $sServer $sEmail


a ze tak sie pytam to u mnie nie ma tych wariantow smile.gif u mnie jest tylko $_POST['email'] np.

a mozesz troche wytlumaczyc co to $sServer questionmark.gif bo ja wiesz dopiero sie ucze php i nie wiem czy mi to nawet potrzebny smile.gif
tiraeth
To sobie po wysłaniu formularza utwórz te zmienne, przypisując im odpowiednie wartości z tablicy $_POST.

Zobacz na linię ósmą tego kodu. Potem w 10-tej sprawdza czy to co po @ (czyli nazwa serwera pocztowego) ma rekordy MX, czyli czy teoretycznie może być adresem mailowym. Takie dodatkowe zabezpieczenie.
^(-.-)^
Cytat(tiraeth @ 7.09.2008, 00:48:59 ) *
To sobie po wysłaniu formularza utwórz te zmienne, przypisując im odpowiednie wartości z tablicy $_POST.


czyli jesli chodzi o $sEmail moge zrobic tak? : $email = $_POST['email']; questionmark.gif

i dlaczego jest u niego s po $ questionmark.gif czy to wazne czy tylko literowka?
tiraeth
Możesz zrobić jak chcesz, ważne, żeby potem odpowiednie zmienne w odpowiednich funkcjach wstawić.

Literka s jest dlatego, że widocznie autor korzysta z notacji węgierskiej - info.
^(-.-)^
ok rozumiem. a ta notacja wegierska dziala na php tak jak on wpisal?questionmark.gif a jak mam znalezc serwer i usernam w tym : $sServer i $sUsername questionmark.gif
tiraeth
Czy Ty masz problemy ze skryptem czy z myśleniem? Popatrz na linię ósmą i zastanów się co robi list" title="Zobacz w manualu PHP" target="_manual i split" title="Zobacz w manualu PHP" target="_manual...
decha-design
Cytat(^(-.-)^ @ 7.09.2008, 01:19:24 ) *
ok rozumiem. a ta notacja wegierska dziala na php tak jak on wpisal?questionmark.gif

a jak nazwiesz sobie zmienną $kopytko to tez nie bedzie działac? notacja węgierska jest to tylko względne nazywanie plików ... po prostu aby od razu rozpoznać typ zmiennej s od String, i od Integer itd.

Cytat(^(-.-)^ @ 7.09.2008, 01:19:24 ) *
a jak mam znalezc serwer i usernam w tym : $sServer i $sUsername questionmark.gif


  1. <?php
  2.  
  3.      list($sUsername, $sServer) = split('@', $sEmail);
  4.      
  5.      if (!checkdnsrr($sServer,'MX'))
  6.            return false;
  7.  
  8. ?>


samo ci szuka ... rozbija adres email na częsci ... i sprawda serwer za pomocą checkdnsrr" title="Zobacz w manualu PHP" target="_manual ... proste
^(-.-)^
Cytat(tiraeth @ 7.09.2008, 01:26:58 ) *
Czy Ty masz problemy ze skryptem czy z myśleniem? Popatrz na linię ósmą i zastanów się co robi list" title="Zobacz w manualu PHP" target="_manual i split" title="Zobacz w manualu PHP" target="_manual...


moze nie badz taki chamski co?questionmark.gif mam problem ze skryptem jestem poczatkujacym nie pro tak jak ty wiec kto pyta nie bladzi. Jesli nie chcesz pomoc tylko jezdzic po ludziach to proste sie nie udzielaj. Daj innym sie wpisac i pomoc oO... masakra
decha-design
ale to jest na prawde banalne o.O

wystarczy tylko podstawy znać sleep.gif
Cysiaczek
Chcesz sprawdzić, czy to, co jest podane w formularzu jest poprawnym emailem?
Więc robisz tak: Tam, gdzie sprawdzasz, czy zostały wypełnione pola, dodajesz jeszcze jeden element, któty sprawdza, czy podany adres jej poprawnym adresem e-mail.

  1. <?php
  2. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['temat']) && !empty($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
  3. // reszta skryptu [...]
  4. ?>


Pozdrawiam.
^(-.-)^
Oki dzieki za pomoc. Jak bedzie jakis problem to bede sie odzywal tutaj na forum. Good Night

Cytat(Cysiaczek @ 7.09.2008, 02:06:38 ) *
Chcesz sprawdzić, czy to, co jest podane w formularzu jest poprawnym emailem?
Więc robisz tak: Tam, gdzie sprawdzasz, czy zostały wypełnione pola, dodajesz jeszcze jeden element, któty sprawdza, czy podany adres jej poprawnym adresem e-mail.

  1. <?php
  2. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['temat']) && !empty($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
  3. // reszta skryptu [...]
  4. ?>


Pozdrawiam.


Czesc smile.gif to co mi dales dziala dziekuje ale chcialbym jeszcze zeby bylo komunikat jesli email nie jest poprawny typu: " Twoj email nie jest poprawny " jak mam to dodac tez w kodzie?? dam tutaj kod:

  1. <?php
  2. <php
  3. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['temat']) && !empty($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
  4.    // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  5.    // zmienna $message zawiera treść wiadomości
  6.    $message = "Tema: $_POST[temat]\nTreść wiadomośc:\n$_POST[tresc]\nWysła: $_POST[imie]\ne-mail: $_POST[email]";
  7.    // zmienna $header zawiera przede wszystkim adres zwrotny
  8.    $header = "Fro: $_POST[imie] <$_POST[email]>";
  9.    // funkcja mail() za pomocą której wiadomość zostanie wysłana
  10.    @mail("admin@ejsi.site40.net","Wiadomosc ze strony WWW","$message","$header")
  11.    or die('<img id ="smutny" src="img/smutny.png" alt="Emoticon smutny"><br><p id="error_message">Przepraszam,<br>Nie udało się wysłać wiadomości.<br>Proszę sprobować ponownie!</p><br><br>
  12.        <p><a style="color:blue;" href="/mail.php">Powrót do kontaktu</a></p><br>');
  13.    // wyświetlenie komunikatu w przypadku powodzenia
  14.    echo ('<img id ="happy" src="img/smiley.png" alt="Emoticon Zadowolony"><br><p id="error_message">Wiadomość została wysłana poprawnie!</p><br>
  15.        <p><a href="index.php" style="color:blue;" />Powrót do strony głównej</a></p>');
  16. }
  17. ?>


Pewnie dodac tutaj echa ale nie wiem gdzie dokladnie tongue.gif Pomoc please

Dziekuje z gory za pomoc
Zbooj
Kod
function email($sEmail){



     if (!preg_match('/^[a-zA-Z0-9\._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,}$/', $sEmail))

           return false;

          list($sUsername, $sServer) = split('@', $sEmail);
          if (!checkdnsrr($sServer,'MX'))
           return false;
          return true;
}
?>


Czy ta funkcja nie wywali błędu w przypadku adresu mail tego typu: nazwa_uzytkownika@poczta.onet.pl ?
Chodzi mi o ilość kropek w domenie, ewemtualnie domen niższego rzędu.
^(-.-)^
To jak pomoze ktos??
tiraeth
^(-.-)^, chcesz pomocy czy gotowca? Bo jak pomocy, to niestety, ale wszystkie koła ratunkowe wyczerpane. Dostałeś wszystkie informacje i główne kody źródłowe, żeby stworzyć to, co chcesz osiągnąć.

Ale masz, dzień dobroci:
  1. <?php
  2.  
  3. // Ustaw zmienna informujaca o bledzie i domyslnie daj jej wartosc logiczna FALSE
  4. $bError = false;
  5.  
  6. // Jesli formularz zostal wyslany
  7. if ( !empty($_POST) ) {
  8.  
  9. // Jesli sprawdzenie poprawnosci sie nie powiedzie, wstawiamy wartosc logiczna TRUE w zmienna informujaca o bledzie
  10. if ( !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL ) {
  11.  $bError = true;
  12. }
  13.  
  14. // Jesli zmienna ma wartosc TRUE, wyswietl informacje o bledzie...
  15. if ( $bError ) {
  16.   echo '<p><b>Podany mail jest nieprawidlowy</b></p>';
  17. } else {
  18.  // ... w innym wypadku wyslij swoja wiadomosc..., oczywiscie wczesniej sprawdzajac czy wszystkie pola sa wypelnione
  19. }
  20.  
  21. }
  22.  
  23. // Jesli nie zostal wyslany formularz, badz pojawil sie blad
  24. if ( empty($_POST) || $bError ) {
  25.  // Wyswietl formularz
  26. }
  27. ?>


Na więcej nie licz...
^(-.-)^
Dziekuje ci za pomoc ale niestety nie tego co chcialem smile.gif z gotowca nie potrzebuje tylko sie pytalem gdzie w moim kodzie dodac echa .. a ty mi dales nowy kod... swojego nie chce zmienic tylko dodac. A tego wlasnie nie wiem. Dlatego sie pytalem.
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.