+ 1 warrenm, это export
, который нужно заключить в кавычки.
Но такие вещи не очень хорошая форма. Со всеми этими вложенными цитатами это едва читаемо, и поскольку у вас нет JavaScript-string-literal-escaped или HTML-escaped или date
или PHP_SELF
, у вас есть ошибки HTML-инъекции, которые могут привести к межсайтовому переходу. дыры в безопасности.
Никогда не выводите текстовую строку в текстовое содержимое HTML или значения атрибутов без htmlspecialchars()
, и при создании объектов JS используйте json_encode()
для создания выходных данных, поскольку они будут справляться с проблемами с выходом строки и заключать в кавычки имена литералов объектов для вы.
В PHP 5.3 опции JSON_HEX
позволяют гарантировать, что все специальные HTML-символы закодированы как экранированные строковые литералы JavaScript, поэтому вам не нужно кодировать HTML поверх JSON-кодирования, что означает, что вы можете используйте одну и ту же функцию вывода как в атрибутах обработчика событий, так и в <script>
блоках (которые, будучи CDATA, не имеют экранирования HTML).
<?php
function j($o) {
echo json_encode($o, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT);
};
$pars= array("export"=>"export", "date"=>$_POST['date']);
?>
onclick="postwith(<?php j($_SERVER['PHP_SELF']); ?>, <?php j($pars); ?>);"
Также рассмотрите возможность отключения обработчика onclick
и назначения его из <script>
вместо использования встроенных атрибутов обработчика событий. Это имеет тенденцию быть более читабельным.