Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wykrzaczanie się kodu php
Forum PHP.pl > Forum > Przedszkole
dawido000
Witam, mam taki problem (uważam, że drobny no ale cóż nie mogę znaleźć rozwiązania). Otóż stworzyłem plik prztworzzamowienie.php . Wygląda on tak:

  1. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  2. <title>Części samochodowe Janka</title>
  3. </head>
  4. <h1>Części samochodowe Janka</h1>
  5. <h2>Wyniki zamówienia</h2>
  6. <?php
  7. echo("<p>Zamówienie przyjęte</p>");
  8. ?>
  9. </body>
  10. </html>


Kiedy uruchamiam ten plik w przeglądarce firefox, wyskakuje mi wykrzaczenie we fragmencie użytego kodu php:

Części samochodowe Janka
Wyniki zamówienia
Zamówienie przyjęte
"); ?>


Dlaczego?
JoShiMa
A po co używasz nawiasów przy funkcji echo? Napisz:

  1. <h2>Wyniki zamówienia</h2>
  2. <p><?php echo 'Zamówienie przyjęte' ?></p>


I nie stosuj bez potrzeby znaków" w tym wypadku wystarczy '
sadistic_son
Przecież Twoje poprawki nie zmienią zupełnie nic. Te nawiasy mogą być jak i wcale nie muszą, tak samo cudzysłowy. Owszem Twoje jest bardziej poprawne ale na dobrą sprawę to to samo co kolega dawido zastosował.
Mackos
Mam trzy subtelne pytania, Czy jestes pewien że plik który otwierasz to plik .php ?
Czy na innych przeglądarkach działa?
Na czym odtwarzasz plik, zdalny/lokalny serwer? i czy jesteś pewien że ma on obsługę php?
dawido000
Joshima, twój zapis powoduje, że nie generuje mi się nawet ten napis "Zamówienie przyjęte" - czysty ekran w przeglądarce.
Fifi209
Cytat(dawido000 @ 28.03.2011, 22:42:39 ) *
czysty ekran w przeglądarce.

Brak średnika. Tak ciężko dostrzec ?
dawido000
Cytat(Mackos @ 28.03.2011, 22:42:27 ) *
Mam trzy subtelne pytania, Czy jestes pewien że plik który otwierasz to plik .php ?
Czy na innych przeglądarkach działa?
Na czym odtwarzasz plik, zdalny/lokalny serwer? i czy jesteś pewien że ma on obsługę php?


Jestem pewien, że to plik php.
Na innych przeglądarkach np. internet explorer to pokazuje mi się skrzkowany kod html.
Zainstalowałem sobie lokalny serwer: Apache 2.2 do tego mysql oraz php+perl

Też myślę, że problem leży w konfiguracji serwera.

Cytat(fifi209 @ 28.03.2011, 22:45:22 ) *
Brak średnika. Tak ciężko dostrzec ?


Średnik też nic nie zmienił - czyste tło i brak napisu.
_borek
Cytat(fifi209 @ 28.03.2011, 22:45:22 ) *
Brak średnika. Tak ciężko dostrzec ?


W przykładzie który podał Joshima średnik jest niepotrzebny. Masz grubo ponad 3000 postów tutaj i jeszcze tego nie wiesz ?
Mackos
@up Średnik dajemy zawsze. Faktu nie zmienia to że w tym wypadku będzie działać bez niego.

@dawido000 Weź zrób nowy plik php
  1. <?php echo phpinfo(); ?>

I sprawdź czy Ci wyświetli to co powinno.
Ewentualnie wrzuć swój plik na jakiś wirtualny serwer (taki gdzie na 100% jest zainstalowny PHP) i sprawdź czy działa.

Powiedz jeszcze w czym edytujesz/piszesz te pliki?
wmatusiak
Cytat(Mackos @ 29.03.2011, 00:59:55 ) *
  1. <?php echo phpinfo(); ?>


Jak już się czepiać to
  1. <?php phpinfo(); ?>

Ta funkcja wypisuje zawartość i zwraca Boolean więc poco echo ?
A średnik warto postawić dla pewności i nie generowania sobie problemów w przyszłości przy edycji wink.gif


A teraz w temacie:
1. Plik jest w katalogu serwera najczęściej miejsce <instalacji serwera>/www ?
2. w przeglądarce wpisujesz http://localhost/nazwa_pliku.php lub http://nazwaKomputera/nazwa_pliku.php ?
3. Wspomniana wyżej zawartość pliku dział ?
JoShiMa
Cytat(fifi209 @ 28.03.2011, 21:45:22 ) *
Brak średnika. Tak ciężko dostrzec ?


Ha haha... I wcale nie musi go tam być.
sadistic_son
BRAWO. Ustaliliście już, że tego średnika tam być nie musi, choć ze względów praktycznych być powinien, mimo że skrypt będzie działać w 100% sprawnie i bez niego.
Moglibyśmy przyjąć to już za pewnik i więcej do tego nie wracać? Jeśli ktoś będzie miał jednak nieodpartą pokusę dalej upierać się, że średnik musi tam być to niech łaskawie zajrzy najpierw do manuala i uważnie przeczyta to:
Cytat
Zamykający znacznik bloku kodu PHP automatycznie implikuje średnik; nie musisz mieć średnika zamykającego ostatnią linię z bloku PHP.
To samo tyczy się CSS.

A teraz wróćmy do problemu dawido000.
Otóż drogi kolego. Z Twojego kodu można otrzymać wynik jaki nam podałeś w dwóch następujących sytuacjach:
- jeśli plik ma rozszerzenie html a nie php (lub htm, xhtml itd.)
- jeśli ma rozszerzenie php ale odpalisz go bezpośrednio w przeglądarce, czyli np. prawy klik na plik -> Open With -> Firefox. I nie ma tutaj znaczenia czy serwer działa, czy jest poprawnie skonfigurowany i czy plik znajduje się w folderze z httpdocsami. Po takim uruchomieniu go przeglądarka potraktuje go jako html.

Być może jest więcej przypadków kiedy tak się zachowa... nie wiem.

Dalej... napisałeś
Cytat
Kiedy uruchamiam ten plik w przeglądarce firefox, wyskakuje mi wykrzaczenie we fragmencie użytego kodu php:
Dla 100% pewności zapytam, a właściwie wyjaśnię co następuje:
- plik ten musi mieć rozszerzenie php
- musi znajdować się w folderze serwera , na przykład C:\Program Files\WebServ\httpd
- serwer musi być uruchomiony, a przynajmniej Apache odpalony
- skrypty php odpalasz wpisując w przeglądarce np: http://localhost/prztworzzamowienie.php Plik prztworzzamowienie.php odpali się jeśli znajduje się w folderze httpd, zakładając że nie zmieniłeś przy instalacji ścieżki domyślnej. Kliknij na ten link i sprawdź co się stanie.

Idąc dalej nie wyobrażam sobie jak musiałbyś namieszać w konfiguracji serwera aby powyższy kod Ci nie zadziałał. Domyślna konfiguracja absolutnie powinna wykonać Twój skrypt tak jak należy.
Podsumowując:
1) Wszystkie poniższe zapisy są poprawne i wyświetlą to samo:
  1. <?php
  2. echo("<p>Zamówienie przyjęte</p>");
  3. echo '<p>Zamówienie przyjęte</p>';
  4. echo "<p>Zamówienie przyjęte</p>";
  5. echo ("<p>Zamówienie przyjęte</p>");
  6. echo ('<p>Zamówienie przyjęte</p>'); ?>
  7. <p> <?php echo 'Zamówienie przyjęte'; ?></p>
  8. <p> <?php echo 'Zamówienie przyjęte' ?></p>
  9. //i jeszcze parę innych kombinacji tych powyższych

2) Pojawiają Ci się takie krzaki bo zapewne zapisujesz plik w innym kodowaniu niż je ustawiłeś. W swoim kodzie masz iso-8859-2 i takie samo musisz wskazać przy zapisie w programie w którym edytujesz plik. Zwykły notepad nie daje tej opcji kodowania przy zapisie. A przynajmniej mój nie.

Sprawdź to wszystko bo to MUSI działać.
Twój problem można by opisać tak: wstawiam wodę w czajniku ale nie chce się zagotować. I teraz na forum kucharskim ludzie Ci podpowiadają abyś sprawdził czy w kuchni nie ma temperatury -90 stopni C, czy czajnik nie stoi pod kranem z lecącą zimną wodą, czy czajnik nie ma wbudowanego klimatyzatora, kłócąc się jednocześnie że brak gwizdka nie powinien zaburzyć gotowania wody. Ale nikt nie zapyta czy pali się pod nim gaz bo napisałeś, że wstawiasz wodę, nie tłumacząc jednak w jaki sposób. A każdy przyjął zapalenie gazu za oczywiste biggrin.gif

PS Daję głowę, że odpalasz plik bezpośrednio tak, jak to opisałem wyżej, zamiast przez wpisanie adresu w przeglądarce. Daj znać co było nie tak.
desperat666
CZAJNIK exclamation.gif! AAHHAHAHHHAHAH, ROTFL
PlayKiller
Cytat
wyskakuje mi wykrzaczenie


Jak mamy to rozumieć...?


Opisz dokładnie co robisz, bo z tego co piszesz wynika na to, że plik z kodem PHP odpalasz prosto w przeglądarce.
foxbond
offtopic.gif

Może być także:
  1. <?php='zam. przyjęte!' ?>

Nie ma co się tutaj kłócić, tak jak napisał sadistic_son, autor zapewne odpalał plik bezpośrednio, a nie przez 'http://localhost/[...]'
dawido000
Skrypt prztworzzamowienie.php jest wywoływany z poziomu innego pliku, który znajduje się w tym samy folderze (apache/httpd). Kod tego pliku jest zapisany w formie html i wygląda tak:

  1. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  2. <form action="przetworzzamowienie.php" method=post>
  3. <table border=0>
  4. <tr bgcolor=#cccccc>
  5. <td width="150">Produkt</td>
  6. <td width="15">Ilość</td>
  7. </tr>
  8. <tr>
  9. <td>Opony</td>
  10. <td align="center"><input type="text" name="iloscopon" size="3" maxlength="3"></td>
  11. </tr>
  12. <tr>
  13. <td>Olej</td>
  14. <td align="center"><input type="text" name="iloscoleju" size="3" maxlength="3"></td>
  15. </tr>
  16. <tr>
  17. <td>Świece zapłonowe</td>
  18. <td align="center"><input type="text" name="iloscswiec" size="3" maxlength="3"></td>
  19. </tr>
  20. <tr>
  21. <td colspan="2" align="center"><input type="submit" value="Złóż zamówienie"></td>
  22. </tr>
  23. </form>


Jeżeli chodzi o wywoływanie za pośrednictwem localhost to macie rację - skrypt uruchamia się poprawnie. Ale co z kodem powyżej? Wiadomo, że ten plik wywołuje plik php i wszystko dzieje się w przeglądarce, więc dlaczego nie widać napisu?
pajaa1981
Skoro action jest na ten skrypt, to już niemożliwe, że się nie wykona. Błąd leży po Twojej stronie. To jest tak jakbyś zadzwonił do mnie i powiedział: "Słuchaj, mam problem, auto mi nie odpala, co jest nie tak?". Nie możemy stwierdzić co źle robisz. Sprawdź czy adres w przeglądarce to http://localhost może być od groma takich przypuszczeń, ale z słabego opisu nikt nie wyczaruje celnej odpowiedzi.
dawido000
Udało się. Wpisałem w formularzu po prostu pełny adres: "http://localhost/przetworzzamowienie.php". Lecz zastanawia mnie jedna rzecz, przecież te pliki są w jednym katalogu więc nie powinna być wymagana pełna ścieżka.
sadistic_son
Jeśli plik z formularzem byłby też php to wtedy wystarczyłoby tak jak zrobiłeś wcześniej. Ale jeśli to zwykły html to wtedy takie wpisanie ścieżki nie "zmusza" serwera do przetworzenia pliku z action jako php, czyli odpala się on bezpośrednio z przeglądarki.

Prosty problem a ilu ludzi zaciągniętych do roboty, ile wywodów, kłótni, spekulacji biggrin.gif
Czyli co? Problem rozwiązany?
wmatusiak
Cytat(sadistic_son @ 29.03.2011, 19:36:45 ) *
Jeśli plik z formularzem byłby też php to wtedy wystarczyłoby tak jak zrobiłeś wcześniej. Ale jeśli to zwykły html to wtedy takie wpisanie ścieżki nie "zmusza" serwera do przetworzenia pliku z action jako php, czyli odpala się on bezpośrednio z przeglądarki.

Prosty problem a ilu ludzi zaciągniętych do roboty, ile wywodów, kłótni, spekulacji biggrin.gif
Czyli co? Problem rozwiązany?

Mam rozumieć że jak mam pliki test.html i test.php w tym samym katalogu i wejdę http://localhost/test.html to ten action w tym pliku nie zadziała.
Bo tak zrozumiałem twoją wypowiedź a to jest co najmniej nieprawda.
dawido000
Cytat(wmatusiak @ 29.03.2011, 20:10:32 ) *
Mam rozumieć że jak mam pliki test.html i test.php w tym samym katalogu i wejdę http://localhost/test.html to ten action w tym pliku nie zadziała.
Bo tak zrozumiałem twoją wypowiedź a to jest co najmniej nieprawda.


Sprawdziłem to - działa. Nie potrzebna jest żadna ścieżka. Jeżeli pliki są w katalogu serwera to odpalenie np. test.html (z którego wywołuje się test.php) musi się odbyć poprzez przeglądarkę. To jest warunek konieczny. Co prawda problem był banalny no ale jesteśmy przecież w dziale PRZEDSZKOLE smile.gif.

Dziękuję za wypowiedzi. Oficjalnie zamykam temat.
sadistic_son
Cytat(wmatusiak @ 29.03.2011, 20:10:32 ) *
Mam rozumieć że jak mam pliki test.html i test.php w tym samym katalogu i wejdę http://localhost/test.html to ten action w tym pliku nie zadziała.
Bo tak zrozumiałem twoją wypowiedź a to jest co najmniej nieprawda.

Jeśli wpiszesz localhost/plik.html to zadziała, natomiast jeśli po prostu uruchomisz w przeglądarce go to nie zadziała.
wmatusiak
Mi tego nie tłumacz wink.gif wróć do swojego posta przeczytaj i odpowiedz mi na pytanie gdzie tam pisze coś o otwieraniu bez serwera ?
bo dla mnie pisze że action bez pełnego url'a nie działa jak plik jest HTML a to nie jest prawdą.
Bez serwera to tak naprawdę nieważne czy ten plik ma rozszerzenie PHP HTML czy cokolwiek innego nie zadziała.
sadistic_son
Jak już to jest napisane....
Cytat
action bez pełnego url'a nie działa jak plik jest HTML
Nie, tak nie napisałem i tak nie miało to brzmieć. Nie zostanie wykonany skrypt php w takiej sytuacji.
wmatusiak
Cytat(sadistic_son @ 30.03.2011, 01:10:49 ) *
Jak już to jest napisane....

Częściej używam PHP niż polskiego w piśmie czego efekty zresztą widać.
Cytat(sadistic_son @ 30.03.2011, 01:10:49 ) *
Nie, tak nie napisałem i tak nie miało to brzmieć. Nie zostanie wykonany skrypt php w takiej sytuacji.

A jak mam rozumieć to
Cytat
Jeśli plik z formularzem byłby też php to wtedy wystarczyłoby tak jak zrobiłeś wcześniej.
Ale jeśli to zwykły html to wtedy takie wpisanie ścieżki nie "zmusza" serwera do przetworzenia pliku z action jako php

Nie prawda. I nieważne jak będziesz się bronił nie zgodzę się że z tego zdania wynika że trzeba odpalać pliki z serwera a nie z prosto z dysku.

Kończmy dyskusję, autor postu dowiedział się co chciał, problem rozwiązany.
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.