Ne fark eder ki?

3 Cevap php

Php uzman değilim ve ben a ve b arasındaki fark (1) ne olduğunu bilmiyorum.

a.) eval('return "'.base64_decode("encoded_text").'";')

b.) base64_decode("encoded_text")

-Ben DÜŞÜNÜN, bir php kod ve b sadece dizedir. Ve benim diğer soru:

C ve d arasındaki fark (2) nedir?

c.) eval('return "'.base64_decode("encoded_text").'";')

d.) eval(base64_decode("encoded_text"))

Yani 2 soru var. Kim / yardım cevap verebilir?

Teşekkürler.

3 Cevap

Case X (kısım a ve b) ve Y (bölüm c ve d) olarak 2 olgu etiket olsun.

Case X

Bunun için, her iki parça birbirinden belirgin fark yoktur. Aslında, bir kısmı bir fazlalık vardır.

Eğer yavaş yavaş onları değerlendirmek, bunu nasıl gereksiz göreceksiniz:

Part a
In this part, the difference is that you add the eval statement with return in the string for evaluation.

  1. echo eval('return "'.base64_decode("encoded_text").'";');
  2. echo eval('return "decoded_text";')'
  3. echo "decoded_text";

Part b

  1. echo base64_decode("encoded_text");
  2. echo "decoded_text";

Case Y

Bunun için, mezar fark var.

Part c

  1. echo eval('return "'.base64_decode("encoded_text").'";');
  2. echo eval('return "decoded_text";')'
  3. echo "decoded_text";

Part d

  1. echo eval(base64_decode("encoded_text"));
  2. echo eval("decoded_text"); - decoded_text veya uygun PHP kodu olmayabilir, çünkü burada bir yazım hatası olabilir.

Edit: whoops, read second question incorrectly.

İlk soru için: Bir davada eval() sebepsiz için kullanılıyor. eval() dinamik nedense bir dizeye bazı PHP kodu bina ise sadece gerekli olan ve sadece çok, very dikkatle kullanılmalıdır. Alternatif sadece doğrudan işlevini çağırma olarak kesinlikle gerekli değil.

İkinci soruya gelince, fark dize değerlendirilir ediliyor budur. Vaka (c) base-64 kod çözme "kodlanmış metin" sonucunu döndürecektir. Yani, bir kodu çözülmüş sürümünü dönersiniz. Vaka (d) birinci then PHP kodu olarak çalıştırmak için deneyin, metni deşifre edecektir. Bu nedenle (d) aslında (c), sadece kodu çözülmüş metni verir vermez, kod çözme sonucu yürütür.

Forget about eval, at this stage try not to use. You should ask what's difference between

$var = base64_decode("encoded_text")

ve

return base64_decode("encoded_text");

Çad yazdığı gibi, eval önlemek için deneyin! Sadece $ değişken kodu yürütür. Örneğin,

$var = 'base64_decode("encoded_text")';
return eval($var);