PHP: nasıl Sihirli Tırnaklar AÇIK olduğunda (doğru) diziler kaçan tırnak kaldırmak için

2 Cevap php

Eğer Sihirli Tırnaklar AÇIK olduğunda bildiği gibi, tek bir tırnak değerleri ve ayrıca tuşları kaçtı edilir. Çoğu çözüm Magic zamanında sadece unescape değerleri değil, tuşları Parite kaldırmak için. Ben anahtarları ve değerleri Unescape edecek bir çözüm arayan kulüpler ...

Ben PHP.net üzerinde bu kod parçası öğrendim:

$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process))
{
    foreach ($val as $k => $v)
    {
        unset($process[$key][$k]);
        if (is_array($v))
        {
            $process[$key][stripslashes($k)] = $v;
            $process[] = &$process[$key][stripslashes($k)];
        }
        else
        {
            $process[$key][stripslashes($k)] = stripslashes($v);
        }
    }
}
unset($process);

Ama ben beğendim "ve" yok Ben geçmişte this one gibi hatalar var gibi referanslar ve diziler ...

Yukarıda olandan zamanında Sihirli Tırnaklar (anahtarlar ve değerler) Unescape için "iyi" bir yolu var mı?

2 Cevap

Ben bu biraz temiz ve referans hataları önler düşünüyorum:

function unMagicQuotify($ar) {
  $fixed = array();
  foreach ($ar as $key=>$val) {
    if (is_array($val)) {
      $fixed[stripslashes($key)] = unMagicQuotify($val);
    } else {
      $fixed[stripslashes($key)] = stripslashes($val);
    }
  }
  return $fixed;
}

$process = array($_GET,$_POST,$_COOKIE,$_REQUEST);
$fixed = array();
foreach ($process as $index=>$glob) {
  $fixed[$index] = unMagicQuotify($glob);
}
list($_GET,$_POST,$_COOKIE,$_REQUEST) = $fixed;
array_walk_recursive($_POST, 'stripslashes');

GET ve COOKIE'den için aynı şeyi.