Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zasięg zmiennych
Forum PHP.pl > Forum > Przedszkole
sticker
Mam takie pytanie bo bardzo mnie to ciekawi a w php dopiero raczkuje. Wypisze pytania w punktach bo tak bedzie bardziej przejrzyście:

1. Po wysłaniu formularza metodą POST do action="cos.php" zmienne w tablicy asocjacyjnej POST sa zmiennymi:
- globalnymi dla "cos.php" i dostępnymi w każdej funkcji? Czy należy użyć w funkcji słowa kluczowego global Według mojego testu są dostępne bez potrzeby użycia "global" ale czy to tylko psikus czy tak jest zawsze? (bo mam nawyk z C że nie koniecznie coś działa tak jak by sie chciało mimo iż dobrze wyświetla)

2. Gdy połącze sie z baza mysql za pomocą funkcji zdefiniowanej w skrypcie a nastepnie wykonuje operacje na tej bazie w INNYCH funkcjach (dalej w tym samym skrypcie) to czy potrzebuje zadeklarować jakas zmienna ktora przechowa uchwyt do tej bazy poza funkcja polaczenia tak by mogl byc dostepny w innych funkcjach (innymi słowy czy musze predefiniować zmienna zanim sie połącze a póżniej przypisać do niej ucwyt i w funkcjach odwoływac sie do niej przez słowo kluczowe global) Pytanie pojawiło sie z tego powodu że praktyka oferuje możliwość poruszania sie bez uchwytu i wszystko działa - powód pytania jak w pkt 1.

  1. <?php
  2.  
  3. $polaczenie1=1;
  4. function connect_db($host,$user,$password){
  5.  global $polaczenie1;
  6.  if( $polaczenie1 = mysql_connect($host, $user,$password) ):
  7.  print&#092;"Polaczono z baza<br>\";
  8.  mysql_select_db($database,$polaczenie1);
  9.  else:
  10. print&#092;"Brak połaczenia\";
  11.  endif;
  12. }
  13.  
  14. function disconnect_db(){
  15.  global $polaczenie1;
  16.  if(mysql_close($polaczenie1)):
  17.  print&#092;"<br>Odlaczono od bazy\";
  18.  endif;
  19. }
  20.  
  21. ?>


pytanie powstało ponieważ zauwazyłem że to działa również tak
  1. <?php
  2.  
  3. function connect_db($host,$user,$password){
  4.  if( $polaczenie1 = mysql_connect($host, $user,$password) ):
  5.  print&#092;"Polaczono z baza<br>\";
  6.  mysql_select_db($database,);
  7.  else:
  8. print&#092;"Brak połaczenia\";
  9.  endif;
  10. }
  11. function disconnect_db(){
  12.  if(mysql_close()):
  13.  print&#092;"<br>Odlaczono od bazy\";
  14.  else:
  15. print&#092;"<br>Nie udało sie odłączyć od bazy\";
  16.  endif;
  17. }
  18.  
  19. ?>

a wiec nie wymagając uchytu Błąd w tej chwili nie jest generowany.

3. Moze ktos wie na jakiej zasadzie działa zamiana w formularzu pola typu password na *. Czy to jest po prostu zczytywanie znaku -> wyswietlenie * -> dodanie zczytanego znaku do łańcucha stanowiącego hasło i dalej od poczatku az do wykrycia ENTERA ? Czy może jest to w jakis sposób zakodowane?

Dzięki za odpowiedzi Pozdrawiam
dasko
1. tablica $_POST jest superglobalna, czyli zawsze globalna, i na dodatek w każdym skrypcie.

2. Jeśli otwierasz jedno połączenie z bazą, to nie ma potrzeby definiowania uchwytu.

3. -> Po stronie przeglądarki
dr_bonzo
2. Jesli nie wskazesz uchwytu polaczenia to zostanie uzyty ostatnio otwarty/uzywany, ale ja wole ZAWSZE wskazywac uchwyt -- dla jasnosci i unikniecia potencjalnych bledow, gdy np. laczysz sie z kilkoma bazami w jednym skrypcie.

3. Pole password rozni sie od pola typu text tym ze zamiast wyswietlania znakow wyswietla *.
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.