$_GET не получает параметры если урлы с & вместо &

phphp

Новичок
Наверное вопрос супер ламерский, но долбанный гоогл выдает чушь на запрос вида "& что то там..." или даже просто "amp что то там"

Проблема такая: $_GET не получает параметр если урлы вида:

http://example.com?param1=1&param2=2
http://example.com?param1=1&param2=2 //все нормально

проблема вылезла после того как bing и yahoo проиндексировали один сайт с &

наверняка это борется по простому, очень не хочется парсить запрос или оперировать переменными вида
$_GET[amp;param1];

помогите плз.
 

Духовность™

Продвинутый новичок
роблема вылезла после того как bing и yahoo проиндексировали один сайт с &
а не нужно в URL писать & нужно просто &
измени вывод HTML на сайте и все вернется после очередного индексирования ПС
 

phphp

Новичок
а не нужно в URL писать & нужно просто &
измени вывод HTML на сайте и все вернется после очередного индексирования ПС
не писал, мамой клянус))

>>очень не хочется парсить запрос
>Когда-то что-то всегда приходится делать в первый раз.
видимо придется, да(

Неужели никому такие проблемы не встречались? тем более стрикт предпологает &вместо &
 

Духовность™

Продвинутый новичок
HTML вообще предполагает & вместо &, дело не в режиме.

phphp
Афтор, ты понимаешь, что я тебе выше написал? У тебя в URL адресе вместо & стоит & вот тебе ПС хрень и проиндексировала
 

флоппик

promotor fidei
Команда форума
Партнер клуба
HTML вообще предполагает & вместо &, дело не в режиме.
Выдыхай бобер, выдыхай. HTML/XML требует & в тексте потому что он специальный символ в URI, и его требуется экранировать. Как и > < например.
 

antson

Новичок
Партнер клуба
косяк гдето в админке сайта при редактирование.
& перекодируется в &
потестируй отдельно еще в случай <!-- document.write('&amp;') -->
 

Духовность™

Продвинутый новичок
Выдыхай бобер, выдыхай. HTML/XML требует &amp; в тексте потому что он специальный символ в URI, и его требуется экранировать. Как и &gt; &lt; например.
Что нам говорит эксперимент?

http://validator.w3.org/

HTML 5:
PHP:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<a href="/page.html?a&b">xxxx</a>
</body>
</html>
Line 8, Column 22: & did not start a character reference. (& probably should have been escaped as &amp;.)
XHTML1.0 Trans., Strict, HTML4:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<title></title>
</head>
<body>
<a href="/page.html?a&b">xxxx</a>
</body>
</html>
Line 7, Column 23: general entity "b" not defined and no default entity
 

phphp

Новичок
HTML вообще предполагает &amp; вместо &, дело не в режиме.

phphp
Афтор, ты понимаешь, что я тебе выше написал? У тебя в URL адресе вместо &amp; стоит &amp;amp; вот тебе ПС хрень и проиндексировала
да, да я же написал, не ставил я сам. Да бог с ними яхой и бингом и конкретным сайтом этим, это первая индексация, загонялось в индекс с 9 разных блогов+ трансляция в твиттер... бог его маму где они подцепили этот &amp;

Я думал что это проблема решается галочкой в php.ini или типа того, а оно оказывается эвон как.
Значит буду решать по тупенькому, по простенькому типа так:
$my_param=$_GET["param"].$_GET["amp;param"]; //два раза полюбому не должно быть
 

Вурдалак

Продвинутый новичок
У тебя двойное экранирование где-то. Да и вообще ты сам с «&amp;» дела иметь не должен. За тебя это htmlspecialchars() должен делать.

Ты имеешь в виду параметр href/src? Однозначно нужен htmlspecialchars().

Грубо говоря, при формировании тега:
PHP:
foreach($this->_attrs as $name => $value)
{
    $tag .= sprintf(' %s="%s"', $name, htmlspecialchars($value));
}
 

fixxxer

К.О.
Партнер клуба
[mod_telepat on]А может, это не двойное экранирование, а Location: htmlspecialchars($url)?
 
Сверху