Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz nie działa po przejsciu z 5.2 na 5.3
Forum PHP.pl > Forum > Przedszkole
struna12
Witam
Jestem kompletnie zielony w temacie PHP. Mam strone internetową na której jest formularz kontaktowy. Po przełączeniu na serwerze wersji php z 5,2 na 5.3 maile przychodzą bez treści. (nie wyświetla sie tekst który wpisuje osoba wysyłająca wiadomość)

Proszę powiedzcie czy można coś pozmieniać w pliku php zeby zaczeło działać? jakaś normalizacja po przejściu na php5.3? czy może któreś wpisy się zdeprecjionowały?

POMOCY!:)

fragment kodu formularza:
CODE
<form action="email.php" method="post" onsubmit="return check_form(this)">
Imię <span style="color:red;font-size:11px;">*</span><br><input type="text" name="imie" class="form"><br>
Numer Telefonu<br><input type="text" name="numer" class="form"><br>
Twój e-mail <span style="color:red;font-size:11px;">*</span><br><input type="text" name="email" class="form"><br>
Treść wiadomości <span style="color:red;font-size:11px;">*</span><br><textarea name="wiadomosc" class="text"></textarea><br>
<input type="hidden" name="wyslij" value="1">
<input type="submit" value="" class="button">
<br><br><span style="color:red;font-size:11px;">* Pole wymagane</span>
</form><br><br>



A tu zawartość pliku email.php

CODE

<?php
//sprawdzenie czy zał±cznik pochodzi z formularza
if ($_POST["wyslij"]==1)
{
// dane o odbiorcy, nadawcy
$odbiorca="sempretaniec@sempretaniec.pl";
$tytul="Wiadomosc ze strony SEMPRE";
$nadawca = "admin";
$nadawca_mail="user";

// tre¶ć listu
$tresclistu = "<table border=\"0\" width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"2\" align=center style=\"font-family: Verdana; font-size: 12px;\">
<tr>
<td>Imię i Nazwisko:</td>
<td><b>".$imie."</b></td>
</tr>
<tr>
<td>Numer telefonu:</td>
<td><b>".$numer."</b></td>
</tr>
<tr>
<td>Adres Email do korespondencji:</td>
<td><b>".$email."</b></td>
</tr>
<tr>
<td>Mieszkam w:</td>
<td><b>".$miejscowosc."</b></td>
</tr>
<tr>
<td>Tre¶ć wiadomo¶ci:</td>
<td><b>".$wiadomosc."</b></td>
<tr>
<td colspan=\"2\"><br>Proszę nie odpowiadać na tę wiadomo¶ć jest wygenerowana automatycznie<br></td>
</tr>
</table>";

// definicja nagłówków
$naglowki = "From: $nadawca \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/html; charset=\"iso-8859-2\"\n";
$tresc .="Content-Transfer-Encoding: 8bit\n";
$tresc .="\n$tresclistu\n";

// wysłanie listu
if (mail($odbiorca,$tytul,$tresc,$naglowki))
{
print "Wiadomo¶ć wysłana dziękujemy";
}
else
{
print "wiadomosc nie wyslana, wystapil blad";
}
}
?>





Turson
Zobacz, masz taki kod
  1. <td>Imię i Nazwisko:</td>
  2. <td><b>".$imie."</b></td>

Skąd skrypt ma wiedzieć co oznacza $imie?
Zdefiniuj wcześniej wysłane zmienne
  1. $imie=$_POST["imie"];
  2. $numer=$_POST["numer"];
  3. // i tak dalej...

I to nie ma związku z przejściem na nową wersję PHP, bo jeśli wcześniej był ten sam kod to również nie miał prawa działać.

A sam skrypt jest kiepski. Nie sprawdzasz nawet czy wszystkie pola zostały wypełnione, czy e-mail jest poprawnego formatu.
struna12
Dziękuję za szybką odpowiedź.

Niestety jak już wcześniej pisałem nie mam pojęcia o php i nie mam pojęcia gdzie co mam wpisac.

Dziwne jest to, że do tej pory działało wszystko poprawnie.
jesli chodzi o sprawdzanie poprawnosci wpisu to mam jeszcze taki plik js

CODE
function check_form(f) {
if (f.imie.value == '' ||
f.email.value == '' ||
f.numer.value == '') {
alert('Pole wymagane jest puste! wypełnij go!');
return false;
}

maska = /^[0-9a-z_.-]+@([0-9a-z-]+.)+[a-z]{2,4}$/i;
if (maska.test(f.email.value)==false) {
alert("Wpisz poprawny adres e-mail!");
return false;
}

return true;
}
//-->


Nie nie zmieniałem w tych plikach a od dwóch dni przestały działać. Czy jeśli to nie wina skryptu to moze to być wina serwera?.
Instalowałem joomle na tym serwrze i przy instalacji oprocz wymogu php5.3 było jeszcze coś o "Wyłączone Magic Quotes GPC"
może to to?

timon27
Cytat(Turson @ 16.09.2013, 19:32:50 ) *
...to również nie miał prawa działać.


Miał prawo działać jeśli php został odpowiednio skompilowany (np. u mnie działa).
Najwyraźniej administrator przy nowej wersji zrobił to inaczej.
Tak czy siak faktycznie takie pisanie kodu nie jest dobrym pomysłem.
Turson
Wystarczy, że ktoś wyłączy js w przeglądarce i formularz przejdzie bez wpisywania czegokolwiek

Spróbuj tego
  1. <?php
  2. //sprawdzenie czy załącznik pochodzi z formularza
  3. if ($_POST["wyslij"]==1)
  4. {
  5. // dane o odbiorcy, nadawcy
  6. $odbiorca="sempretaniec@sempretaniec.pl";
  7. $tytul="Wiadomosc ze strony SEMPRE";
  8. $nadawca = "admin";
  9. $nadawca_mail="user";
  10.  
  11. // treść listu
  12. $tresclistu = "<table border=\"0\" width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"2\" align=center style=\"font-family: Verdana; font-size: 12px;\">
  13. <tr>
  14. <td>Imię i Nazwisko:</td>
  15. <td><b>".$_POST['imie']."</b></td>
  16. </tr>
  17. <tr>
  18. <td>Numer telefonu:</td>
  19. <td><b>".$_POST['numer']."</b></td>
  20. </tr>
  21. <tr>
  22. <td>Adres Email do korespondencji:</td>
  23. <td><b>".$_POST['email']."</b></td>
  24. </tr>
  25. <tr>
  26. <td>Mieszkam w:</td>
  27. <td><b>".$_POST['miejscowosc']."</b></td>
  28. </tr>
  29. <tr>
  30. <td>Treść wiadomości:</td>
  31. <td><b>".$_POST['wiadomosc']."</b></td>
  32. <tr>
  33. <td colspan=\"2\"><br>Proszę nie odpowiadać na tę wiadomość jest wygenerowana automatycznie<br></td>
  34. </tr>
  35. </table>";
  36.  
  37. // definicja nagłówków
  38. $naglowki = "From: $nadawca \n";
  39. $naglowki .= "MIME-Version: 1.0\n";
  40. $naglowki .= "Content-Type: multipart/mixed;\n";
  41. $naglowki .= "\tboundary=\"___$znacznik==\"";
  42.  
  43. // nagłówki listu
  44. $tresc="--___$znacznik==\n";
  45. $tresc .="Content-Type: text/html; charset=\"iso-8859-2\"\n";
  46. $tresc .="Content-Transfer-Encoding: 8bit\n";
  47. $tresc .="\n$tresclistu\n";
  48.  
  49. // wysłanie listu
  50. if (mail($odbiorca,$tytul,$tresc,$naglowki))
  51. {
  52. print "Wiadomość wysłana dziękujemy";
  53. }
  54. else
  55. {
  56. print "wiadomosc nie wyslana, wystapil blad";
  57. }
  58. }
  59. ?>
struna12
Działa!!!
Dzięki Turson.
Nie mam pojecia jak mogło działać wcześniej.
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.