Nie działa kod PHP po modyfikacji

0

Witam :) Mam mały problem, ponieważ działał mi kod PHP w formularzu kontaktowym gdy miał pierwsze trzy okienka do wpisania. W momencie dodania kolejnych kod przestał działać. Mógłbym liczyć na wasza pomoc? PHP i HTML przesyłam w załączniku. Pozdrawiam i dziękuję.

0

Kod wrzuć na forum, zabawy w załączniki są uciążliwe, a to Tobie powinno zależeć, żeby nam było jak najłatwiej Tobie pomóc.

Dwa: co to znaczy "przestał działać", jakie są tego efekty?

Trzy: włącz pokazywanie wszystkich błędów, zanim cokolwiek wrzucisz na forum. Większość takich podstawowych problemów w ten sposób rozwiążesz.

0

Miałem na myśli to, że wcześniej normalnie wysyłało mi wiadomość z danymi a po dodaniu kolejnych rubryczek przestało wysyłać. Natomiast gdy znowu usunę tylko do trzech rubryk to znowu działa.

<?php
if (count($_POST))
{
////////// USTAWIENIA //////////
$email = 'tu.byl.moj.e-mail'; // Adres e-mail adresata
$subject = 'Kontakt przez formularz'; // Temat listu
$message = '<font size="24"><br><br><br>Twoja wiadomość została wysłana!<br><br><br><br></font>'; // Komunikat
$error = 'Wystąpił błąd podczas wysyłania formularza'; // Komunikat błędu
$charset = 'iso-8859-2'; // Strona kodowa
//////////////////////////////
 
$head =
"MIME-Version: 1.0\r\n" .
"Content-Type: text/plain; charset=$charset\r\n" .
"Content-Transfer-Encoding: 8bit";
$body = '';
foreach ($_POST as $name => $value)
{
if (is_array($value))
{
for ($i = 0; $i < count($value); $i++)
{
$body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
}
}
else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
}
echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
}
else
{
?>
<form action="?" method="post">
 
</form>
<?php
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>asd</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="strona">
<div id="zawartosc">
<div id="formularz">
<form name="formularz1" action="wyslij.php" method="post">
<br>
<center><font size="3"><b>Imię:</b><br><input type="text" name="Imie"/><br><br>
<b>Nazwisko:</b><br><input type="text" name="Nazwisko" /><br><br>
<b>Rok urodzenia:</b><br><input type="text" name="Rok urodzenia" />
<p><b>Adres E-mail:</b><br><input type="text" name="Email" />
<p><b>Telefon komórkowy:</b><br><input type="text" name="Telefon komórkowy" />
<p><b>Miasto:</b><br><input type="text" name="Miasto" />
<p><b>Województwo:</b><br><input type="text" name="Województwo" /></font>
</p><br>
<button type="button">Wyslij</button>
</center></form>  
</div> 
</div>
</body>
</html>
1

Lepiej w nazwach dla inputów nie dawaj polskich znaków, ani spacji. Wyświetl zawartość $_POST i zobacz co tam dostajesz.

0
Sarrus napisał(a):

Wyświetl zawartość $_POST

nie rozumiem

0
var_dump($_POST);
0
Wielki Kot napisał(a):
Sarrus napisał(a):

Wyświetl zawartość $_POST

nie rozumiem

A znasz takie coś jak var_dump albo print_r?

Weź na czas testów wyświetl zawartość $_POST w ten sposób:

echo var_dump($_POST)

http://php.net/manual/en/function.var-dump.php
http://php.net/manual/en/function.print-r.php

Ogólnie kod jest dość trudny a analizie, sformatuj chociaż jakimś narzędziem online:

http://beta.phpformatter.com/

0

Nie znam tych poleceń. Czyli dopisać po prostu gdzieś na początku echo var_dump($_POST) tak? Czy że w miejsce $_POST</code> wklepać <code>echo var_dump($_POST)

0

Zaraz przed tym

echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;

daj:

var_dump($_POST)

Ewentualnie przed tą pętlą foreach. Chodzi o to co się wyświetli bo tak inaczej nie dojdziesz. Zresztą sam to może przetestuję.

0

A więc tak: sam to sprawdziłem i podaję tu działający przykład (u mnie jednak zakomentowałem to co wysyła dane mailem)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" />
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    <link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
    <div id="strona">
        <div id="zawartosc">
            <div id="formularz">
                <form name="formularz1" action="wyslij.php" method="post">
                    <br>
                    <center><font size="3"><b>Imię:</b><br><input type="text" name="Imie"/><br><br>
                    <b>Nazwisko:</b><br><input type="text" name="Nazwisko" /><br><br>
                    <b>Rok urodzenia:</b><br><input type="text" name="Rok_urodzenia" />
                    <p><b>Adres E-mail:</b><br><input type="text" name="Email" />
                    <p><b>Telefon komórkowy:</b><br><input type="text" name="Telefon_komorkowy" />
                    <p><b>Miasto:</b><br><input type="text" name="Miasto" />
                    <p><b>Województwo:</b><br><input type="text" name="Wojewodztwo" /></font>
                        </p>
                        <br>
                        <input type="submit"></input>
                    </center>
                </form>
            </div>
        </div>
</body>
</html>

Ma być

<input type="submit"></input>

zamiast <button type="button">Wyslij</button>

 bo nie działało i nie wywoływało w ogóle skrytpu PHP. Wyżej atrybuty name są bez spacji, zamiast tego znak podkreślenia i nie ma żadnych polskich znaków.

Skrypt PHP:

```php
<div id="strona">
<div id="zawartosc"><center><?php
if (count($_POST)) {
    ////////// USTAWIENIA //////////
    $email   = 'tu.byl.moj.e-mail'; // Adres e-mail adresata
    $subject = 'Kontakt przez formularz'; // Temat listu
    $message = '<font size="24"><br><br><br>Twoja wiadomość została wysłana!<br><br><br><br></font>'; // Komunikat
    $error   = 'Wystąpił błąd podczas wysyłania formularza'; // Komunikat błędu
    $charset = 'iso-8859-2'; // Strona kodowa
    //////////////////////////////

    $head = "MIME-Version: 1.0\r\n" . "Content-Type: text/plain; charset=$charset\r\n" . "Content-Transfer-Encoding: 8bit";
    $body = '';
    foreach ($_POST as $name => $value) {
        if (is_array($value)) {
            for ($i = 0; $i < count($value); $i++) {
                $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
            }
        } else
            $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
    }
    //tutaj dla sprawdzenia (sprawdzenie co jest w $_POST)
    echo 'BODY: <BR><BR>';
    echo $body . '<BR>';
    echo $message;
    //to nizej odkomentowac
    //echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
} else {
?>
<form action="?" method="post">

</form>
<?php
}
?></center></div>
<div id="stopka"></div>
</div>
</body>
</html>
0

Niestety nie działa. Zamiast wysłać mi to na emaila pokazuje mi wszystko nad wiadomością o "powodzeniu przesłanego formularza"
user image

0

Chciałbym dodać, że kod PHP po prostu skopiowałem i wkleiłem, ze zmianą e-maila.

0

Właśnie to ja na potrzeby testów celowo zakomentowałem, odkomentuj to

echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
0

Usunąłem to i dalej to samo...

Nawet to -> // usuwałem i dalej nic.

Teraz działa natomiast dalej wyskakuje ten tekst/błąd co na zdjęciu wyżej

Może to ma coś wspólnego z tym?

//tutaj dla sprawdzenia (sprawdzenie co jest w $_POST)
    echo 'BODY: <BR><BR>';
    echo $body . '<BR>';
    echo $message;

dodanie znacznika <code class="php"> - @furious programming

0

Sprawdź logi serwerów, a nie zgadujesz.

A w ogóle to co to ma być:

if (is_array($value))
{
for ($i = 0; $i < count($value); $i++)
{
$body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
}
}
else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
}

:|

0

usunąłem to co wyżej zaznaczyłem i wszystko działa poprawnie. Dziękuję wam bardzo !

1 użytkowników online, w tym zalogowanych: 0, gości: 1