Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление и удаление cookies
 
 автор: segazav   (24.11.2014 в 20:37)   письмо автору
 
 

Для добавления номера объявления в избранное использую этот код:

<script type="text/javascript">
function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
      var cookie = document.cookie;
      if (cookie) alert("Объявление № <?php echo $id?> успешно добавлено в раздел: \"Мои объявления\".");
}
</script>


<a href="#" class="linc" title="Добавить объявление в избранное" onClick='setCookie ("nomer_obyavl[<?php echo $id?>]", "<?php echo $id?>", 
"date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString()", "/", ".domen.ru");'>


Куки добавляются, но почему то не сохраняются после закрытия браузера.

  Ответить  
 
 автор: confirm   (24.11.2014 в 21:56)   письмо автору
 
   для: segazav   (24.11.2014 в 20:37)
 

Потому, что вы передаете не аргументы в функцию, а пишите какой-то триллер.

  Ответить  
 
 автор: segazav   (24.11.2014 в 22:14)   письмо автору
 
   для: confirm   (24.11.2014 в 21:56)
 

Если честно, я даже смеялся над вашим остроумным ответом (без сарказма).
Но все таки в чем заключается тот самый триллер?

  Ответить  
 
 автор: confirm   (24.11.2014 в 22:22)   письмо автору
 
   для: segazav   (24.11.2014 в 22:14)
 

Продолжайте смеяться.

  Ответить  
 
 автор: segazav   (24.11.2014 в 22:33)   письмо автору
 
   для: confirm   (24.11.2014 в 22:22)
 

Простите, но я плохо разбираюсь в js, поэтому и обратился к вам.
Я уже не первый день пытаюсь разобраться, в чем моя ошибка.

  Ответить  
 
 автор: confirm   (24.11.2014 в 22:43)   письмо автору
 
   для: segazav   (24.11.2014 в 22:33)
 

function setCookie(name, value, expires, path, domain, secure) { 
    alert(name+'/'+value+'/'+expires) 
}

<button onclick="setCookie('nomer_obyavl[12]', '12', 'date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString()', '/', '.domen.ru')">SET</button>


Объяснять почему такой бардак получает функция или нет? И почему я для примера использую не А, а BUTTON?

  Ответить  
 
 автор: segazav   (24.11.2014 в 23:05)   письмо автору
 
   для: confirm   (24.11.2014 в 22:43)
 

Я понял, что ошибка в этой строке: "date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString();"
По другому у меня функция вообще не срабатывает....
И почему для примера вы использовали именно кнопку?

  Ответить  
 
 автор: confirm   (24.11.2014 в 23:25)   письмо автору
 
   для: segazav   (24.11.2014 в 23:05)
 

Не только в этой.

'nomer_obyavl[12]' - это что? Если таким образом вы хотите получить элемент массива nomer_obyavl, то почему это передается в аргументе как строка? И почему вы не назвали свою функцию ustanovka_Pechenja, а setCookie? Что это за "блатняк" - nomer_obyavl, если функциям даете имена нормальные?

Тоже самое и с "date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString();" - каким образом это будет выполнено, если это простая строка? Вы можете не знать JS, но если идти от обратного значит вы знаете РНР. Как вы думаете, если функция РНР принимает два аргумента, а вы ей передаете их таким образом:

<?
myfunction
(1$a date('Y-m-d'); $a datestring($a));

будет ли выполнен ваш код или вы получите ошибку? Если вы понимаете, что это несуразица, а не передача аргументов в функцию, то с какой стати JS должен поступать иначе и выполнять бред, если вы даже и уберете кавычки, и это будет уже код?

Вот с какого тяжелого будуна можно такое выдумать? Вы же пишите очевидную несуразицу, с которой ни одному языку не разобраться, ну неужели это не понятно?

Для примера я использую кнопку потому, что a href="#" - это глупость, используйте тег А по назначению. Если он у вас будет где-то в конце страницы, то щелчок по нему вызовет "скачок" страницы в самый верх. Либо блокируйте это поведение, либо щелкайте по чему либо другому, а щелкнуть на странице можно по любому ее элементу.

  Ответить  
 
 автор: segazav   (25.11.2014 в 00:01)   письмо автору
 
   для: confirm   (24.11.2014 в 23:25)
 

Блин, все переделал, но все равно не срабатывает функция:

function setCookie() {
    document.cookie = "nomer"[<?php echo $id ?>]"=" + escape("<?php echo $id ?>")";" + 
"expires = "date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString()";" + "path=/;" + "domain=.domen.ru";
}

  Ответить  
 
 автор: confirm   (25.11.2014 в 00:12)   письмо автору
 
   для: segazav   (25.11.2014 в 00:01)
 

Еще раз разъяснять, что "что-то написанное в кавычках, это строка, а не исполняемый код" или не надо?

  Ответить  
 
 автор: segazav   (25.11.2014 в 00:54)   письмо автору
 
   для: confirm   (25.11.2014 в 00:12)
 

Ну я уже 10 раз все пересмотрел, все что в кавычках строка, почему не работает???

document.cookie = "nomer[<?php echo $id ?>]=" + escape(<?php echo $id ?>)";" + 
"expires="date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString()";" + "path=/;" + "domain=.domen.ru";


хоть так.... хоть как...

document.cookie = "nomer[<?php echo $id ?>]=" + escape(<?php echo $id ?>)"; expires="date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString()"; path=/; domain=.domen.ru";

  Ответить  
 
 автор: confirm   (25.11.2014 в 00:58)   письмо автору
 
   для: segazav   (25.11.2014 в 00:54)
 

Читайте и изучайте здесь, а я не знаю как еще вам объяснить о той чепухе, что вы пишите.

escape(<?php echo $id ?>) - это вообще полет фантастики.

  Ответить  
 
 автор: segazav   (25.11.2014 в 01:04)   письмо автору
 
   для: confirm   (25.11.2014 в 00:58)
 

Именно там я изучал все это. Без этого мне вообще не как:
<?php echo $id ?>


Упростил уже все до "нельзя", не срабатывает и диалоговое окно не выводит:

<script type="text/javascript">
function setCookie() {
    document.cookie = "nomer[<?php echo $id ?>]=<?php echo $id ?>; expires="date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString()"; path=/; domain=.domen.ru";
      var cookie = document.cookie;
      if (cookie) alert("Объявление № <?php echo $id?> успешно добавлено в раздел: \"Мои объявления\".");
}
</script>


<a href="#" class="linc" title="Добавить объявление в избранное" onClick='setCookie()'>


Если вас не затруднит, приведите пожалуйста пример похожего рабочего кода со сроком жизни "куков" - 90 дней. А то я уже правда замучился уже и не могу понять, где кроется ошибка!

  Ответить  
 
 автор: confirm   (25.11.2014 в 01:16)   письмо автору
 
   для: segazav   (25.11.2014 в 01:04)
 

Что такое $id? Число, причем которое подставляет сервер? И зачем к числу применять escape()? Ну хотя бы поинтересовались для чего этот метод JS предназначен.

Если именно там вы изучали, то такой отсебятины не написали бы. Вы что за редактор для написания кода используете? Он у вас что не имеет подсветки и вы не видите, что пишите нечто невообразимое? Вот вам с подсветкой, если ее в РНР написать:

<?
//пусть $d = 1, тогда получим вот такое
$s "nomer[1]=1; expires="date = new Date(); date.setHours(date.getHours() + 8640); date.toUTCString()"; path=/; domain=.domen.ru";


Это по вашему вы изучали? Кроме этого, даже если вы правильно расставите кавычки, то несколько инструкций кода не будут частью строки, то есть не могут быть выполнены в ее контексте!

Еще раз внимательно изучите код по ссылке.

  Ответить  
 
 автор: segazav   (25.11.2014 в 01:37)   письмо автору
 
   для: confirm   (25.11.2014 в 01:16)
 

Вот так функция работает, но все равно не сохраняются КУКИ!!!!!


<script type="text/javascript">
function setCookie() {
    date = new Date(); date.setHours(date.getHours() + 8640);
    document.cookie = "nomer_obyavl[<?php echo $id ?>]=<?php echo $id ?>; expires="+date.toUTCString()+"; path=/; domain=.domen.ru";
      var cookie = document.cookie;
      if (cookie) alert("Объявление № <?php echo $id?> успешно добавлено в раздел: \"Мои объявления\".");
}
</script>

  Ответить  
 
 автор: confirm   (25.11.2014 в 01:42)   письмо автору
 
   для: segazav   (25.11.2014 в 01:37)
 

Ну и чем это отличается от ранее написанного?

Используйте в РНР короткий тег, в новых версиях его использование включено по умолчанию:

<?
<?=$id?>

  Ответить  
 
 автор: segazav   (25.11.2014 в 02:04)   письмо автору
 
   для: confirm   (25.11.2014 в 01:42)
 

Оказывается дело совсем не в этом!!!!
Вышеуказанный код рабочий!!! Просто в браузере было настроено удаление куков после закрытия.
Спасибо вам за помощь!!! Наконец то у меня уже нервы чуть лопнули.

  Ответить  
 
 автор: confirm   (25.11.2014 в 02:09)   письмо автору
 
   для: segazav   (25.11.2014 в 02:04)
 

Вот только дурочку не надо пороть, что методы JS, которые вы воткнули в строку в первом случае будут исполнены.
Открывайте свой код в отладчике и проверяйте.

  Ответить  
 
 автор: segazav   (25.11.2014 в 02:22)   письмо автору
 
   для: confirm   (25.11.2014 в 02:09)
 

Я имел ввиду последний указанный мной код.
Я его вставил на страницу, добавил куки, закрыл браузер, открыл браузер и все сохранилось.

  Ответить  
 
 автор: confirm   (25.11.2014 в 02:35)   письмо автору
 
   для: segazav   (25.11.2014 в 02:22)
 

Я грешным делом подумал, что речь о ранней писанине. Последнее да, это рабочий код.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования