[#1] PHP-przekazywanie zmiennych przez lacza
Witam

Napisałem bardzo proste skrypty w PHP operujące na bazie danych MySql. Problem :S jest w tym, że skrypty działają dobrze na lokalnej maszynie, tzn. na moim komputerze-serwerze w domu (bez dostepu do netu) jest ok. Natomiast te same skrypty na serwerze zdalnym już nie działają.

Problem tkwi w tym, że zmienna nie jest przekazywana do innego skryptu php. Zmienną przekazuję za pomocą łącza.

Skrypt "show_data.php" generuje link
http://robert/delete_data.php?klient_id=1

Kiedy wejdzie się przez ten link. Zmienna "klient_id" w skrypcie "delete_data.php" powinna się ustawić na wartość "1" tak jak to pokazuje link w przeglądarce. Niestety, kiedy odczytuje tą zmienną w skrypcie delete_data.php to ma ona wartość "0".

Na lokalnym serwerze u mnie w domu ta zmienna ustawia się prawidłowo na odpowiednią wartość (dla danego wiersza tablicy klient z mojej bazy mysql).

Dlaczego tak się dzieje? Czy to wina źle skonfigurowanego serwera (gdyż skrypty lokalnie działają)?

Zastanawiam się czy może poniższy wiersz ma znaczenie jeśli pracuje się na zdalnym serwerze. Podawałem pełną ścieżkę dostępu do pliku show_data.php lecz to też nie pomogło. Kiedy pracuje lokalnie wrzucam pliki do /var/usr/www/ (chyba taka ścieżka). Zaś na zdalnym serwerze wrzucam do /home/robert/public_html/ . Może właśnie w tym wierszu tkwi problem, o którym piszę.

print(" Powrot do przegladania danych ");


Dołączam niżej skrypty:

show_data.php
-------------------------


Wyswietlenie danych z bazy

Obsluga klienta

Dodaj


Lista klientow

$db = mysql_connect("localhost", "root");
mysql_select_db("gaussnet", $db);
$sql = "SELECT * from klient";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$nr_klienta = $row["klient_id"];
printf("

Nr = %d, Nazwisko = %s, Imie = %s

", $nr_klienta, $row["nazwisko"], $row["imie"]);
print(" Usun ");
}
?>





delete_data.php
-----------------------


Kasowanie danych z bazy

printf("klient_id = %dn", $klient_id);
$db = mysql_connect("localhost", "root");
mysql_select_db("gaussnet", $db);
$sql = "DELETE from klient where klient_id='$klient_id'";
mysql_query($sql);
print("nDane zostaly usuniete.n");
print(" Powrot do przegladania danych ");
?>




Pozdrawiam
[#2] Re: PHP-przekazywanie zmiennych przez lacza

@Robert Jackowski, post #1

Może to być wina konfiguracji serwera, raz miałem podobny przypadek.

Spróbuj zastosować echo zamiast funkcji print().

[#3] Re: PHP-przekazywanie zmiennych przez lacza

@Robert Jackowski, post #1

To wina konfiguracji serwera. Spróbuj umieścić na początku skryptu taka linijkę:
extract(array_merge($_GET,$_POST,$_COOKIE,$_SESSION),EXTR_OVERWRITE);
U mnie pomogło:)
[#4] Re: PHP-przekazywanie zmiennych przez lacza

@szulu, post #3


Dzięki za info. Polecenie echo nie pomogło. Spróbuje zastosować Twój sposób.

Pozdrawiam
[#5] Re: PHP-przekazywanie zmiennych przez lacza

@szulu, post #3

Wielkie dzięki!!! Działa!!!

Teraz pogonię admina serwera żeby prawidłowo ustawił co trzeba. Pewnie w php coś zmienić musi.

Pozdrawiam
Robert
[#6] Re: PHP-przekazywanie zmiennych przez lacza

@Robert Jackowski, post #5

Dupa a nie wina admina, masz wylaczone register_globals i tyle. Ja na miejscu admina bym tego nie włączał za zadne skarby.

jak zmienna odczytujesz z adresu url to uzywasz $_GET['zmienna'] zamiast $zmienna

po drugie slyszales o czym takim jak SQLInject albo PHP/HTML Inject?

jak oczekujesz parametrow w postaci liczb i uzywasz ich w zapytaniach to wykorzystaj intval($zmienna)... Jak nie bedziesz stosowal zabezpieczen to zobaczysz co sie stanie predzej niz myslisz ;)

Gwoli przypomnienia:

$_POST - zmienne z formularzy
$_GET - zmienne z adresu ur;
$_SESSION - zmienne sesyjne
$_COOKIE - zmienne z ciasteczek

P.S.
Tylko mi nie mow ze uzywasz session_register bo sie załamę....

[#7] Re: PHP-przekazywanie zmiennych przez lacza

@Leaf, post #6

Leaf napisał(a):

> Dupa a nie wina admina, masz wylaczone register_globals i tyle.
> Ja na miejscu admina bym tego nie włączał za zadne skarby.
> jak zmienna odczytujesz z adresu url to uzywasz
> $_GET['zmienna'] zamiast $zmienna

Admin nie był w stanie mi pomóc. Raczej nie wiedział w czym jest rzecz, ale w sumie chyba nie musi o tym wiedzieć... Więc sam do tego doszedłem. Można o tym przeczytać, np. tu:

http://www.linuxfan.pl/dyskusje/pcol.2002/09.2002/4279.php3

> po drugie slyszales o czym takim jak SQLInject albo PHP/HTML
> Inject?

Nie słyszałem. To moje pierwsze skrypty w php, ale poczytam oczywiście sobie o tym.

> jak oczekujesz parametrow w postaci liczb i uzywasz ich w
> zapytaniach to wykorzystaj intval($zmienna)... Jak nie bedziesz
> stosowal zabezpieczen to zobaczysz co sie stanie predzej niz
> myslisz ;)

> P.S.
> Tylko mi nie mow ze uzywasz session_register bo sie załamę....

Nie używam.

Pozdrawiam
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem