Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: referencje - dostęp do nazw zmiennych
Forum PHP.pl > Forum > PHP
sobstel
chciałem napisać własną funkcję, którą wywoływało by się np. get($zmienna) jej zadaniem byłoby utworzenie "bezpiecznego" ciagu z get tj. addslashes($_GET["zmienna"]);

np.

[php:1:fd10e8f875]<?php
function (&$zmienna) {
questionmark.gifquestionmark.gif
$zmienna=addslashes($_GET["zmienna_get"]);
}
get($zmienna_get);
?>[/php:1:fd10e8f875]

problem : w jaki sposob uzyskac dostep do nazwy zmiennej tj. $zmienna_get?questionmark.gif
(compactem moge uzyskac tylko do $zmienna[/i]
scanner
Prosże wyedytowąc posta, stosując BBCode - w przeciwnym przypadku wątek zostanie zamkniety

P.S. Za bardzo nie rozumiem co chcesz osiągnąć.
sobstel
Cytat
Za bardzo nie rozumiem co chcesz osiągnąć.


najprosciej mowiac chcialbym ulatwic sobie zycie. zamiast za kazdym razem pisac $zmienna=addslashes($_GET["zmienna"]); móc wpisać get($zmienna); ktora by dzialala dokladnie w ten sam sposob (zakladamy ze registar globals sa wylaczone).
scanner
Coś takiego?[php:1:0f7c558586]<?php
function GetSuperGlobal( $strTable, $strVar )
{
$strTable = '_'.strtoupper( $strTable );
return addslashes( $$strTable[$strVar] );
}
?>[/php:1:0f7c558586]wywołanie:[php:1:0f7c558586]<?php
echo GetSuperGlobal( 'get', 'foo' );
?>[/php:1:0f7c558586]
sobstel
kod nie dziala, ale ograniczmy się do :


[php:1:b9e1c4b61b]<?php
function GetSuperGlobal($strVar)
{
return addslashes($_GET[$strVar]);
}

echo GetSuperGlobal('foo');
?>[/php:1:b9e1c4b61b]

jest to prawie to o co mi chodzi, jednak wykrozystujac powyzsza funkcje musze napisac takie cos $foo=GetSuperGlobal('foo');

natomiast chcialbym zeby funkcja zwracala np.TRUE,
a juz samo wywolanie GetSuperGlobal('foo'); (albo GetSuperGlobal($foo)winksmiley.jpg powodowalo przypisanie do $foo obrobionajuz $_GET["foo"]

chcialem to zrobic przez referencje, ale nie mam dostepu do nazwy zmiennej przekazywanej do funkcji...
scanner
Ja wciąz nie rozumiem Twojego problemu. COś mieszasz.
Funckaj ma zwracać np. true, wykonywac addslashes na czymś, a zwracać to coś?

Nie kapuję...

BTW: mój kod pidałem z palca, więc może nie do końca działać.
sobstel
Cytat
Ja wciąz nie rozumiem Twojego problemu. COś mieszasz. Funckaj ma zwracać np. true, wykonywac addslashes na czymś, a zwracać to coś?


tak jak napisałem. robei wywolanei get($zmienna) albo get ("zmienna");
i w zamian dostaje "obrobionego" juz $_GET["zmienna"] przydzielonego do zmiennej $zmienna. wlasciwie nie obchodzi mnie co zwraca funkcja, bo nie wywoluje $zmienna=get($zmienna); tylko get($zmienna);

przykladowo ponizszy kod zrobi to co chce ze zwykla zmienna :

[php:1:04f8d13abd]<?php
function get(&$fzmienna) {
$fzmienna=addslashes($fzmienna);
return 0;
}

get($jakas_zmienna); // a nie $jakas_zmienna=get($jakas_zmienna); !!!!
?>[/php:1:04f8d13abd]

wywolanie powyzszego kodu spowoduje, ze dostane "obrobioną" już zmienną $jakas_zmienna
enceladus
Ja ideę zrozumiałem - jest faktycznie trochę nietypowa, ale:
[php:1:e6d2330acc]
<?php
function get($varname)
{
global $$varname;
if (isset($_GET[$varname])) {
$$varname = addslashes($_GET[$varname]);
return true;
} else {
$$varname = '';
return false;
}
}

get("asx");

echo $asx;
?>
[/php:1:e6d2330acc]

Działa przez podanie nazwy zmiennej - nie wiem czy się da bezpośrednio przez podanie zmiennej. Generalnie jest to metoda BARDZO niepoprawna - zmiennej z GET-a przenosi do przestrzeni globalnej zmiennych - tak więc bardzo łatwo coś nadpisać tym sposobem...
sobstel
dzieki za probe rozwiazania problemu, ale jak sam zauwazyles umieszczenie jej jako zmiennej globalnej nie jest najlepszym pomyslem.
wyglada wiec na to, ze nie jest to mozliwe.
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.