ďťż

[php] problemy z kodem ?

       

Podstrony


telcocafe

Witam użytkowników,

Ostatnio zabrałem się za PHP i napotkałem dosyć dziwne problemy.
Mam taki kod:
<!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1-strict.dtd"> <html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <title>Witaj na stronie (PHP test)</title> <meta http-equiv="content-type" content="text/html; charset= UTF-8"/> </head> <body> <?php $Separator = true; if ($separator) echo 'instrukcja IF'; else echo 'instrukcja ELSE' ?> </body> </html>
Po uruchomieniu w przeglądarce niestety nie widzę nic chociaż zdaje się że powinienem zobaczyć
instrukcja IF
Podczas pracy odnoszę wrażenie że interpreter PHP zachowuje się dość dziwnie np. jeżeli chodzi o formularze to mam taki kod:
//------------------------ strona.html <!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1-strict.dtd"> <html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <title>STRONA_WWW</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> </head> <body> <h1>Wypełnij formularz</h1></br> </br> <form action="actionfile.php" method="post"/> Imię: <input type="text" id="imie"/> Nazwisko: <input type="text" id="nazwisko"/> Data urodzenia: <input type="text" id="data"/> </br></br> <input type="submit" value="Wyślij"/> <input type="reset" value="Anuluj"/> </form> </body> </html> //------------------------ actionfile.php <?php echo "cześć " + $_POST['imie'] + " " + $_POST['nazwisko'] + " urodziłeś się " + $_POST['data'] ?>
I jako rezultat otrzymuję tylko:
0
Nie bardzo wiem jak sobie z tym poradzić. Dodam że wszystko uruchamiam ze swojego komputera poprzez serwer Apache. Pierwsze co mi przyszło do głowy to złe ustawiania w php.ini ale zainstalowałem XAMPP (version 1.7.2: Apache 2.2.12 , PHP 5.3.0 + PEAR) więc wszystko powinno normalnie śmigać a tu takie rzeczy się dzieją.

Dzięki za jakąkolwiek pomoc.
Pozdrawiam.
Użytkownik CorVeta edytował ten post 04 grudzień 2009, 20:18


Jeśli nie widzisz nic, to pewnie skrypt wcale nie jest przetwarzany przez parser i kod zwracany jest w surowej postaci - spójrz do źródła, nie zdziwiłbym się, gdyby tam on siedział...
Czy plik na pewno nazwałeś .php? Bo domyślnie serwery nie szukają kodu PHP w .htm*...

Druga sprawa - zmienne w PHP są case-sensitive czyli musisz zwracać uwagę na wielkość liter.
Ty definiujesz $Separator, a sprawdzasz $separator - to są dwie inne zmienne :Tongue:

Trzecią sprawą jest błąd w wyświetlaniu wartości przesłanych formularzem. Do łączenia danych typu łańcuchowego używa się kropek, natomiast sumowania stało/zmiennoprzecinkowych znaku dodawania (stąd chcąc dodać stringi otrzymujesz zero). Czyli u ciebie powinno byćecho 'cześć '.$_POST['imie'].' '.$_POST['nazwisko'].' urodziłeś się '.$_POST['data'];I jeszcze coś - nazwy obiektów formularza do których odwołujesz się z poziomu PHP umieszczasz jako atrybut do name, nie id (to bardziej do DOM :Tongue:), czyli np. Nazwisko: <input type="text" name="nazwisko"/>
Poza tym, jak nie musisz (nie wywołujesz zmiennych) dane łańcuchowe umieszczaj pomiędzy apostrofami, a nie w cudzysłowie (zerknij na ww. kod).

Rada na przyszłość - wyświetlając jakiekolwiek dane na które użytkownik ma wpływ (tablice COOKIES/GET/POST) zawsze filtruj - np. przy pomocy htmlspecialchars() lub strip_tags(). W innym wypadku możesz narazić stronę na atak typu code injection/cross-site scripting (XSS).
Tak ogólnie polecam http://4programmers....HP/Podstawy_PHP :)
Użytkownik DJ_ProG edytował ten post 04 grudzień 2009, 21:22
Wielkie dzięki, dział!
Teraz już rozumiem swoje błędy. A obecny tutorial muszę wywalić bo jest jakiś lipny ;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.