Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kropki i superglobalne
falkor
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


Mam dwa drobne pytania:
1.Co daja kropki wokol POST w takim zapisie i po co je stosowac:
  1. <?php
  2. $query=&#092;"UPDATE logowanie,klienci SET AdresKor='\".$_POST['adres'].\"'....cos tam dalej
  3. ?>


2.Czy poza tym ze ponizsze zapisy sa rownowazne, ktorys znich jest preferowany lub wskazany:

  1. <?php
  2. $email=$_POST['email'];
  3. echo $email;
  4. ?>

  1. <?php
  2. echo $_POST['email'];
  3. ?>


Dziekuje serdecznie za odpowiedz. (na forum jest to poruszane ale nie znalazlem konkretnej odpowiedzi) winksmiley.jpg

Ten post edytował falkor 27.03.2005, 02:08:44
Go to the top of the page
+Quote Post
Strus
post
Post #2





Grupa: Zarejestrowani
Postów: 184
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Bochnia

Ostrzeżenie: (0%)
-----


Kropki są zasadniczo potrzebne, bo one są spójnikiem. Łączą dwa stringi w jeden.

Co do pdrugiego pytania, to w pierwszym przykładzie zapisujesz zmienną email z tablicy _POST do $email i następnie wypisujesz na standardowe wyjście zmienną $email.
W drugim przykładzie robisz to bezpośrednio.

Po użyciu pierwszego, gdy chcesz gdzieś dalej w kodzie użyć $_POST['email'] możesz odwołać się do zmiennej $email, natomiast w drugim przykładzie nie możeszz tego zrobić.


--------------------
Go to the top of the page
+Quote Post
orson
post
Post #3





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam ...

kropki sa niezbedne przy takim zapisie ... tak jak powiedzial Strus, lacza one stringi ... jednak jezeli stosujesz taki zapis:
  1. <?php
  2. $zmienna = &#092;"jakis string $_POST['foo'] dalsza czesc zmiennej\";
  3. ?>
to nie sa wymagane ... jednak 1 zapis [z kropkami] jest bardziej wydajny i poprawny ... oczywisie ma to znaczenie przy wiekszych projektach gdzie jest duzo kodu ale dobre nawyki nie sa zle winksmiley.jpg

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
Vengeance
post
Post #4





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Odnośnie pytania 2:
Jeśli owa zmienna z GET/POST nei będzie jakoś specjalnie modyfikowana itd. nie ma sensu przypisywac jej do innej (krotszej nazwa) zmiennej.

Jesli zas bedziesz przeprowadzal operacje jak powiedzmy: addslashes() htmlspecialchars() substr() to warto ją przypisać zmiennej $email.

Dla samego jednego 'echo' nie ma w tym sensu.


--------------------
Go to the top of the page
+Quote Post
zbig13
post
Post #5





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


Cytat(orson @ 2005-03-27 09:42:51)
kropki sa niezbedne przy takim zapisie ... tak jak powiedzial Strus, lacza one stringi ... jednak jezeli stosujesz taki zapis:
  1. <?php
  2. $zmienna = &#092;"jakis string $_POST['foo'] dalsza czesc zmiennej\";
  3. ?>
to nie sa wymagane ...

Można chyba też tak:
  1. <?php
  2. $zmienna = &#092;"jakaś wartość i {$_POST['przykladowy_post']}\";
  3. ?>
Go to the top of the page
+Quote Post
Wave
post
Post #6





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


Ogólnie nie ma sensu używać łączenia stringów za pomocą kropek w podwójnych cudzysłowach. Jest to bez sensu i tylko wydłuża czas działania parsera. Przy czym zapis:
  1. <?php
  2. $var = &#092;"text\".$string;
  3. ?>

daje taki sam efekt jak:
  1. <?php
  2. $var = 'text'.$string;
  3. ?>
czy
  1. <?php
  2. $var = &#092;"text $string\";
  3. ?>
bądź też
  1. <?php
  2. $var = 'text'; $var .= $string;
  3. ?>
Go to the top of the page
+Quote Post
falkor
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


Dzieki...w sumie temat się wyczerpał chyba ze mielibyście jakies uwagi odnosnie drugiego pytania w polaczeniu z zagadnieniem bezpieczenstwa.Gdzies tu ktos na forum pisal zeby raczej operowac w kodzie na zwyczajnych zmiennych a nie superglobalnych (czyli zeby zawsze przypisywac)...nie wiem jak sie to ma do bezpieczenstwa (pomijajac kwestie funkcji addslashes()itp)...na pewno kod staje sie mniej przejrzysty...
Go to the top of the page
+Quote Post
zbig13
post
Post #8





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


Nie wiem czy stosowanie zmiennych superglobalnych zmienia coś w bezpieczeństwie, ale wydaje mi się, że nie. Jedyna różnica to taka, jak napisał już Vengeance, że w bardziej rozbudowanych skryptach, gdzie często używa się danej zmiennej superglobalnej, wygodniej jest przypisać ją do zwykłej zmiennej, ale w przypadku pojedynczego użycia nie ma to raczej sensu.

Ten post edytował zbig13 27.03.2005, 20:24:57
Go to the top of the page
+Quote Post
FiDO
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Przenosze na php Poczatkujacy.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Wave
post
Post #10





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


Cytat
operowac w kodzie na zwyczajnych zmiennych a nie superglobalnych

To JEST kwestia bezpieczeństwa chociażby ze względu, dajmy na to przykład:
Zapis - $_POST['var'] odnosi się do zmiennej przekazanej metodą POST, a zapis $var równie dobrze mógłby się odnosić do zmiennej przekazanej metodą GET, czyli już mamy ułatwienie dla potencjalnego włamywacza. Oczywiście późniejszy fragment: $var = $_POST['var']; nie jest tylko ułatwieniem, lecz także przyspiesza wykonanie kodu gdyż nie musimy się za każdym razem odnosić do tablicy superglobalnej. Mam nadzieję iż nie namieszałem zbytnio. smile.gif
Go to the top of the page
+Quote Post
falkor
post
Post #11





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


...A co do kropeczek (moze sie to komus przyda) to w takim zapytaniu:
  1. <?php
  2. $query_rsWyciag = &#092;"SELECT DzienWysylkiWyciagu FROM logowanie,klienci_konta,konta WHERE Identyfikator = '\".$_SESSION['MM_Username'].\"' 
  3. AND Haslo = '\".$_SESSION['MM_UserPassword'].\"' AND logowanie.NrKlienta = klienci_konta.NrKlienta AND klienci_konta.NrKonta = konta.NrKonta; &#092;";
  4.  
  5. ?>


brak kropeczek uniemozliwi wykonanie tej kwerendy (tak jest w najnowszej wersji php i MySQL...nie wiem jak w starszych).
Go to the top of the page
+Quote Post
Vengeance
post
Post #12





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Wave: poryszłeś troche inny temat odnośnie tego bezpieczeństwa.
Tu nie mowa jest o register_globals tylko o zwykłym przypisywaniu zmiennym z tablic superglobalnych ich krótszych odpowiedników.


--------------------
Go to the top of the page
+Quote Post
Wave
post
Post #13





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


Odpowiedziałem na pytanie co superglobalne mają do bezpieczeństwa (było takie), a zarazem co daje przypisywanie ich wartości do zwykłych zmiennych. Jeżeli się tego nie wyjaśni, niektórym mogą się mylić te dwie rzeczy. smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:11