Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Исчезающие проценты
 
 автор: Владимир55   (21.07.2012 в 13:32)   письмо автору
 
 

Передаю в адресной строке такую информацию:
http://site.ru/search.php?br=1%%%%20%26%201


А результат анализурую таким образом:
<?php
    $br 
$_GET['br'];

    
file_put_contents('test.txt',$br);


Получаю следующее (при чтении редактором WinHex):

31 25 25 25 20 26 20 31

То есть: 1%%% & 1

А куда же делись проценты от %20 и %26 ? Почему от них остались только коды 20 и 26?

  Ответить  
 
 автор: confirm   (21.07.2012 в 15:12)   письмо автору
 
   для: Владимир55   (21.07.2012 в 13:32)
 

%20 - это код пробела, после обработки urlencode, тоже самое %26, это &. Сервер восстанавливает эти символы (urldecode).

  Ответить  
 
 автор: Владимир55   (21.07.2012 в 16:53)   письмо автору
 
   для: confirm   (21.07.2012 в 15:12)
 

В моем случае, как Вы видите, нет urlencode / urldecode.

Или Вы имеете в виду, что сервер это делает самостоятельно, в принудительном порядке?

  Ответить  
 
 автор: confirm   (21.07.2012 в 17:04)   письмо автору
 
   для: Владимир55   (21.07.2012 в 16:53)
 

Вы сами ручками прописали это, а сервер САМ восстанавливает, ну если хотите называйте это "понимает", что это за символы.
Если вам надо такое передать, то делать это надо так:
<?
echo 'http://site.ru/search.php?br='.urlencode('1%%%%20%26%201');
//результат
//http://site.ru/search.php?br=1%25%25%25%2520%2526%25201
Обратите внимание как обработаны данные.

  Ответить  
 
 автор: Владимир55   (21.07.2012 в 17:44)   письмо автору
 
   для: confirm   (21.07.2012 в 17:04)
 

Тут идея вот в чем.

Я передавал через адресную строку бренды, кодируя пробелы как %20. И все работало отлично, пока не встретилась фирма, в названии которой был амперсант.

Я его закодировал как %26, а при разборке полученных через адрес данных предполагал их преобразовать

<?php

    $br 
$_GET['br'];

    
$br str_replace("%20"" "$br);
    
$br str_replace("%26""&"$br);  


Смотрю, а они уже в своем первородном виде - как пробел и ампесант, и преобразований str_replace не потребовалось.

Вот и решил рассказать об этом фокусе.

  Ответить  
 
 автор: confirm   (21.07.2012 в 18:03)   письмо автору
 
   для: Владимир55   (21.07.2012 в 17:44)
 

str_replace тут не к месту, кодировать надо подобные символы.
<?
if(isset($_GET['br'])) echo $_GET['br'].'<br>'//ваши исходные данные
echo '<a href="?br='.urlencode('1%%%%20%26%201').'">TEST</a>';

А восстанавливать такие значения из строки, это urldecode().

  Ответить  
 
 автор: Владимир55   (21.07.2012 в 18:09)   письмо автору
 
   для: confirm   (21.07.2012 в 18:03)
 

кодировать надо подобные символы

Кстати - да, это было бы корректнее.

Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования