CodeIgniter urlencode / декодировать - PullRequest
1 голос
/ 07 июня 2011

Контроллер

function delete_payment($payment_id)
{
    $this->sale_lib->delete_payment($payment_id);
    $this->_reload();
}

Просмотр

   <?php echo anchor("sales/delete_payment/$payment_id",'['.$this->lang->line('common_delete').']');?>

Возможно, что $ payment_id может быть чем-то вроде "Подарочная карта: 1" или "Подарочная карта: 12345983984334"

Когда это Подарочная карта: 1, URL-адрес автоматически декодируется, и функция удаления работает, если это более длинная строка, например, Подарочная карта: 12345983984334 ", URL-адрес НЕ декодируется.

URL-адреса:

http://localhost/index.php/sales/delete_payment/Gift%20Card:1

http://localhost/index.php/sales/delete_payment/Gift%20Card:12345983984334

Первый работает, второй нет

Ответы [ 3 ]

4 голосов
/ 14 июня 2011

На самом деле, я просто попытался воспроизвести вашу ситуацию на моем локальном компьютере (WAMP в Windows 7), и вы правы.Я пробовал во всех основных браузерах (FF4, IE9, Chrome) и не увидел различий.

Хотя это на самом деле не отвечает на ваш вопрос, вы всегда можете подобрать обходной путь с помощью функции php rawurldecode :

function delete_payment($payment_id)
{
    $decoded_id = rawurldecode($payment_id);
    $this->sale_lib->delete_payment($decoded_id);
    $this->_reload();
}

Таким образом, у вас будет свой «id» в виде Gift Card:123456789 (я пробовал с разными длинами и все работало), готовый для вашей модели.

1 голос
/ 07 июня 2011

используйте% 3A вместо: Это закодировано ":"

0 голосов
/ 14 июня 2011

... следуя моему комментарию ...

Если вы продолжите путь использования строки URI для выполнения удаления, то почему бы просто не иметь идентификационный номер в качестве другого сегмента URI?- Удаляет : - Удаляет проблему кодирования URI!

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

Мой подход к программированию и разработке приложений заключается в следующем:- «Если тебе трудно что-то сделать, значит ты делаешь это неправильно!»

Извините, если это не сильно поможет.

К вашему сведению - я проголосовал за ответ @ ankur.singh

Редактировать: найдено это здесь, в StackOverflow, чтоможет быть полезным!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...