PHP сгенерировал JavaScript onClick, с массивом php, проблема с кавычками - PullRequest
0 голосов
/ 09 августа 2011
echo '<a onClick="articleDeleteConfirm("'.
      $row["title_$lang"].'","'.$_GET["editPage"]).'">';

Основная проблема с: $ row ["title_ $ lang"], я должен использовать переменную $ lang внутри."и" просто не достаточно.

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Проблема, которую вы описываете, на самом деле не имеет ничего общего с вашими переменными PHP, все они выводятся, как и ожидалось. Проблема в том, что вам нужно убежать из " внутри <a>, и вы потеряли ).

Ваш оригинал выдаст:

<a onClick="articleDeleteConfirm("value1","value2">

Это недопустимый HTML (даже маркер не любит его). Теперь обратите внимание на \ в следующем (и что пара была перемещена в строку).

echo '<a onClick="articleDeleteConfirm(\''
     .$row["title_".$lang."].'\',\''.$_GET["editPage"].'\')">';

Вывод сбежавшей версии:

<a onClick="articleDeleteConfirm('value1','value2')">

Он использует одинарные кавычки внутри двойных кавычек, чтобы обеспечить легкий для чтения (и действительный) HTML. Теперь у вас есть еще одна проблема с вашим кодом.

Каждый раз, когда вы выводите переменную $_REQUEST в браузер, вы рискуете чем-то, что называется межсайтовый скриптинг . Кто-то может вставить JavaScript в $_GET["editPage"], и он будет плохо пахнуть. Самый простой способ избежать этого? Используйте htmlentities($_GET["editPage"])

0 голосов
/ 09 августа 2011

У меня тоже была такая же проблема, я не знаю точно, почему, но у меня была синтаксическая ошибка независимо от того, что я сделал, поэтому я попробовал это и получил ответ.

Проблема в том, что вы используетедвойная кавычка, чтобы открыть onClick, и снова вы используете другую двойную кавычку, чтобы открыть строку.

Используйте это, и вы получите ответ.

echo '<a onClick="articleDeleteConfirm('.char(39).$row["title_$lang"].char(39).','.char(39).$_GET["editPage"]).char(39).'>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...