Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Formularz kontaktowy - błąd w kodzie ?
Miecho77
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.10.2011

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


Walczę dzisiaj pół dnia z formularzem na stronie, poprzedni nie spełniał funkcji, można było wysłać pusty, źle wysyłał polskie znaki www.firma-krzak.pl/kontakt.html.

Programista nie jestem, mam podstawy html, ale na php poległem i nie mam czasu zgłębiać całego języka.

Doszedłem do jak powstawiać pola wymagane, sprawdzanie e-mail i wsio działa.
Utknąłem na kawałku kodu pobranym z netu - jeżeli jest któreś pole źle wypełnione przenosi na inna stronę (jak podam ta na której jest formularz nic się nie dzieje) z komunikatem o błędzie w formularzu a ja chciał bym żeby pozostał na tej samej, podobnie po wysłaniu poprawnego e-maila.

Nie mogę ruszyć z miejsca sprawdzenia nr telefonu - zero reakcji czego bym nie wpisał
Podobnie z załącznikiem - mogę dodać ale go nie wysyła.

Jak by ktos rzucił okiem na ten chaos będę wdzięczny

Kod
<?php
if(empty($_POST['submit'])){
?>
<form action="http://www.firma-krzak.pl/zalacznik.php" method="post"> <!--nazwa strony na której znajduje sie formularz-->
    <table>
        <tr><td class="prawy">Imie i Nazwisko <br>lub nazwa firmy:</td>
            <td><input type="text" name="nazwa" style="width:300px;"/></td></tr>
        <tr><td class="prawy">Kod pocztowy:</td>
            <td><input type="text" name="kod" style="width:100px;"/></td></tr>
                    <tr><td class="prawy">Adres e-mail:</td>
            <td><input type="text" name="email" style="width:300px;"/></td></tr>
        <tr><td class="prawy">Telefon:</td>
            <td><input type="text" name="tel" style="width:300px;"/></td></tr>
        <tr><td class="prawy">Tresc wiadomosci:</td>
            <td><textarea name="trescwiadomosci" cols="30" rows="6" style="width:300px;"></textarea></td></tr>
        <tr><td class="prawy">Wybierz adresata:</td>
            <td><select name="odbiorca" style="width:300px;">
                    
                    <option>biuro@firma-krzak.pl</option>
                    <option>projektowanie@firma-krzak.pl</option>
                    <option>nawadnianie@firma-krzak.pl</option>
                </select></td></tr>
        <tr><td class="srodek">Zalacznik 1:</td>
            <td class="zwykly"><input type="hidden" name="MAX_FILE_SIZE" value="2000000" /><INPUT type="file" name="plik1"></td></tr>
            
        <tr><td class="srodek">Zalacznik 2:</td>
            <td class="zwykly"><input type="hidden" name="wyslij" value="1" /><input type="hidden" name="MAX_FILE_SIZE" value="2000000" /><INPUT type="file" name="plik2"></td></tr>
        
        <tr><td class="srodek">Zalacznik 3:</td>
            <td class="zwykly"><input type="hidden" name="MAX_FILE_SIZE" value="2000000" /><INPUT type="file" name="plik3"></td></tr>
        
        <tr><td class="srodek"></td> 
            <td class="srodek"><input type="submit" name="submit" value="Wyslij formularz"/><input type="reset" value="Wyczysc"/></td></tr>
    </table>
    
</form>
<?php
/*sprawdzenie wypelnienia wszystkich pól*/
}elseif(!empty($_POST['nazwa']) && !empty($_POST['email']) && !empty($_POST['trescwiadomosci']) && !empty($_POST['tel'])){

/*Sprawdzanie poprawnosci numeru telefonu - niedziala
if ($tel == "" || !preg_match("/^[0-9]{9,11}$/i", $tel)) {
$error .= "<span style=\"color: #FF0000; text-align: center;\">Nieprawidlowy numer telefonu</span><br>";
}
*/

/* Funkcja sprawdzajaca poprawnosc E-Maila */
function SprawdzEmail($email) {
if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)){return false;}
return true;
}
if(SprawdzEmail($_POST['email'])){

/* Tworzymy szkielet wysylanej wiadomosci */

$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";
  }

$adresemail=$_POST['odbiorca'];

$ip=$_SERVER['REMOTE_ADDR'];

/* Wybierz kodowanie znaków usuwajac */

$charset = 'iso-8859-2';
//$charset = 'utf-8';
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$wiadomosc="Od: $_POST[nazwa] ($_POST[email]), tel: $_POST[tel]\nIP: $ip, HOST: $host\n\n$_POST[trescwiadomosci]";
$nadawca="From: $_POST[email]";
@mail($adresemail, "Formularz z www", "$wiadomosc", "$nadawca");


  
echo "<span style=\"color: #00D800; font-weight: bold; \">Dziekujemy, formularz zostal wyslany.</span>";
}else{ echo "<span style=\"color: #FF0000; text-align: center; font-weight: bold;\">Wprowadzony adres E-Mail jest niepoprawny!!!</span>"; }
}else{ echo "<span style=\"color: #FF0000; text-align: center; font-weight: bold;\">Cofnij i wypelnij wszystkie pola formularza!!!</span>"; }
?>


wrzuciłem testowo tu http://www.firma-krzak.pl/zalacznik.php


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


http://www.google.pl/search?aq=0&oq=fo...ipart+form-data

Zamień kontakt.html na kontakt.php, to będzie krok w dobrą stronę. Akcję formularza zamień na http://www.firma-krzak.pl/kontakt.php Jeśli dalej utkniesz na czymś, to pomożemy.

ps.
Domena + branża (IMG:style_emoticons/default/biggrin.gif) :D Hahaha

Ten post edytował darko 11.01.2012, 22:00:30
Go to the top of the page
+Quote Post
Miecho77
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.10.2011

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


Na tym etapie jeszcze mi wszystko działało prawidłowo, oprócz tego ze komunikat o błędnie wypełnionych polach pojawia się zamiast formularza, a wolał bym żeby był np pod przyciskiem "Wyślij".
Niestety nie wpadłem jeszcze na ciąg przyczynowo-skutkowy odpowiadający temu działaniu.

Kod
<?php
if(empty($_POST['submit'])){
?>
<form action="http://www.firma-krzak.pl/kontakt-nowy.php" method="post"> <!--nazwa strony na której znajduje sie formularz-->
    <table>
        <tr><td class="prawy">Imie i Nazwisko
                               <br>lub nazwa firmy:</td>
            <td><input type="text" name="nazwa" style="width:300px;"/></td></tr>
        <tr><td class="prawy">Adres e-mail:</td>
            <td><input type="text" name="email" style="width:300px;"/></td></tr>
        <tr><td class="prawy">Telefon:</td>
            <td><input type="text" name="tel" style="width:300px;"/></td></tr>
        <tr><td class="prawy">Tresc wiadomosci:</td>
            <td><textarea name="trescwiadomosci" cols="30" rows="6" style="width:300px;"></textarea></td></tr>
        <tr><td class="prawy">Wybierz adresata:</td>
            <td><select name="odbiorca" style="width:300px;">
                    <option>biuro@firma-krzak.pl</option>
                    <option>projektowanie@firma-krzak.pl</option>
                    <option>nawadnianie@firma-krzak.pl</option>
                </select></td></tr>
        <tr><td class="srodek"></td> 
            <td class="srodek"><input type="submit" name="submit" value="Wyslij formularz"/><input type="reset" value="Wyczysc"/></td></tr>
    </table>
</form>
<?php
/*sprawdzenie wypelnienia wszystkich pól*/
}elseif(!empty($_POST['nazwa']) && !empty($_POST['email']) && !empty($_POST['trescwiadomosci']) && !empty($_POST['tel'])){
/* Funkcja sprawdzajaca poprawnosc E-Maila */
function SprawdzEmail($email) {
if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)){
  return false;
}
return true;
}
if(SprawdzEmail($_POST['email'])){
/* Tworzymy szkielet wysylanej wiadomosci */
$adresemail=$_POST['odbiorca'];
$ip=$_SERVER['REMOTE_ADDR'];
/* Wybierz kodowanie znaków usuwajac // */
$charset = 'iso-8859-2';
//$charset = 'utf-8';
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$wiadomosc="Od: $_POST[nazwa] ($_POST[email]), tel: $_POST[tel]\nIP: $ip, HOST: $host\n\n$_POST[trescwiadomosci]";
$nadawca="From: $_POST[email]";
@mail($adresemail, "Formularz kontaktowy z www", "$wiadomosc", "$nadawca");
echo "<span style=\"color: #00D800; font-weight: bold; \">Dziekujemy, formularz zostal wyslany.</span>";
}else{ echo "<span style=\"color: #FF0000; text-align: center; font-weight: bold;\">Wprowadzony adres E-Mail jest niepoprawny!!!</span>"; }
}else{ echo "<span style=\"color: #FF0000; text-align: center; font-weight: bold;\">Cofnij i wypelnij wszystkie pola formularza!!!</span>"; }
?>


strona z formularzem http://www.firma-krzak.pl/kontakt.php

Podobnie ze sprawdzaniem poprawności telefonu, obecnie jest w komentarzu
Ma pozwalać tylko na cyfr 0-9, chciałem jeszcze dać format wpisu ale jest tyle wariantów....

Kod
/*Sprawdzanie poprawnosci numeru telefonu - niedziala
if ($tel == "" || !preg_match("/^[0-9]{9,11}$/i", $tel)) {
$error .= "<span style=\"color: #FF0000; text-align: center;\">Nieprawidlowy numer telefonu</span><br>";
}
*/


czy jest poprawny i czy powinien się mieścić nad sprawdzaniem poprawności e-mail.

Go to the top of the page
+Quote Post
pianta_d
post
Post #4





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Witam


Poczytaj o walidacji, pierwszy z góry wynik wujka googla klik, drugi klik


Pozdrawiam


EDIT

  1. /*Sprawdzanie poprawności numeru telefonu - dziala*/
  2. if (preg_match("/^[0-9]{9,11}$/i", $tel)) {
  3. echo "Prawidłowy numer telefonu";}
  4. else
  5. {echo 'Numer nieprawidłowy!';}


Pozdrawiam

Ten post edytował pianta_d 12.01.2012, 00:16:37
Go to the top of the page
+Quote Post
Miecho77
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.10.2011

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


Cytat(pianta_d @ 11.01.2012, 23:48:26 ) *
Witam


Poczytaj o walidacji, pierwszy z góry wynik wujka googla klik, drugi klik


Pozdrawiam


EDIT

  1. /*Sprawdzanie poprawności numeru telefonu - dziala*/
  2. if (preg_match("/^[0-9]{9,11}$/i", $tel)) {
  3. echo "Prawidłowy numer telefonu";}
  4. else
  5. {echo 'Numer nieprawidłowy!';}


Pozdrawiam


Dzięki ten kod sprawdza tel.

Ale poprzedniego nie pisałem sam w całości i nie potrafię go prawidłowo zmodyfikować - ponad moje siły (ginę gdzieś na poziomie otwierania i zamykania {} funkcji)

Mam obecnie tak, że przechodzi do nowej strony z komunikatem "nieprawidłowy numer" Dziękujemy email został wysłany" (jeżeli reszta pól była wpisana poprawnie).

Chciałem skorzystać z innego kodu

Kod
function sprawdztel($tel){ $tel = preg_replace("/[^0-9\(\)]/","",$tel);
        if(!preg_match("/[0-9]{3}/",$tel) &&
            !preg_match("/\([0-9]{2}\)[0-9]{7}/",$tel) &&
            !preg_match("/\([0-9]{2}\)[0-9]{9}/",$tel))
        { return true;
        } else {
                echo "<span style=\"color: #FF0000; text-align: center; font-weight: bold;\">Wprowadzony numer telefonu jest niepoprawny!!!</span>";
        }

po wyświetleniu strony mam:
Parse error: syntax error, unexpected T_ELSE in /srv/home/q05121fb/public_html/zal.php on line 150 - jeżeli dobrze rozumie brak reakcji dla warunku "return true" (IMG:style_emoticons/default/questionmark.gif)

Szkoda mojego czasu, za mało teorii.

Jednak sie okazuje ze dodanie załacznika jest niezbędne
równiez weryfikacja talafonu chociazby na poziomie czy to jest 9 cyfr

Moze mi ktos z tym pomóc?


Ten post edytował Miecho77 12.01.2012, 11:22:46
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 22:39