2017-04-15 45 views
6

20 kullanıcı girişi vars ve [0..19], $ _ SESSION [ 'var' [0..19]], & $ var arasına çalışmak istiyorsanız gibi $ _POST [ 'var' [0..19]],:diziler ve foreach girişi daha verimli vars çalışmak için döngüler

$var0 = $_SESSION['var0'] = $_POST['var0']; 

Bunun verimli kullanarak diziler ve foreach döngüsü yapabileceği nasıl?

Ek ayrıntılar: Yani

başlangıçta ben gibi bir şey denemek düşünüyordum:

$inputVars = array('var1'=>$var1, 'var2'=>$var2, 'var3'=>$var3, 'var4'=>$var4, 'var5'=>$var5) 

$inputVarsS = array($_SESSION['inputVars = array('svar1'=>$_SESSION['var1']'], 'svar2'=>$_SESSION['var2'], 'svar3'=>$_SESSION['var3'], 'svar4'=>$_SESSION['var4'], 'svar5'=>$_SESSION['var5']) 

$inputVarsP = array($_POST['inputVars = array('pvar1'=>$_POST['pvar1']'], 'pvar2'=>$_POST['pvar2'], 'pvar3'=>$_POST['pvar3'], 'pvar4'=>$_POST['pvar4'], 'pvar5'=>$_POST['pvar5']) 

ve sonra ben böyle bir şey yapabileceğini tahmin:

$inputVarsS['svar1'] = $inputVarsP['pvar1']; 

ayarlamak için oturum değeri svar1 kaydedilen değer pvar1. Ama orada düşünüyorum gerçekten atamaları bu tür yapmak için daha etkili bir yolu olmalı.

ben sadece kolayca $ inputVars dizi var ve tuşlara POST OTURUM değerlerini ya atayabilir düşünüyorum, ama aynı anda kullanılabilir POST ve OTURUM değerlerine sahip ne isterseniz? Sonra birden fazla diziye ihtiyacım var mı?

+0

'foreach ile erişebilirsiniz ($ $ k => $ v) olarak var {... $ var [$ k] ... $ _SESSION ['var'. $ k] ... $ _POST ['var'. $ k]} ' – splash58

cevap

1

Bir değişken adı tanımlamak için $$ kullanabilirsiniz, ama bir dizi $ değişkenler kullanmak daha iyi olur.

$ var0, $ var1, .... ile

ve dizi $ vars ile echo $var4

foreach(range(0, 19) as $index) 
{ 
    $var = 'var' . $index; 
    $$var = $_SESSION[$var] = $_POST[$var]; 
} 

gibi bunlara erişmenize ve echo $vars[4]

foreach(range(0, 19) as $index) 
{ 
    $var = 'var' . $index; 
    $vars[$var] = $_SESSION[$var] = $_POST[$var]; 
} 
0

Sorunuz bilgileri eksik olduğundan, cevabım yanılabilir.

Böyle bir bütün dizi kopyalayabilirsiniz:

$_SESSION['post'] = $_POST; 

Sonra o değişkenleri ayıklamak istediğinizde, şunları kullanabilirsiniz: $_POST['var0'] varsa

extract($_SESSION['post']); 

Yani $var0 çıkartacaktır.

Ancak, koyun ASLA küresel kapsamda verileri yayınlanmıştır. Hackerlar değişkenlerini kodunuza enjekte etmek için bunu kullanabilir. Lütfen önce girişi filtreleyin. Daha iyi Biraz şudur:

extract($_SESSION['post'],EXTR_PREFIX_ALL,'post'); 

Yani $post_var0 yerine $var0 olacaktır. Ancak yine de, sadece istediğiniz değişkenleri aldığınızdan ve değerlerini filtrelediğinizden emin olun.