Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
estou utilizando um script ótimo para upload, porem infelizmente ele permiti que o usuário envie faça qualquer tipo de upload e no meu caso isso não é viável, pois assim poderia comprometer a segurança do meu site.
$id = $_GET['sessionId'];
$id = trim($id);
session_name($id);
session_start();
$inputName = $_GET['userfile'];
$fileName = $_FILES[$inputName]['name'];
$tempLoc = $_FILES[$inputName]['tmp_name'];
echo $_FILES[$inputName]['error'];
$target_path = 'upload/';
$target_path = $target_path . basename($fileName);
if(move_uploaded_file($tempLoc,$target_path))
{
$_SESSION['value'] = -1;
}
?>
Gostaria então de fazer o seguinte, restringir o envio de algumas extensões de arquivos, tipo .html, .htm, .asp, .php, etc, etc e permiti apenas o envio de arquivos .doc, .pdf, .rar, .zip.
Eu sou bem inexperiente em PHP, até tentei adaptar o código, mais infelizmente não consegui obter um resultado satisfatório.
Desde já agradeçoBoa tarde,
Infelizmente não consegui, o script de upload fica com o status de enviando e não envia o arquivo.
Deixei o script assim.
$files = pathinfo ($fileName);
$id = $_GET['sessionId'];
$id = trim($id);
session_name($id);
session_start();
$inputName = $_GET['userfile'];
$fileName = $_FILES[$inputName]['name'];
$tempLoc = $_FILES[$inputName]['tmp_name'];
echo $_FILES[$inputName]['error'];
$target_path = 'arquivos/';
$target_path = $target_path . basename($fileName);
switch ($files['extension']) {
<tab>case 'php':
<tab><tab> echo $_FILES[$inputName]['error'];
<tab><tab>break;
<tab>case 'pdf':
<tab><tab>echo 'Permitido';
<tab><tab>break;
}
if(move_uploaded_file($tempLoc,$target_path))
{
$_SESSION['value'] = -1;
}
?>está fazendo atribuição das superglobais erroneamente
Bom você que está fazendo errado, antes de eu postar eu sempre testo :)
Boa noite,
Eu não sei como posso fazer para resolver esse problema, você pode me ajudar a resolver ?
Grato
Tenta isso daqui:
$id = $_GET['sessionId'];
$id = trim($id);
session_name($id);
session_start();
$inputName = $_GET['userfile'];
$fileName = $_FILES[$inputName]['name'];
$tempLoc = $_FILES[$inputName]['tmp_name'];
echo $_FILES[$inputName]['error'];
$target_path = 'arquivos/';
$target_path .= basename($fileName);
$files = pathinfo($fileName);
switch ($files['extension']) {
case 'php':
echo 'Esta extensão não é permitida';
break;
case 'pdf':
if(move_uploaded_file($target_path.$tempLoc,$target_path.$fileName)) echo 'Sucesso';
else echo 'Falhou';
break;
}
if(move_uploaded_file($tempLoc,$target_path))
{
$_SESSION['value'] = -1;
}
?>Bom dia,
infelizmente continuo conseguindo enviar arquivos PHP, por tanto vou postar o script completo que estou usando para fazer o upload:
Abraços
Não é muito dificil não é só usar pathinfo, veja:
$files = pathinfo ($fileName);
switch ($files['extension']) {