![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przykładowy kod z książki:
$output_form = false; - czy inicjowanie zmiennej na wartość na false jest konieczne? bez tego działa tak samo. Bez $output_form = false; to prawidłowy kod? Jeśli nie, to czemu? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 6 Dołączył: 15.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Teoretycznie będzie działać. W praktyce zresztą pewnie też, ale przy bardziej skomplikowanych skryptach możesz się na tym mocno przejechać.
Bezpieczniej jest definiować zmienne, chociażby ze względu na to, że niektóre serwery przepisują od razu wartość z linka do zmiennych (decyduje o tym register_globals w konfiguracji). Wywołanie skryptu http://serwer/skrypt.php?output_form=1 spowodowałoby wtedy zarejestrowanie zmiennej $output_form z wartością odczytywaną jako true i mimo podania wszystkich pól skrypt i tak wykonałby . W tym przypadku może akurat to nie jest groźne, ale gdybyś np. pisał skrypt do logowania to miałoby to krytyczne znaczenie. Pewnie się przekonasz, że w niektorych przypadkach opłaca się też definiować array() przed jego wypełnianiem (mimo tego, że można nie definiować), szczególnie przy wykorzystywaniu go później w jakichś funkcjach przyjmuących za parametr tylko tablice. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nic nie zrozumiałem co użytkownik napisał powyżej
![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 1 Dołączył: 2.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
return false czyli kończy wykonywanie pracy w np. warunku lub blokuje ewentualne przechodzenie.
Jest to konieczne w niektórych wypadkach ;] Ten post edytował wolacinio 12.08.2010, 08:43:51 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
W tym kodzie, jesli nie dasz $output_form = false; i nigdzie po drodze nie wystąpią warunku ze bedziesz miał $output_form = true;
to dostaniesz błąd NOTICE. Pewnie go nie widzisz bo masz wyłączone jego wyświetlanie. Tak więc dobra rada: WŁĄCZ wyświetlanie wszystkich błędów i pisz poprawnie tak, by te błędy się nie wyswietlały. Tu masz napisane jak to włączyc Temat: Jak poprawnie zada pytanie
Powód edycji: [nospor]:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Po dodaniu
error_reporting(E_ALL); ini_set('display_errors','1'); i usunięciu $output_form = false; nie widzę żadnych komunikatów z błędami |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A powinienes mieć, kod ewidentnie na to wskazuje
![]() Może coś źle dodałes ps: blad powinien wystąpic gdy pojawi sie tekst "Wysłano e-mail pod adres" Wowczas zachodzą warunki na pojawienie się tego bledu ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cały kod wygląda tak i nie ma komunikatu z błędami
Tak, pojawia się komunikat z błędem po wyświetlaniu tekstu: "Wysłano e-mail pod adres" Ugh, ale początki z nauką php są ciężkie sad.gif Ten post edytował boy76 13.08.2010, 11:52:39 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Tak, pojawia się komunikat z błędem po wyświetlaniu tekstu: "Wysłano e-mail pod adres" ![]() I już wiesz czemu masz ją inicjalizować. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chcę się upewnić, czy dobrze zrozumiałem działanie kodu...
Po naciśnięciu przycisku Wyślij (po wpisaniu tematu i treści wiadomości) - czyli został spełniony warunek if ((!empty($subject)) && (!empty($text))) i pojawia się tekst "Wysłano e-mail pod adres". Skrypt nie wie czy ma wyświetlić formularz, dlatego wtedy trzeba ustawić $output_form = false; tak? |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat , dlatego wtedy trzeba ustawić $output_form = false; tak? Nie. na FALSE masz ustawić dlatego, by domyslnie ta zmienna miała jakąś wartość. Jesli jej nie ustawisz to odwolanie do $output_form też da ci false, ale jednoczesnie dostaniesz też NOTICE. A pisanie skryptów, że generują one błedy NOTICE jest delikatnie rzecz mówiąc "nieładnie" ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:20 |