Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie kodu, znalezienie bledu
Forum PHP.pl > Forum > PHP
filar1994
Siemano
Problem jest z formularzem - nie wysyla e-maila i wyskakuje 'fail' . Do sprawdzenia na www.gmakademia.yoyo.pl/kontakt.php i o poprawe aby wysylal wszystkie informacje w e-mailu.


Formularz.php
Kod
<form action="#strona#" method="post" id="formularz">

<div>
<label>Imię : <span class="red">*</span></label>
<input type="text" id="imie" name="imie" value="#imie#" />
</div>
<div>
<label>Nazwisko: <span class="red">*</span></label>
<input type="text" id="nazwisko" name="nazwisko" value="#nazwisko#" />
</div>
<div>
<label>Adres e-mail: <span class="red">*</span></label>
<input type="text" id="mail" name="mail" value="#mail#" />
</div>
<div>
<label>Telefon: <span class="red">*</span></label>
<input type="text" id="telefon" name="telefon" value="#telefon#" />
</div>
<div>
<label>Firma: <span class="red">*</span></label>
<input type="text" id="firma" name="firma" value="#firma#" />
</div>
<div>
<label>Adres: <span class="red">*</span></label>
<input type="text" id="adres" name="adres" value="#adres#" />
</div>
<div>
<label>Miasto: <span class="red">*</span></label>
<input type="text" id="miasto" name="miasto" value="#miasto#" />
</div>
<div>
<label>Województwo/Region: <span class="red">*</span></label>
<select name="Wojewodztwo/region" size="1" value="#region#">
<option value="Biała Podlaska">Biala Podlaska
<option value="Bialystok">Bialystok
<option value="Bielsko-Biała">Bielsko-Biała
<option value="Bydgoszcz">Bydgoszcz
<option value="Chełm">Chełm
<option value="Ciechanów">Ciechanów
<option value="Częstochowa">Częstochowa
<option value="Elbląg">Elbląg
<option value="Gdańsk">Gdańsk
<option value="Gorzów">Gorzów
<option value="Jelenia Góra">Jelenia Góra
<option value="Kalisz">Kalisz
<option value="Katowice">Katowice
<option value="Kielce">Kielce
<option value="Konin">Konin
<option value="Koszalin">Koszalin
<option value="Kraków">Kraków
<option value="Krosno">Krosno
<option value="Legnica">Legnica
<option value="Leszno">Leszno
<option value="Łódź">Łódź
<option value="Łomża">Łomża
<option value="Lublin">Lublin
<option value="Nowy Sącz">Nowy Sącz
<option value="Olsztyn">Olsztyn
<option value="Opole">Opole
<option value="Ostrołęka">Ostrołęka
<option value="Piła">Piła
<option value="Piotrków">Piotrków
<option value="Płock">Płock
<option value="Poznań">Poznań
<option value="Przemyśl">Przemyśl
<option value="Radom">Radom
<option value="Rzeszów">Rzeszów
<option value="Siedlce">Siedlce
<option value="Sieradz">Sieradz
<option value="Skierniewice">Skierniewice
<option value="Słups">Słupsk
<option value="Suwałki">Suwałki
<option value="Szczecin">Szczecin
<option value="Tarnobrzeg">Tarnobrzeg
<option value="Tarnów">Tarnów
<option value="Toruń">Toruń
<option value="Wałbrzych">Wałbrzych
<option value="Warszawa">Warszawa
<option value="Włocławek">Włocławek
<option value="Wrocław">Wrocław
<option value="Zamość">Zamość
<option value="Zielona Góra">Zielona Góra
</select>


</select>
</div>
<div>
<span class="red">*</span> - oznacza pola wymagane.
</div>
<div>
<input type="submit" value="Wyślij" />
</div>

</form>

mail.php
Kod
<?php

include ('formularz/ustawienia.php');

ob_start();
        include('formularz/formularz.php');
        $formularz = ob_get_contents();
ob_end_clean();


function wyswietl_forme($komunikat='') {
global $formularz;

$do_zmiany = array(
'#komunikat#',
'#strona#',
'#imie#',
'#nazwisko#',
'#mail#',
'#telefon#',
'#firma#',
'#adres#',
'#miasto#',
'#region#'
);
$zmien_na = array(
$komunikat,
$_SERVER['REQUEST_URI'],
$_POST['imie'],
$_POST['nazwisko'],
$_POST['mail'],
$_POST['telefon'],
$_POST['firma'],
$_POST['adres'],
$_POST['miasto'],
$_POST['region']
);

$formularz = str_replace ( $do_zmiany, $zmien_na, $formularz);

return $formularz;
}


function waliduj() {
global $komunikat;
global $valid;

if( $valid['imie'] > 0 ) {
if(strlen($_POST['imie']) < $valid['imie'] ){
$walidacja['imie'] = $komunikat['imie'];
}
}

if( $valid['nazwisko'] > 0 ) {
if(strlen($_POST['nazwisko']) < $valid['nazwisko'] ){
$walidacja['nazwisko'] = $komunikat['nazwisko'];
}
}

if( $valid['mail'] == 0 ) {
if(!filter_var($_POST['mail'],FILTER_VALIDATE_EMAIL)) {
$walidacja['mail'] =  $komunikat['mail'];
}
}

if( $valid['telefon'] > 0 ) {
if(strlen($_POST['telefon']) < $valid['telefon'] ){
$walidacja['telefon'] = $komunikat['telefon'];
}
}

if( $valid['firma'] > 0 ) {
if(strlen($_POST['firma']) < $valid['firma'] ){
$walidacja['firma'] = $komunikat['firma'];
}
}

if( $valid['adres'] > 0 ) {
if(strlen($_POST['adres']) < $valid['adres'] ){
$walidacja['adres'] = $komunikat['adres'];
}
}

if( $valid['miasto'] > 0 ) {
if(strlen($_POST['miasto']) < $valid['miasto'] ){
$walidacja['miasto'] = $komunikat['miasto'];
}
}

if(empty($walidacja)) {
return 'true';
}else{
return $walidacja;
}

}

// Działanie
if (($_SERVER['REQUEST_METHOD'] == 'POST')) {// wejście postem
$walidacja = waliduj();

if ($walidacja == 'true'){ //poprawnie wypełniony formularz

if(mail($adres_odbiorcy,"=?UTF-8?B?".base64_encode($_POST['telefon'])."?=",'<p>Od: <b>'.$_POST['imie'].''.$_POST['nazwisko'].'</b><b>'.$_POST['nazwisko'].'</b></p><pre>'.$_POST['tresc'].'</pre>','From:'.$_POST['mail']."\r\nContent-Type: text/html; charset=utf-8")){ //sukces
print '
<div id="sukces">
<p>'.$komunikat['sukces'].'</p>
</div>
';
}else{ //bląd serwera
print '
<div id="blad">
<p>'.$komunikat['fail'].'</p>
</div>
';
print wyswietl_forme();
}

}else{
//błędna walidacja
$blad_walidacji = $walidacja;

$blad_walidacji = '
<div id="blad">
<p>'.$komunikat['blad'].'</p>
<ul>
';
foreach ($walidacja as $wpis) {
$blad_walidacji .= '<li>'.$wpis.'</li>';
}
$blad_walidacji .= '
</ul>
</div>
';

print wyswietl_forme($blad_walidacji);
}

}else{
// nowe wejście
print wyswietl_forme();
}






?>


ustawienia.php
Kod
<?php
/* Ustawienia formularza kontaktowego */

$adres_odbiorcy = 'filar1994@gmail.com';  //tu wpisz adres e-mail na który mają przychodzić wiadomości



/* Ustawienia wymaganych pól */
/* Pamiętaj, żeby oznaczyć wymagane pola w formularzu - plik formularz.php */

$valid['imie'] = 2;  // Imie: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik
$valid['nazwisko'] = 2;  // Nazwisko: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik
$valid['mail'] = 1;  // e-mail: 0 - oznacza pole nieobowiązkowe, 1 - pole wymagane
$valid['telefon'] = 5;  // Temat: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik
$valid['firma'] = 1;  // Firma: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik
$valid['miasto'] = 5;  // Miasto: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik
$valid['region'] = 5;  // Region: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik



/* Komunikaty */

$komunikat['sukces'] = 'Dziękujemy. Twoja wiadomość została wysłana.';  //Wiadomość po udanym wysłaniu formularza
$komunikat['blad'] = 'W celu pobrania dema popraw poniższe błędy.';  //Wiadomość przy błędzie w sprawdzaniu danych, błędy zostaną wymienione poniżej
$komunikat['imie'] = 'Wpisz właściwe imię';  //Wpisz właściwą ilość znaków jeśli pole wymagane
$komunikat['nazwisko'] = 'Wpisz właściwe nazwisko';  //Wpisz właściwą ilość znaków jeśli pole wymagane
$komunikat['mail'] = 'Podaj poprawny adres e-mail.';  //Wiadomość po błędnym wpisaniu adresu e-mail
$komunikat['telefon'] = 'Wpisz poprawny numer telefonu';  //Wpisz właściwą ilość znaków jeśli pole wymagane
$komunikat['firma'] = 'Wpisz poprawną nazwe firmy';  //Wpisz właściwą ilość znaków jeśli pole wymagane
$komunikat['fail'] = 'Przepraszamy wystąpił chwilowy błąd. Spróbuj ponownie później';  //W przypadku nieudanego wyslania wiadomości np. błędu serwera
?>
cycofiasz
A my jak te psy rzucamy się na analizę kodu i przynosimy poprawiony w pysku. Litości ludzie...
filar1994
kod jest prosty do analizy, wiec nie narzekaj... pomoc jest dobrowolna wiec nie widze problemu ktory wytaczasz w swojej wypowiedzi... nie chcesz - nie pomagasz. Mam problem ktorego nie potrafie sam rozwiklac, a ktos moze zauwazy w czym jest blad.

Pozdro wink.gif
cycofiasz
1. Nie ten dział, to się nadaje do przedszkola
2. Brak odpowiednich tagów przez co kod jest nieczytelny.
3. Brak magicznego słowa proszę
filar1994
1. W takim razie prosze moda o przeniesienie do odpowiedniego dzialu

2. Moglbys rozszerzyc troche mysl, bo odpowiednie tagi malo mi mowi

3. Prosze bardzo



ad. 2
moga to byc zrodla problemu niedzialania kodu ? (domyslam sie ze przeczytales chociaz czesc)
Uriziel01
Po pierwsze, zapoznałeś się z tym:
http://www.yoyo.pl/pomoc/index.php?action=kb&article=38

Sprawdź najpierw czy możesz bez problemów wysyłać proste wiadomości typu (przykład z php.net):
  1. $to = 'nobody@example.com';
  2. $subject = 'the subject';
  3. $message = 'hello';
  4. $headers = 'From: webmaster@example.com' . "\r\n" .
  5. 'Reply-To: webmaster@example.com' . "\r\n" .
  6. 'X-Mailer: PHP/' . phpversion();
  7.  
  8. mail($to, $subject, $message, $headers);


Jeżeli tak to sprawdź czy linia z mail() się w ogóle wykonuje.
Zrób też echo z adresu odbiorcy, tematu, treści i nagłówków i pokaż tutaj.

Swoją drogą czytać się tego nie da bez wcięć dry.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.