& Амп; отрезать в пути каталога

Я передаю имя папки и путь через $ _GET. Все хорошо, пока я не передам имя папки, содержащей и (&) амперсанд, а затем имя папки сокращается. то есть проверка имени папки & Заменить замкнут на «тест».
Пробовал str_repalce, htmlentites, htmlspecialchars

$dir_path = $_GET['path'].$_GET['folder'];

Весь код:

    <div class="panel-body" style="font-size:14px">
<?php
if(isset($_GET['path'])){
$dir_path = $_GET['path'].$_GET['folder']."/";
echo "full path = ".$dir_path."<br>folder = ".$Folder;
}else{
$dir_path = PUBLICPATH."/Folderholder/".$branch."/"; // branch url to that branchs folders and in $_GET['folder'];
}
//$dir = opendir($dir_path);
$mappath = str_replace(PUBLICPATH."/Folderholder/","",$dir_path);
echo "<p><i class='fa fa-sitemap'>&nbsp;&nbsp;<b>".$mappath."</b></i></p>\n"; ?>
<div class="row">
<div class="col-md-6">
<?php
echo "<button onclick='goBack()' class='btn btn-primary btn-sm'>Return</button><P>\n";
?>
</div>
<div class="col-md-6">
<?php
if(parent::$UM->get('Level') !== 'User' and $branch !== 'Main-Admin'){
echo "<a href='uploadfrm?path=".$dir_path."' class='btn btn-primary btn-sm'>Upload to this folder</a>";
}elseif(parent::$UM->get('Level') == 'Main-Admin'){
echo "<a href='uploadfrm?path=".$dir_path."' class='btn btn-primary btn-sm'>Upload to this folder</a>";
}
?>
</div>
</div>
<div class="row"><div class="col-md-12">&nbsp;</div></div>
<table width="70%">
<?php
$files = scandir($dir_path);htmls
foreach ($files as $file)
{
if($file != "." && $file != "..")
{
echo "<tr>\n";
if(is_dir($dir_path.$file)){
echo "<td><i class='fa fa-folder'></i>&nbsp;&nbsp;&nbsp;<a href='".BASEURL."Folderholder/userdash?path=".$dir_path."&folder=".$file."'>$file</a></td>\n";
echo "<td>&nbsp;</td>\n";
}else{
echo "<td><i class='fa fa-download'></i>&nbsp;&nbsp;&nbsp;".$file."</td>\n<td><a href='http://downloadfolder/download1.php?file=".$dir_path.$file."' target='_Blank'>Download</a></td>\n";
}//change path as required
echo "</tr>\n";
}
}

?>
</table>
</section>
</div>

0

Решение

& Символ используется для разделения пар ключ = значение в строке запроса.

Когда вы генерируете строку запроса, вы должны выразить ее как escape-последовательность: %26,

То, как вы это сделаете, зависит от того, как вы генерируете строку запроса.


Вы отметили это , но код PHP, которым вы поделились, чтение данные. Вы не показали нам код для его генерации, но предполагали, что является еще PHP:

Для генерации в PHP вы обычно используете http_build_query:

$query = http_build_query(Array( path => "example&example", folder => "example&example" ));
1

Другие решения

urlencode должен сделать свое дело. Он специально используется для передачи параметров в URL для использования в качестве переменных, как вы делаете в своих GET.

0

использование urlencode закодировать URL как:

$encodedURL = urlencode ('Your url');

Объяснение: urlencode будет кодировать специальные символы в значения их сущностей и затем использовать их.

0

Хотя предыдущие ответы в этой теме не являются неправильными, пожалуйста, также подумайте об использовании rawurlencode как это будет генерировать более совместимым со стандартами (RFC 3986) URI. UrlEncode запускает устаревшую кодировку, в которой пробелы заменяются знаками плюса. (Кто-нибудь помнит это?)

0

Чтобы остановить обрезку имени папки.
Два изменения кодирования $ dir_path = $ _GET [‘path’]. $ _ GET [‘folder’]. «/»; изменился на

$dir_path = $_GET['path'].rawurldecode($_GET['folder'])."/";

а также echo "<td><i class='fa fa-folder'></i>&nbsp;&nbsp;&nbsp;<a href='".BASEURL."Folderholder/userdash?path=".$dir_path."&folder=".$file."'>$file</a></td>\n";
изменился на

echo "<td><i class='fa fa-folder'></i>&nbsp;&nbsp;&nbsp;<a href='".BASEURL."Folderholder/userdash?path=".$dir_path."&folder=".rawurlencode($file)."'>$file</a></td>\n";

<div class="panel-body" style="font-size:14px">
<?php
if(isset($_GET['path'])){
$dir_path = $_GET['path'].$_GET['folder']."/";
}else{
$dir_path = PUBLICPATH."/Folderholder/".$branch."/"; // branch url to that branchs folders and in $_GET['folder'];
}
//$dir = opendir($dir_path);
$mappath = str_replace(PUBLICPATH."/Folderholder/","",$dir_path);
echo "<p><i class='fa fa-sitemap'>&nbsp;&nbsp;<b>".$mappath."</b></i></p>\n"; ?>
<div class="row">
<div class="col-md-6">
<?php
echo "<button onclick='goBack()' class='btn btn-primary btn-sm'>Return</button><P>\n";
?>
</div>
<div class="col-md-6">
<?php
if(parent::$UM->get('Level') !== 'User' and $branch !== 'Main-Admin'){
echo "<a href='uploadfrm?path=".$dir_path."' class='btn btn-primary btn-sm'>Upload to this folder</a>";
}elseif(parent::$UM->get('Level') == 'Main-Admin'){
echo "<a href='uploadfrm?path=".$dir_path."' class='btn btn-primary btn-sm'>Upload to this folder</a>";
}
?>
</div>
</div>
<div class="row"><div class="col-md-12">&nbsp;</div></div>
<table width="70%">
<?php
$files = scandir($dir_path);htmls
foreach ($files as $file)
{
if($file != "." && $file != "..")
{
echo "<tr>\n";
if(is_dir($dir_path.$file)){
echo "<td><i class='fa fa-folder'></i>&nbsp;&nbsp;&nbsp;<a href='".BASEURL."Folderholder/userdash?path=".$dir_path."&folder=".$file."'>$file</a></td>\n";
echo "<td>&nbsp;</td>\n";
}else{
echo "<td><i class='fa fa-download'></i>&nbsp;&nbsp;&nbsp;".$file."</td>\n<td><a href='http://downloadfolder/download1.php?file=".$dir_path.$file."' target='_Blank'>Download</a></td>\n";
}//change path as required
echo "</tr>\n";
}
}

?>
</table>
</section>
</div>
0
По вопросам рекламы [email protected]