Birden çok fonksiyonu sadece son başarılı çağırır.

3 Cevap php

Ben (ayırıcı olarak ',') ile bir dize olarak benim çerez değerlerin bir dizisini saklamak. Özel bir fonksiyon set_Cookie ben patlayabilir kullanarak bunları güncelleştirmek (), implode () ve setcookie () yöntemleri () and it works great.

function set_Cookie($name, $position, $value) {
    $cookie = ($_COOKIE[$name]);
    $cookie_exp = explode(",", $cookie);
    $cookie_exp[$position] = $value;
    $cookie_imp = implode(",", $cookie_exp);
    setcookie($name,$cookie_imp);
}


Ben tek sorun ben işlevini birden çok kez aramaya çalıştığınızda olduğunu - only the last call succeeds in updating the value. Başka bir deyişle: Yalnızca 'Konum3' Aşağıdaki kodu 'değer3' ile güncellenen alacağı ancak diğer pozisyonları tüm güncellenmiş almak olmaz:

set_Cookie('cookie1','$position1','value1');
set_Cookie('cookie1','$position2','value2');
set_Cookie('cookie1','$position3','value3');


Initial cookie1 values: 0,0,0

Result: 0,0, değer3


Ne eksik?

3 Cevap

Koduna Greg'in noktayı koymak için:

function set_Cookie($name, $position, $value) {
    $cookie = ($_COOKIE[$name]);
    $cookie_exp = explode(",", $cookie);
    $cookie_exp[$position] = $value;
    $cookie_imp = implode(",", $cookie_exp);
    setcookie($name,$cookie_imp);

    $_COOKIE[$name] = $cookie_imp;
}

setcookie $_COOKIE değerini güncelleştirmek değil çağırıyor.

Sizin işlevi 3 argüman alır. Eğer aramaları pozisyon geçirerek değil gibi görünüyor. Ikinci argüman olarak değer geçirerek çerez cendereye olacaktır.

EDIT: Can you please show us your initial value of cookie1 and for each function call what position value you sent and what the result was ? Also, try making only the first two calls and in another case, make 4 calls and see if the situation of value-changes-only-at-last-call persists.