Eğer bir dizi ayarlarınızı saklıyorsanız, siz) (bunları serialize ve yerine bir php dosyasına ham php yazma ve bunu içeren daha, bir metin dosyasına yazma.
Bu tercihleri için giriş sanitasyon, ve birinin adını temsil $ mypref1 demek değilseniz, form alanında bu doldurarak onları durdurma şey yok:
\"; echo \"PWNED
ve çıkan PHP olacak
<?php \$pref1 = \"$mypref\"; echo \"PWNED\"; ?>
Bu yüzden öncelikle, bir dizi tercihlerinizi saklamak ve serialize () kullanarak çok daha güvenlidir:
$prefs = array('mypref1' => 'somethingorother');
$handle = fopen ($file, 'w');
fwrite($handle, serialize($prefs));
fclose($h);
// example code demonstrating unserialization
$prefs2 = unserialize(file_get_contents($file));
var_dump($prefs == $prefs2); // should output "(bool) true"
Sorunuza, ayrıca dosya yoksa, eğer bağlantısız olduğunu belirtin. Sadece fopen ikinci argüman olarak "w" geçerek sıfır uzunlukta bunu kesebilir - elle silmeniz gerekmez. Bu (dokunmak çağrısı için ihtiyaç) inkâr, yine mtime ayarlamanız gerekir.
Dosyaya yazılır değerleri tercihleri ise yüzlerce olmadıkça, elbette her tercih, bir varsayılan olabilir? array_merge bir başına anahtar bazında üzerine yazmasına izin, bu yüzden böyle bir şey yaparsanız olacaktır:
// array of defaults
$prefs = array(
'mypref1' => 'pants',
'mypref2' => 'socks',
);
if (file_exists($file)) {
// if this fails, an E_NOTICE is raised. are you checking your server error
// logs regularly?
if ($userprefs = unserialize(file_get_contents($file))) {
$prefs = array_merge($prefs, $userprefs);
}
}
Sorunu vardır yığınları, ve tüm bunları başlatmak zorunda istemiyorum ise, sadece prefs diziye bir isset çağrı sarar bir get_preference yöntemi olabilir.
function get_preference($name, &$prefs) {
if (isset($pref[$name]))
return $pref[$name];
return null;
}
var_dump(get_preference('mypref1', $prefs));
Bu olsa yükseltir soruların tüm ötesinde, gerçeklik sizin uygulaması ile, bir şey does fopen ile yanlış gitmek olası durumunda, yine de ciddi bir başarısızlık olarak kabul edilmesi gerektiğini, ve avuç içinde Bu özelliği yararlanarak olması olasıdır kullanıcıların bir şey yanlış giderse hızlı oldukça lanetlemek sizinle irtibata olacak.