2011-11-06 12 views
6

Jak przekazać zmienną jako wartość klawisza tablicy $ _POST w PHP? Czy to nie jest możliwe?

$test = "test"; 
echo $_POST[$test]; 

Dzięki

+2

To, co zademonstrujesz, powinno zadziałać, ale nie jestem pewien, co próbujesz zrobić? –

+0

Och, Boże, działa. Kolejny fragment kodu wyrzucał go. – Dietpixel

Odpowiedz

9
$_POST['key'] = "foo"; 
echo $_POST['key']; 

Gdybym rozumiane prawo, chcesz ustawić klucz $_POST.

4

Tak, tak można:

$postName = "test"; 
$postTest = $_POST[$postName]; 
$_POST["test"] == $postTest; //They're equal 
0

działa tak jak mówiłeś ...

Przykład:

// create an array of all the GET/POST variables you want to use 
$fields = array('salutation','fname','lname','email','company','job_title','addr1','addr2','city','state', 
       'zip','country','phone','work_phone'); 

// convert each REQUEST variable (GET, POST or COOKIE) to a local variable 
foreach($fields as $field) 
    ${$field} = sanitize($_POST[$field]); 
?> 

aktualizowany w oparciu o komentarze i downvotes ....

nie jestem, jak sugerowano poniżej w komentarzach zapętlanie wszystkich danych i dodawanie do zmiennej - pętla z wcześniej ustaloną listą zmiennych i przechowywanie ich w zmiennych ...

Zmieniłem metodę uzyskiwania d ata

+1

To powinno prawie nigdy się nie udać, mogę łatwo wstrzyknąć kod lub zmienić zmienne systemowe i zebrać informacje o systemie, modyfikując ciąg zapytania !! – Fabrizio

+0

@Fabrizio Przepraszamy za moją ignorancję - w jaki sposób można wstrzyknąć mój kod - tablica jest po stronie serwera? jak to się różni od wymieniania każdego z nich – ManseUK

+0

Załóżmy, że masz zmienną systemową o nazwie '$ mysql_user', a ja przekazuję zapytanie w stylu'? mysql_user = root', spróbujesz połączyć się z serwerem mysql używając użytkownika 'root'. może dać błąd na ekranie, dostarczając mi więcej informacji, niż to konieczne. Próbujesz emulować, co 'register_global' robił w PHP.jest powód, dla którego jest teraz przestarzały ;-) – Fabrizio

14

Jeśli dobrze cię zrozumiem, chcesz przekazać zmienną z jednego pliku php do drugiego za pośrednictwem postu. To na pewno jest możliwe na kilka sposobów.

1. Z HTML postaci

<form action="target.php" method="post"> 
    <input type="text" name="key" value="foo" /> 
    <input type="submit" value="submit" /> 
</form> 

jeśli klikniesz na przycisku składania, $_POST['key'] w target.php będzie zawierać 'foo'.

2. Bezpośrednio z PHP

$context = stream_context_create(array(
    'http' => array(
     'method' => 'POST', 
     'header' => "Content-type: text/html\r\n", 
     'content' => http_build_query(array('key' => 'foo')) 
    ), 
)); 
$return = file_get_contents('target.php', false, $context); 

samo jak w 1. i $return będzie zawierać wszystkie dane wyjściowe wytwarzane przez target.php.

3. Via AJAX (jQuery (JavaScript))

<script> 
$.post('target.php', {key: 'foo'}, function(data) { 
    alert(data); 
}); 
</script> 

samo jak w 2., ale teraz data zawiera wyjście z target.php.

Powiązane problemy