Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> ilość znaków w mailu - formularz
konrad1cs
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2013

Ostrzeżenie: (0%)
-----


Witam.
Na stronce mam formularz kontaktowy z możliwością załączników. O php wiem mało, a mam problem z ilością znaków po "@" a dokładniej ilość znaków po @, a przed .pl/.com/.eu nie może być krótsza niż 3 znaki: np jan@op.pl już nie może być.
Czy będzie ktoś wstanie mi pomóc to ustawić?
Mogę podesłać kod.
Będę wdzięczny za pomoc.
Pozdrawiam
Go to the top of the page
+Quote Post
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


  1. $mail = "mail@testowy.com";
  2. $podziel = explode("@", $mail);
  3. if(strlen($podziel[1])>3){
  4. //ok
  5. }

Możesz rozbić jeszcze wg. kropek w podziel[1] i w pierwszym elemencie tablicy zliczyc ilosc znakow

Ten post edytował Turson 11.12.2013, 18:31:51
Go to the top of the page
+Quote Post
konrad1cs
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2013

Ostrzeżenie: (0%)
-----


Niestety jestem laikiem i nie potrafię tego zastosować.
Czy mogę podesłać tutaj kodzić?
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


  1. $mail = "mail@testowy.com"; //przykładowy adres e-mail
  2. $podziel = explode("@", $mail); // rozdzielamy $mail wg. @, czyli otrzymujemy tablicę: [0] = mail, [1] = testowy.com
  3. if(strlen($podziel[1])>3){ // sprawdzamy czy $podziel[1] czyli testowy.com ma więcej niż 3 znaki
  4. //tak, ma więcej niż 3 znaki
  5. }


Ten post edytował Turson 11.12.2013, 19:28:05
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


  1. $mail = "maiil.test@t.pl";
  2.  
  3. $split = preg_split('/[@.]/', $mail);
  4. var_dump(strlen($split[sizeof($split)-2]));
Go to the top of the page
+Quote Post
konrad1cs
post
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2013

Ostrzeżenie: (0%)
-----


Zastosowałem obie opcje i żadna z nich nie działa niestety
Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Jak nie działa. Przecież to co Ci wysłałem podaje Ci długość tego co jest przed np. ".pl" a np @ np. xxx@zz.pl lub xxx@xxx.zz.pl
Dla obu tych adresów zwróci długość ciągu 'zz'
Go to the top of the page
+Quote Post
konrad1cs
post
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2013

Ostrzeżenie: (0%)
-----


Podstawiłem
  1. $split = preg_split('/[@.]/', $mail);
  2. var_dump(strlen($split[sizeof($split)-2]));


zaraz pod funkcją : $mail = "maiil.test@t.pl"; i nie działa niestety... Być może później w kodzie jest coś, co zaprzecza temu

Kurcze głowie się i głowie z tym...
Pomoże ktoś na gotowym przykładzie? Bardzo proszę
Tak wygląda kod:
  1. <form enctype="multipart/form-data" method="post" action="" id="contactForm">
  2. <div>
  3. <label for="name">Imię i nazwisko</label>
  4. <input type="text" name="name" placeholder="Jan Kowalski" id="name" />
  5. <label for="email">Email</label>
  6. <input type="text" name="email" placeholder="jankowalski@gmail.com" id="email" />
  7. <label for="subject">Temat</label>
  8. <input type="text" name="subject" placeholder="Przykładowy temat" id="subject" />
  9. <textarea name="message" id="message" placeholder="Wiadomość"></textarea>
  10.  
  11. <div class="wrap">
  12. <input name="plik" type="file" class="name" /><input class="fake-input" value="Wybierz plik"/>
  13. </div>
  14.  
  15. <input type="hidden" name="MAX_FILE_SIZE" value="5000000" />
  16. <input type="submit" name="send" value="Wyślij"/>
  17. </div>
  18. </form>
  19. <?if( isset($_POST['send']) && (!validateName($_POST['name']) || !validateEmail($_POST['email']) || !validateMessage($_POST['message']) ) ):?>
  20. <p>Proszę poprawić zaznaczone pola i spróbować ponownie</p>
  21. <?elseif(isset($_POST['send'])):?>
  22. <?php
  23. $email = $_POST['email'];
  24. $naglowki = "Reply-to: =?UTF-8?B?".base64_encode($_POST['name'])."?= <$email>".PHP_EOL;
  25. $naglowki .= "From: =?UTF-8?B?".base64_encode($_POST['name'])."?= <$email>".PHP_EOL;
  26. $naglowki .= "MIME-Version: 1.0".PHP_EOL;
  27. $naglowki .= "Content-type: text/html; charset=utf-8".PHP_EOL;
  28. $message = wordwrap($_POST['message'], 70);
  29. $akceptowane='rar|zip|txt|doc|docx|pdf';
  30. $uploaddir = 'pliki/';
  31. $path_parts = pathinfo($_FILES['plik']['name']);
  32. $rozszerzenie = $path_parts['extension'];
  33. $nazwapliku = date('Y-m-d_g_i');
  34. $nazwapliku .= "." . $rozszerzenie;
  35. $akc=explode('|', $akceptowane);
  36. $plik=explode('.', $_FILES['plik']['name']);
  37. $roz=$plik[count($plik)-1];
  38. if(in_array(strtolower($roz), $akc))
  39. {
  40. if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$nazwapliku))
  41. {
  42. chmod($uploaddir.$nazwapliku, 0644);
  43. $message .= "<br /><br />";
  44. $message .= "Załączony plik: <a href='http://www.veramente.eu/pliki/".$nazwapliku."'>".$nazwapliku."</a>";
  45. }
  46. }
  47. mail('biuro@veramente.eu', $_POST['subject'], $_POST['name'].'('.$email.') pisze:<br />'.$message, $naglowki);
  48. ?>
  49. <p>Wiadomość została wysłana, dziękujemy.</p>
  50. <?endif?>


Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ale co nie działa. Pokaż jak to robisz.
Go to the top of the page
+Quote Post
konrad1cs
post
Post #10





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2013

Ostrzeżenie: (0%)
-----


Między linijką 23 a 24 wstawiłem
  1. $split = preg_split('/[@.]/', $mail);
  2. var_dump(strlen($split[sizeof($split)-2]));


tak samo w przypadku pomocy Tursona
Go to the top of the page
+Quote Post
Turson
post
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Bo masz $email a nie $mail. Zacznij myśleć
Go to the top of the page
+Quote Post
konrad1cs
post
Post #12





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2013

Ostrzeżenie: (0%)
-----


Zmieniłem, jak podpowiedziałeś, ale nadal nie działa. Nie mam pojęcia wgl o php, dlatego nie wychodzi...
Go to the top of the page
+Quote Post
Pyton_000
post
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zamiast mówić że nie działa lepiej byś mówił CO nie działa. Ludzie chcą pomagać ale wypada też się trochę wysilić.
Go to the top of the page
+Quote Post
konrad1cs
post
Post #14





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2013

Ostrzeżenie: (0%)
-----


Jak już wspomniałem zależy mi na tym, aby ludzie mający mejla od operatora np: op, o2, mogli wysyłać maile z formularza (mail@o2.pl)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #15





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To w końcu mogą czy nie bo się pogubiłeś.
Poza tym wiesz co Twój skrypt robi?
Ehh...
Zamień:
  1. $email = $_POST['email'];

na
  1. $email = $_POST['email'];
  2. $split = preg_split('/[@.]/', $email);
  3. if(strlen($split[sizeof($split)-2]) <3)
  4. die('Spadaj');


Ten post edytował Pyton_000 14.12.2013, 14:03:47
Go to the top of the page
+Quote Post
konrad1cs
post
Post #16





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 22.01.2013

Ostrzeżenie: (0%)
-----


Pyton_000 dziękują za bezpośrednią podpowiedź, ale w formularzu nadal wysyłanie maili z adresów o jakich wspomniałem nie jest możliwe.
Nie wiem czy to jest istotne, ale gdybym wpisał: proba@op.op.pl to wtedy formularz działa
Go to the top of the page
+Quote Post
ctom
post
Post #17





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

Ostrzeżenie: (0%)
-----


to może zastosuj sobie takie rozwiązanie - bo trochę kręcisz :-)

  1. $filtr = array('op.pl', 'o2.pl' ,'dupa.com');
  2.  
  3. $domenaZmaila = explode('@', $email);
  4.  
  5. if(in_array($domenaZmaila[1] , $filtr)) {
  6.  
  7. // domena jest w filtrze
  8.  
  9. } else {
  10. // domeny NIE MA w filtrze
  11. }


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
Pyton_000
post
Post #18





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To zdecyduj się co chcesz aby ten skrypt robił bo raz piszesz że ma nie przepuszczać adresów teraz mówisz że nie działa. Decyduj się.

[edited]
*ctom to co podałeś nie zadziała gdy adres będzie np. @cos.op.pl


Ten post edytował Pyton_000 14.12.2013, 15:13:36
Go to the top of the page
+Quote Post
Turson
post
Post #19





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Wydaje mi się, że autor zbyt dokładnie chce sprawdzać e-mail i uważam, że niepotrzebnie.
http://www.w3.org/TR/html-markup/input.email.html + preg_match + zliczanie znaków po @ powinno wystarczyć

Ten post edytował Turson 14.12.2013, 15:19:04
Go to the top of the page
+Quote Post
ctom
post
Post #20





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 14.12.2013, 15:12:21 ) *
[edited]
*ctom to co podałeś nie zadziała gdy adres będzie np. @cos.op.pl



no tak , bo po to dałem tablice z filtrami domen ... sądziłem, że chce właśnie mieć kontrole nad tym na jakie domeny wysyła (będzie zakazuje) - tylko to robi w dość dziwny sposób.
Ale może nich się autor wypowie (albo narysuje, będzie łatwiej wink.gif )

Ten post edytował ctom 14.12.2013, 15:32:24


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:36