Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja eregi
Forum PHP.pl > Forum > PHP
senior.pol
Witam
Nie jestem znawcą w języku PHP, dlatego zwracam się z prośbą o pomoc. Chodzi o to ,że wyświetla mi się komunikat przy wysyłaniu formularza
Deprecated: Function eregi() is deprecated in /home/... itd
W kodzie PHP mam tak
  1. <?php
  2.  
  3. if(!$_POST) exit;
  4.  
  5. $email = $_POST['email'];
  6.  
  7.  
  8. //$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'Neprawidłowy adres email !';
  9. if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
  10. $error.="Błędnie wpisany adres email !";
  11. $errors=1;
  12. }
  13. if($errors==1) echo $error;
  14. else{
  15. $valuesPL=array('name'=>'Imię i nazwisko','email'=>'Adres email','message'=>'Wiadomość','company'=>'Miasto','subject'=>'Temat');
  16. $values = array ('name','email','company','subject','message');
  17. $required = array('name','email','company','subject','message');
  18.  
  19. $your_email = "mój email";
  20. $email_subject = "".$_POST['subject'];
  21. $email_content = "\n";
  22.  
  23. foreach($values as $key => $value){
  24. if(in_array($value,$required)){
  25. if ($key != 'subject' && $key != 'company') {
  26. if( empty($_POST[$value]) ) { echo 'Proszę wypełnić pola wymagane !'; exit; }
  27. }
  28. $email_content .= $valuesPL[$value].': '.$_POST[$value]."\n";
  29. }
  30. }
  31.  
  32. if(@mail($your_email,$email_subject,$email_content,"Content-type: text/plain; charset=utf-8\r\n")) {
  33. echo 'Wiadomość została pomyślnie wysłana !';
  34. } else {
  35. echo 'ERROR!';
  36. }
  37. echo '<form action="'.$_SERVER['HTTP_REFERER'].'" method="post">';
  38. echo "<input type=\"button\" value=\"wróć do formularza\" onClick=\"window.back()\">";
  39. }
  40. ?>

W pliku .htm
  1. <form action="odsylacz.php" method="post" id="contactform">
  2. <ol>
  3. <li>
  4. <label for="name">Imię i nazwisko</label>
  5. <input id="name" name="name" class="text" />
  6. </li>
  7. <li>
  8. <label for="email">Twój email</label>
  9. <input id="email" name="email" class="text" />
  10. </li>
  11. <li>
  12. <label for="company">Miasto</label>
  13. <input id="company" name="company" class="text" />
  14. </li>
  15. <li>
  16. <label for="subject">Temat</label>
  17. <input id="subject" name="subject" class="text" />
  18. </li>
  19. <li>
  20. <label for="message">Wiadomość</label>
  21. <textarea id="message" name="message" rows="6" cols="50"></textarea>
  22. </li>
  23. <li class="buttons">
  24. <input type="image" name="imageField" id="imageField" src="images/send.gif" class="send" />
  25. <div class="clr"></div>
  26. </li>
  27. </ol>
  28. </form>

Wiem ,że funkcja eregi jest już przestarzała i lepiej ją zamienić na preg match ,ale nie wiem jak to zrobić sad.gif
darko
Dokładnie zamienić wszystkie wystąpienia eregi na preg_match. Kolejność argumentów jest taka sama, więc nie będzie kłopotu.
senior.pol
OK zaraz spróbuję

Zamieniłem
  1. if(!eregi("

Na

I wyświetla mi się kolejny błąd
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /home
darko
Nie zauważyłem wcześniej, że niepotrzebnie sprawdzasz adres e-mail wyrażeniem regularnym, sprawdź tak:
Zamień to:
  1. if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
  2. $error.="Błędnie wpisany adres email !";
  3. $errors=1;
  4. }

Na
  1. if(!filter_var($email, FILTER_VALIDATE_EMAIL))
  2. $error.="Błędnie wpisany adres email !";
  3. $errors=1;
  4. }

//edit
a błąd wynikał z tego, że pattern musi zaczynać się i kończyć tym samym znakiem niespecjalnym.
senior.pol
Zamieniłem i teraz wyskakuje taki błąd
Parse error: syntax error, unexpected '}' in /home...
darko
Zabrakło otwierającego nawiasu klamrowego
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
senior.pol
Super działa
Dzięki smile.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.