Wsparcie » Zaawansowane » Co blokuje własną metodą post w formularzach WordPress?

  • Rozwiązany xfz21zx

    (@xfz21zx)


    Jak w temacie, dlaczego i co blokuje, że nie mogę wysłać prostego własnego formularza z funkcją mail()? Gdy daje wyślij wyskakuje mi komunikat:

    Przepraszamy, ale strona, której szukasz, nie mogła zostać znaleziona. Być może uda Ci się ją wyszukać?

    W momencie kiedy chce coś wyświetlić lub wysłać z formularza wyskakuje ten powyzszy komuniakt.

    W google o dziwo nic na ten temat nie znalazlem…

Viewing 8 replies - 1 through 8 (of 8 total)
  • OK, widzę, że dziś jest dzień wróżenia z fusów…

    Co to znaczy „wysłać formularza z funkcją mail()”?
    Jak zbudowany jest formularz?
    W jaki sposób go obsługujesz?
    Gdzie próbujesz obsłużyć dane przesłane z formularza?
    Na jaki adres wysyłasz formularz?

    Stworzylem plik specjalny dla kontaktu:

    <?php
    /*
    Template Name: Kontakt
    */
    ?>
    
    <?php get_header(); ?>
    
    		<div id="container">
    			<div id="content" role="main">
    <form id="formail" action="#" method="post">
    <div><label for="name">Nazwa: </label><input id="name" type="text" name="name" /></div>
    <div><label for="mail">Twój e-mail: </label><input id="mail" type="text" name="mail" /></div>
    <div><label for="subject">Temat: </label><input id="subject" type="text" name="subject" /></div>
    <div><label for="tresc">Treść: </label><textarea id="tresc" name="tresc" rows="10" cols="70"></textarea></div>
    <div><input id="sendmail" type="submit" name="sendmail" value="Wyślij e-mail" /></div>
    </form>
    
    			</div><!-- #content -->
    		</div><!-- #container -->
    
    <?php
    
      //skrocona wersja dla przykladu:
      if(!empty($_POST['sendmail']))
      {
        $sub=$_POST['subject'];
        $tresc=$_POST['tresc'];
        mail("moj@mail.pl",$sub,$tresc);
        //ta funkcje znalazlem w dokumentacji ale tez nie dziala:
        //wp_mail("moj@mail.pl",$sub,$tresc);
      }  
    
    ?>
    
    <?php get_footer(); ?>

    Wszystko sie wyswietla ale nie wysyla, wyskakuje opis jaki napisalem w temacie…
    Sory ze nie podalem kodu od razu ale myslalem, ze WP tak ma ze blokuje zmienne post.

    I jak czy to jest normalne? Spotkał sie ktoś z czymś takim?

    Jedno, to sprawdź czy na serwerze nie jest zablokowana funkcja mail.
    Drugie, to mail może być wysyłany ale trafia do spamu np. za sprawą SPF.

    Alternatywą może być wysyłka przez smtp, np. korzystając z swiftmailer, phpmailer etc..

    Na serwerze działa funkcja mail na 100%, generalnie tn skrypt się wykonuje w odzielnym pliku poza wordpressem, wszystko jest ok.

    Mail wysyla sie jesli wysylam bez instrukcji if() i bez zmiennych $_POST.
    To wyglada ewidentnie tak jakby to skrypt WordPress blokowal zmienne $_POST[], nie moge nawet wyswietlic nic uzywajac tych zmiennych…

    Po pierwsze, to bezpieczniej by było, gdyby pole action formularza nie zawierało hasha. Jeśli już bardzo chcesz, to zostaw je puste po prostu.

    To zminimalizuje szansę wysyłania formularza w kosmos…

    Sprawdzałeś WP_DEBUG?

    Dodaj tuż przed tym if (!empty... następujący kod, to przynajmniej przestaniemy gadać o „blokowaniu POSTa”, cokolwiek to znaczy…

    print_r($_POST);
    print_r($_REQUEST);

    i zobacz, czy po wysłaniu formularza jego zawartość się wyświetla.

    A jak byś jeszcze dał namiar na stronę, na której masz ten problem, to dałoby się nawet sprawdzić, co tam tak naprawdę się dzieje…

    Juz wiem co bylo problemem, jedno z pól input mialo wartość atrybutu name „name” – widocznie taka nazwa pola jest uzywane przez wordpress…
    Problem rozwiązany.

    Tak, jest takie prawdopodobieństwo. Generalnie na nazwy postów warto w WP uważać i nie robić ich zbyt ogólnych, bo jest spora szansa, że coś (WP, skórka, wtyczka) Ci je zacznie przejmować.

Viewing 8 replies - 1 through 8 (of 8 total)
  • The topic ‘Co blokuje własną metodą post w formularzach WordPress?’ is closed to new replies.