2012-03-13 3 views
0

У меня есть форма, в которую пользователь может добавлять строки. Когда эта форма отправлена, мне нужно сохранить эти значения в файлах cookie, чтобы я мог перезагрузить форму, когда страница обновляется, или пользователь покидает сайт и возвращается. У меня уже есть форма, созданная из javascript, и я ищу какой-то инструмент js или php, который автоматически сохранит и перезагрузит формы, включая dya = namic поколение форм.Как сохранить и перезагрузить динамическую форму через файлы cookie?

Спасибо!

+0

Как долго вы хотите хранить информацию, вы рассматривали сессии? – jeroen

ответ

1

Похоже, вы должны иметь возможность использовать встроенный форм-фактор jquery, а затем сохранить его в файле cookie.

//here's a little helper function to set a cookie 

function setCookie(key, value, daysUntilExpiration) { 
    var expiration = new Date(); 
    expiration.setTime(expiration.getTime()+(daysUntilExpiration*86400000)); 

    document.cookie = key + "=" + value + ";expires=" + expiration.toGMTString() + ";path=/"; 
} 

//first, get the serialized data from your dynamic form 
var formData = $("#myform").serialize(); 

//then, save it into a cookie 
setCookie("myform", formData, 30); //cookie saved for 30 days 

Чтобы вытащить его обратно, вы должны быть в состоянии просто разделить на ключ/значение с «=» в качестве разделенного символа, то проходным каждого из них, и построить форму HTML.

+1

Кстати, есть некоторые ограничения на то, сколько данных может быть сохранено в файле cookie. Вы можете ударить их, если вы храните много данных, и в этом случае вы должны сохранить это в $ _SESSION или в таблице базы данных. – Jordan

+0

Спасибо, это прекрасно! –

1

Вы можете использовать функцию setcookie() PHP для их сохранения. Вот несколько простых функций, чтобы делать то, что вы хотите. Однако это будет работать только с входами, которые имеют значения. Он не будет работать с выборами. Убедитесь, что у каждого входа другое имя, иначе это не сработает.

function SaveAll() { 
    $cookie_expires = 14; // how many days until the cookies expire 
    foreach($_POST as $col => $val) { 
     setcookie("form_".strtolower($col), $val, time()+(64000 * $cookie_expires)); 
    } 
} 

function Load($item) { 
    $item = strtolower($item); 
    if(!$_COOKIE['form_'.$item]) return null; 
    return $_COOKIE['form_'.$item]; 
} 

if($_POST['submit_button_name']) { 
    SaveAll(); 
    echo "All inputs have been saved! <BR><BR>"; 
} 

Затем просто добавьте такие вещи ко всем вашим входам.

<input name="Item01" value="<?=Load('Item01');?>" /> 
Смежные вопросы