PHP urlencode () привязывается? SID = xxx ... Почему? - PullRequest
1 голос
/ 03 мая 2010

Я пытаюсь вывести простую ссылку.

Это прекрасно работает:

$url = 'http://www.google.com';
echo $url;

Это не очень хорошо работает:

$url = 'http://www.google.com';
echo urlencode($url);

Второй пример по какой-то причине привязывает "? SID = xxx" к концу URL. Как я могу предотвратить это?

Примечание. Код для генерации URL был изменен для защиты невинных.

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Не используйте urlencode () для кодирования URL, в итоге вы получите URL, подобный этому,

HTTP% 3A% 2F% 2Fwww.google.com

Для PHP это выглядит как относительный URL, поэтому он добавляет SID при отсутствии cookie.

urlencode () должен использоваться для кодирования параметров строки запроса, но не самого URL.

1 голос
/ 03 мая 2010

Это не ошибка urlencode(), это автоматическое переписывание ссылок PHP, которое добавляет идентификатор сеанса через переменную GET в отсутствие файла cookie сеанса.

Боюсь, это необходимо для сохранения сеансов на стороне клиента, если у них отключены файлы cookie.

Настройка для этого автоматически session.use_trans_sid. Подробнее здесь .

...