Выигрыш в размере 20% максимум. Зато в 2 раза медленнее serialize.
Сохранять где-то историю изменений. Если при обращении к странице будет 404 ошибка вылетать, то искать в истории изменений, был ли этот url изменен. Если был, то производим замену в адресе и 301 редиректом перебрасываем на новую страницу. В противном случае возвращаем 404 ошибку.
Если изменений будет немного (до нескольких десятков тысяч), то можно их всех хранить.
<a href="http://mail.ru" id="foo">Mail</a> <form action="Navigate.asp" method="POST" name="DBNavigator" id="form1" style="display: none"> <input type="submit" name="NEWSEARCH" value="New Search"><input type="submit" name="CONTINUESEARCH" value="Search 1"> <input type="hidden" name="QUERYPAGE" value="1.htm"> </form> <form action="Navigate.asp" method="POST" name="DBNavigator" id="form2" style="display: none"> <input type="submit" name="NEWSEARCH" value="New Search"><input type="submit" name="CONTINUESEARCH" value="Search 2"> <input type="hidden" name="QUERYPAGE" value="2.htm"> </form> <script type="text/javascript"> var ref = document.referrer; var url = document.getElementById('foo'); switch(ref) { case 'http://www.domen.com/page1.html': url.href = 'http://yandex.ru'; url.innerHTML = 'Yandex'; document.getElementById('form1').style.display = 'inline'; break; case 'http://www.domen.com/page2.html': url.href = 'http://google.ru'; url.innerHTML = 'Google'; document.getElementById('form2').style.display = 'inline'; break; } </script>
Там, где \n нужно одинарные кавычки на двойные заменить
Нет, реферер за несколько страниц определить нельзя. Объект History можно использовать только для перенаправления на предыдущие страницы, ссылки оттуда вытаскивать нельзя.
По поводу форм, можно поподробнее?
Навряд ли. Поиск в массиве по-быстрее будет, чем поиск вхождения в строке. К тому же большой файл через file_get_contents лучше не загружать.
Если мы файл построчно читаем у нас ведь эта строка где-то да и остается?
RaSH, вот код
<?php$names = array('Иван Иванов', 'Сергей', 'Александр К.', 'Дмитрий С');$data = file('foo.txt');foreach ($data as $str){ $name = get_name_from_str($str); if (in_array($name, $names)) { // записываем в файл2 $str }}function get_name_from_str($str){ $str_parts = explode(',', $str); return substr($str_parts[1], 1, -1);}
Теорию лучше изменить. Проходим файл построчно, вытаскиваем оттуда имя и потом ищем его в массиве $name
<a href="http://mail.ru" id="foo">Mail</a> <script type="text/javascript"> var ref = document.referrer; var url = document.getElementById('foo'); switch(ref) { case 'http://www.domen.com/page1.html': url.href = 'http://yandex.ru'; url.innerHTML = 'Yandex'; break; case 'http://www.domen.com/page2.html': url.href = 'http://google.ru'; url.innerHTML = 'Google'; break; } </script>
Если ни один реф не подходит, то ссылка без изменений остается.
Js-код должен после ссылки идти.
удалено ....
Для таких запросов, которые указали лучше на каждое поле по отдельному индексу. Первичный ключ тут лишний (опять же, если судить по указанным запросам).