Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Banalny problem - formularz kontaktowy
tacin
post
Post #1





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

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


Witam,
w sumie to juz mam caly kodzik z e-mailem z zalacznikiem, ale drazni mnie to, ze jak sie nacisnie "Wyslij" to otwiera sie nowe okno wraz z alertem. Chcialbym aby alert wyswietlil sie na tej stronie co mam formularz, czyli zeby nie wyswietlal nowej strony.

wyslij.php
Kod
     <?php
  
      //sprawdzenie czy załącznik pochodzi z formularza
  
      if ($_POST["wyslij"]==1)
  
         $nazwisko = $_POST["nazwisko"];
  
      
  
      $imie = $_POST["imie"];
  
      
  
      $email = $_POST["email"];
  
      
  
      $tresc= $_POST["tresc"];
  
      {  
  
      srand((double)microtime()*1000000);
  
      $znacznik = md5(uniqid(rand()));
  
      
  
      // dane o odbiorcy, nadawcy
  
      $odbiorca="xxx@gmail.com";
  
      $tytul="CFG-xxx";
  
      $nadawca = "Nadawca";
  
      $nadawca_mail="xxx@xxx.pl";
  
      
  
      // treść listu
  
      $tresclistu = "
  
      Nazwa CFG: $imie

      Nick: $nazwisko
  
      email: $email
  
      Krótki opis CFG: $tresc
  
      
  
      ";
  
      
  
      
  
      // definicja nagłówków
  
       $naglowki  = "From: $nadawca <$nadawca_mail>\n";
  
       $naglowki .= "MIME-Version: 1.0\n";
  
       $naglowki .= "Content-Type: multipart/mixed;\n";
  
       $naglowki .= "\tboundary=\"___$znacznik==\"";
  
      
  
      // nagłówki listu
  
       $tresc="--___$znacznik==\n";
  
       $tresc .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
  
       $tresc .="Content-Transfer-Encoding: 8bit\n";
  
       $tresc .="\n$tresclistu\n";
  
      
  
      // nagłówki i obsługa załącznika
  
       $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  
       $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  
       $plik_wielkosc = $_FILES["plik1"]["size"];
  
      
  
      if (is_uploaded_file($plik_nazwa_tmp))
  
       {
  
         $tresc .="--___$znacznik==\n";
  
         $tresc .="Content-Type: image/gif\n";
  
         $tresc .="Content-Disposition: attachment;\n";
  
         $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  
         $tresc .="Content-Transfer-Encoding: base64\n\n";
  
         $f = fopen($plik_nazwa_tmp,"rb");
  
         $dane = fread($f,filesize($plik_nazwa_tmp));

         fclose($f);

         $tresc .= chunk_split(base64_encode($dane));

         $tresc .="--___$znacznik==--\n";
  
       }
  
      
  
      // wysłanie listu
  
          if (mail($odbiorca,$tytul,$tresc,$naglowki))
  
        {
  
        print "<script type=\"text/javascript\">window.alert('E-mail z załącznikiem został wysłany poprawnie.');</script>";
  
        }
  
        else
  
        {
  
        print "<script type=\"text/javascript\">window.alert('E-mail NIE został wysłany poprawnie. Spróbuj ponownie.');</script>";
    }
  
      }

      ?>

I na stronie:
Kod
Aby dodać swoje CFG do listy, skorzystaj z poniższego formularza.<br>Po wysłaniu configu do nas, zostanie on umieszczony w naszym spisie.<br><br>

<FORM NAME="zalacznik" METHOD="post" ACTION="wyslij.php" ENCTYPE="multipart/form-data">
      
<table border="0">
  <tr>
    <td>Nazwa CFG:</td>
    <td><input type="text" id="imie" name="imie" CLASS="textbox"></td>
  </tr>
  <tr>
    <td>Nick:</td>
    <td><input type="text" name="nazwisko" id="nazwisko" CLASS="textbox"></td>
  </tr>
  
    <tr>
    <td>Email:</td>
    <td><input type="text" name="email" id="email" CLASS="textbox"></td>
  </tr>
  
    <tr>
    <td>Krótki Opis CFG:</td>
    <td><textarea name="tresc" id="tresc" rows="3" cols="20" CLASS="textbox"></textarea></td>
  </tr>

    <tr>
    <td>Config:</td>
    <td><INPUT type="file" name="plik1" CLASS="textbox"></td>
  </tr>
  
</table>

      <input type="hidden" name="wyslij" value="1" />
  
      <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
      <br>
      <input type="submit" value="Wyślij" CLASS="button">
  
      </FORM>


ktos wie jak rozwiazac moj problem?
Go to the top of the page
+Quote Post
aso824
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 2.08.2009

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


Czyżbyś używał gotowca?
Na szybko - możesz dać zamiast:
Kod
  print "<script type=\"text/javascript\">window.alert('E-mail z załącznikiem został wysłany poprawnie.');</script>";

Dać to:
Kod
print "E-mail z załącznikiem został wysłany poprawnie.";

Musisz podmienić wszędzie, nie tylko tam gdzie pokazałem.
Chyba że nie o to ci chodziło...?
Go to the top of the page
+Quote Post
tacin
post
Post #3





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

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


tez wyswietla sie w nowym oknie...


chodzi mi oto zeby nie otwierala sie nowa strona z alertem, tylko wyskakiwal alert (lub jakies okienko - obojetnie) na tej stronie co jest wyswietlany formularz. jasniej nie moge tego opisac.
Go to the top of the page
+Quote Post
aso824
post
Post #4





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 2.08.2009

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


Nie znam się za dobrze na JS, ale zamień wszędzie:
Kod
window.alert

Na:
Kod
alert

Chociaż naprawdę nie wiem dlaczego otwiera się nowe okienko... Wg mnie to jest jedyna instrukcja która mogłaby to spowodować.
Go to the top of the page
+Quote Post
tacin
post
Post #5





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

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


ale to nie jest wina js, tylko php, bo jezeli zamiast calego kodu js wstawie sam tekst, to bedzie taki sam efekt - wczytuje sie nowa, pusta strona z zawartoscia tekstu
Go to the top of the page
+Quote Post
aso824
post
Post #6





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 2.08.2009

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


Chodzi ci beż odświeżania strony - na tej samej stronie co formularz ma się pokazać alert?
Jeżeli tak, to pozostaje tylko AJAX (odwoływanie się w tle do skryptu). Niestety, w tej chwili zbytnio AJAX-a nie pamiętam, ale może jak wieczorem znajdę czas to napiszę ci skrypt.
Tym czasem polecam ci Google - tu masz link (z cache google) do artu: Łap!
Go to the top of the page
+Quote Post
futura
post
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 4.01.2010

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


Zdefiniuj sobie tablice błędów np:

$errors = array();

Potem sprawdzasz kolejno warunki np:

if(nie jest spelniony warunek)
{
$errors[] = "treść błędu!";
}

Potem dajesz warunek np:

if(sizeof($errors) == 0){ echo "Wszystko ok!";} else {echo "Coś nie tak";}

To wszystko wyświetlasz sobie w pętli for (błędy) np:

for($i=0;$i;ilosc_bledow_w_tablicy;$i++)
{
echo $errors[$i];
}

albo foreachem
Go to the top of the page
+Quote Post
tacin
post
Post #8





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

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


Cytat(aso824 @ 8.02.2010, 18:59:35 ) *
Chodzi ci beż odświeżania strony - na tej samej stronie co formularz ma się pokazać alert?
Jeżeli tak, to pozostaje tylko AJAX (odwoływanie się w tle do skryptu). Niestety, w tej chwili zbytnio AJAX-a nie pamiętam, ale może jak wieczorem znajdę czas to napiszę ci skrypt.
Tym czasem polecam ci Google - tu masz link (z cache google) do artu: Łap!


moze byc odswiezanie, ale zeby sie pokazala ta sama strona co wczesniej, tylko zamiast formularza bedzie napisane "wyslano poprawnie". chyba takie cos bedzie latwiejsze do zrobienia, jednak nie wiem jak sie za to zabrac

PS: zle to okreslilem w poprzednich postach - nie "nowe okienko" tylko "nowa pusta strona z napisem ktory dalem w print"

Ten post edytował tacin 8.02.2010, 19:27:26
Go to the top of the page
+Quote Post
aso824
post
Post #9





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 2.08.2009

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


Z odświeżeniem zamiast formularza...
Albo to jest takie łatwe albo mi się zdaje...
Daj takie coś (tutaj przerabiam kawałek twojego kodu...):
Kod
      // wysłanie listu
print 'Aby dodać swoje CFG do listy, skorzystaj z poniższego formularza.<br>Po wysłaniu configu do nas, zostanie on umieszczony w naszym spisie.<br><br>Wynik: ';
          if (mail($odbiorca,$tytul,$tresc,$naglowki))
  
        {
  
        print '<b><font style="color: green;">Poprawnie wysłano</font></b>';
  
        }
  
        else
  
        {
  
        print '<b><font style="color: red;">Wystąpił błąd podczas wysyłania wiadomości!</font></b>';
    }
  
      }

      ?>

O takie coś chodzi? Efekt: zniknie formularz i zamiast tego będziesz miał wynik.
Czy jeszcze coś innego...?
Go to the top of the page
+Quote Post
tacin
post
Post #10





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

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


nadal otwiera sie nowa strona i jest w niej napisane:

Aby dodać swoje CFG do listy, skorzystaj z poniższego formularza.
Po wysłaniu configu do nas, zostanie on umieszczony w naszym spisie.

Wynik: Poprawnie wysłano



dobrze mnie zrozumiales - zamiast formularzu chce dac napis "poprawnie wyslano", ale nadal jest zle, bo otwiera sie nowa strona.

Ten post edytował tacin 8.02.2010, 20:09:31
Go to the top of the page
+Quote Post
aso824
post
Post #11





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 2.08.2009

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


Tzn chcesz aby adres w przeglądarce się nie zmieniał (czyli aby nie było przeładowywania strony) ?
Jak tak, to AJAX.
Czy chodzi ci o coś jeszcze innego?
Bo albo ja jestem niekumaty albo faktycznie niejawnie tłumaczysz smile.gif
Go to the top of the page
+Quote Post
tacin
post
Post #12





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

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


smile.gif

chodzi mi o to, ze jak ktos wypelni formularz i nacisnie "wyslij" to zeby otworzyla mu sie taka sama strona i zamiast formularzu byla wiadomosc o powodzeniu.
teraz gdy nacisie sie "wyslij" otwiera sie strona wyslij.php i w niej jest suchy tekst, ktory wpisujemy w print, a wyglada on bardzo nieestetycznie.

Ten post edytował tacin 8.02.2010, 20:36:10
Go to the top of the page
+Quote Post
altruista2
post
Post #13





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Pokaż nam źródło tzn. czy plik wyslij.php to jest ten sam z formularzem czy nie, bo to nie jest do końca klarowne.
Jeśli chodzi o takie proste formularze to ja bym postąpił tak:

  1. <?
  2.  
  3. function safe($str) {
  4. return str_replace(Array("\n","<",">"),Array("<br>","&lt;","&gt;"),$str);
  5. }
  6.  
  7. if($_POST['wyslij']) {
  8. $tresc = safe($_POST['tresc']);
  9. $do = safe($_POST['do']);
  10.  
  11. if(mail($do, 'Witamy', $tresc)) {
  12. $out = 'Dane zostaly wyslane.';
  13. $extra = "<script>alert('Ok!');</script>";
  14. }else{
  15. $out = 'Blad danych';
  16. $extra = "<script>alert('Blad przy wysylaniu mejla!');</script>";
  17. }
  18. }else{
  19. $out = 'Wpisz dane';
  20. $extra = '';
  21. }
  22.  
  23.  
  24. echo $out;
  25. ?>
  26. <br>
  27. <form method="post">
  28. <input type=text name=do><br>
  29. <textarea name=tresc></textarea><br>
  30. <input type=submit>
  31. </form>
  32. <?=$extra?>
  33.  


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
tacin
post
Post #14





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

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


problem rozwiazany. po prostu dalem zawartosc wyslij.php do tego samego pliku co reszta kodu oraz zminilem parametr zeby nie czytal wyslij.php tylko ta strone co wkleilem kodzik i dziala pieknie smile.gif
dzieki, ze probowaliscie mi pomoc smile.gif

temat do zamkniecia

Ten post edytował tacin 9.02.2010, 16:39:48
Go to the top of the page
+Quote Post

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: 21.08.2025 - 19:06