Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

japalfalfa

arquivos para um login especifico

Recommended Posts

salve pessoal, é o seguinte:estou desenvolvendo um sistema de login usando sessionsneste sistema terá uma seção de downloads onde somente usuarios cadastrados poderão baixar os arquivos.gostaria de saber como faço pra bloquear acessos pelos usuários que nao estiverem logados... e somente liberar aos logados.Abraços e obrigado pela ajuda que sempre tenho aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

há várias formas, creio que a menos vulnerável seja examinar se o usuario está logado no momento em que ele faz o clique.mas essa forma não é muito eficaz porque o usuario pode não clicar no link do download, ao invez disso ele pode copiar o link e colar ele no gerenciador de downloads dele e então fazer o download.voce teria que ter algo que bloqueasse a pasta que contem os downloads, mas não sei muito bem como faz isso, inclusive, gostaria de saber

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois então:gostaria que alguem avaliasse minha idéia:estou pensando em usar o chmod na hora em que a pagina eh carregada para o usuario, ou seja se ele carregar a pagina eh pq pode baixar o arquivo.porem o meu problema eh fazer o arquivo apenas ser liberado para ele...sugestões?grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você nao faz como no Baixaki? Deixa o link pro download todo "embaralhado" (ex: www.site.com/?download=XXcasdasAlitsopadasdSQE.zip)

e em cada página você controla quem está ou não logado.

 

/* onde nome é o nome da sessao que você registrou no session_register(); */if(session_is_registered("nome") == false) {	header("Location: login.php");}

Não sei se ajudei mas..

 

Abraço.

 

Sem Mais[]'..

Compartilhar este post


Link para o post
Compartilhar em outros sites

to com o mesmo problema.Utilizei ChMod e funcionou para os directórios. Mas se copiar o link do ficheiro consigo abrir mesmo sem estar logado.Tb preciso de ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que o Leandro Barral falou é o ideal pra todos vcs. mas como voces naum entenderam a moral da historia, é o seguinte...

 

digamos que o usuario queira baixar o "arquivo.zip". o link para esse arquivo seria: http://www.seu_site.com.br/download/?file=arquivo.zip

digamos que a URL verdadeira para o arquivo seja http://www.seu_site.com.br/pasta_downloads/arquivo.zip (claro que o usuario naum sabe desta pasta)

este é o codigo que ele postou + com algumas melhorias:

<?php$arquivo = $_GET["file"]if(!session_is_registered("nome")) {	header("Location: login.php");}readfile("http://www.seu_site.com.br/pasta_downloads/$file"); //Somente se ele passar pelo teste acima é que ele "revelar" o conteudo do arquivo?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh. so pra lembrar que a URL original não é revelada para os navegentes...caso voce tente acessar pela URL original. voce vai conseguir. por isso voce deve usar um nome bem dificil pra pasta que guarda os downloads, como:8bee38dd28b67662dc9197f34272f1f5 (que representa a saida md5 do nome pasta_downloads)a ideia é esconder os arquivos originais. como eles naum sabem qual é a pasta de verdade (eles so vao estar vendo o link) acaba que o sistema se torna infalivel...a nao ser que numa "cagadas" dessas ele chute o nome "8bee38dd28b67662dc9197f34272f1f5" e acerte.nesse caso: ou ele é o cara mais sortudo do mundo... ou voce é o mais azarado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, até ai tudo entendido.

Mas... acontece que tenho ficheiros .doc para abrir no browser ou salvar no disco, após logado. Mas se o usuário abrir um desses ficheiros num pc público, fica lá no histórico o endereço real para o mesmo, ainda que esteja com um nome complicado. Ai reside a minha duvida.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha aew!

 

o link mascarado

o link verdadeiro

 

esse teste foi feito com imagem...

note que se voce nunca clicar no endereço verdadeiro. numca vai ficar armazenado o endereço verdadeiro.

olha que o codigo é so isso:

PHP
<?php

$arquivo = $_GET["file"];

readfile("http://teste.hbweb.com.br/pasta_downloads/$arquivo");

?>

 

claro que imagem funciona bem...

+ quando for documentos voce precisa adicionar o "header" correspondente a extenção do arquivo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

no meu servidor de teste local ele reconhece automaticamente o header da extenção "jpg"...meu servidor naum esta reconhecendo automaticamente...vou postar em breve os "headers" de todas as extenções mais conhecidas...aguardem...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta aki as correções...

 

PHP
<?php

header("Content-type: image/jpeg");

$arquivo = $_GET["file"];

readfile("http://teste.hbweb.com.br/pasta_downloads/$arquivo");

?>

 

voces tem que colocar o Content-type especifico para cada extenção que for baixada...

no caso, como ema uma imagem jpeg o Content-type foi image/jpeg...

o Content-type é quem diz pro seu PC que tipo de arquivo esta vindo ai!

 

agora, o mais importante... a LISTA de Content-type's

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok vo testar.Mais uma questão sobre CHMOD.Como crio GRUPOS de utilizadores no servidor?Tenho um BD com os utilizadores do meu site registados - não posso associar o GRUPO a esta tabela, para bloquer o acesso aos ficheiros por outros utilizadores com o CHMOD.Não posso, no servidor ter o CHMOD codificado só para o USER e colocar um código no PHP que no momento em que é executada a página é alterado o valor CHMOD e quando o utilizador fizer o LOGOUT o código CHMOD retorne ao que estava?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não to a conseguir. O meu código não está assim, log não sei onde colocar os exemplos que me deu.

Vo deixar o meu código pra ver se pode ajudar.

 

<?php require_once('../Connections/login.php'); ?>

<?php

//initialize the session

if (!isset($_SESSION)) {

session_start();

}

 

// ** Logout the current user. **

$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";

if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){

$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);

}

 

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){

//to fully log out a visitor we need to clear the session varialbles

$_SESSION['MM_Username'] = NULL;

$_SESSION['MM_UserGroup'] = NULL;

$_SESSION['PrevUrl'] = NULL;

unset($_SESSION['MM_Username']);

unset($_SESSION['MM_UserGroup']);

unset($_SESSION['PrevUrl']);

 

$logoutGoTo = "../home.html";

if ($logoutGoTo) {

header("Location: $logoutGoTo");

exit;

}

}

?>

<?php

if (!isset($_SESSION)) {

session_start();

}

$MM_authorizedUsers = "teste";

$MM_donotCheckaccess = "false";

 

// *** Restrict Access To Page: Grant or deny access to this page

function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {

// For security, start by assuming the visitor is NOT authorized.

$isValid = False;

 

// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.

// Therefore, we know that a user is NOT logged in if that Session variable is blank.

if (!empty($UserName)) {

// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.

// Parse the strings into arrays.

$arrUsers = Explode(",", $strUsers);

$arrGroups = Explode(",", $strGroups);

if (in_array($UserName, $arrUsers)) {

$isValid = true;

}

// Or, you may restrict access to only certain users based on their username.

if (in_array($UserGroup, $arrGroups)) {

$isValid = true;

}

if (($strUsers == "") && false) {

$isValid = true;

}

}

return $isValid;

}

 

$MM_restrictGoTo = "invalido_acesso.php";

if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {

$MM_qsChar = "?";

$MM_referrer = $_SERVER['PHP_SELF'];

if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";

if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)

$MM_referrer .= "?" . $QUERY_STRING;

$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);

header("Location: ". $MM_restrictGoTo);

exit;

}

?>

<?php

 

if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

 

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

 

switch ($theType) {

case "text":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "long":

case "int":

$theValue = ($theValue != "") ? intval($theValue) : "NULL";

break;

case "double":

$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";

break;

case "date":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "defined":

$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

break;

}

return $theValue;

}

}

 

mysql_select_db($database_login, $login);

$query_infor = "SELECT * FROM infor_teste";

$infor = mysql_query($query_infor, $login) or die(mysql_error());

$row_infor = mysql_fetch_assoc($infor);

$totalRows_infor = mysql_num_rows($infor);

 

mysql_select_db($database_login, $login);

$query_docs = "SELECT * FROM doc_teste WHERE tipo = 'doc' ORDER BY dat DESC";

$docs = mysql_query($query_docs, $login) or die(mysql_error());

$row_docs = mysql_fetch_assoc($docs);

$totalRows_docs = mysql_num_rows($docs);

 

mysql_select_db($database_login, $login);

$query_mat_ap = "SELECT * FROM doc_teste WHERE tipo = 'mat_ap' ORDER BY dat DESC";

$mat_ap = mysql_query($query_mat_ap, $login) or die(mysql_error());

$row_mat_ap = mysql_fetch_assoc($mat_ap);

$totalRows_mat_ap = mysql_num_rows($mat_ap);

 

$editFormAction = $_SERVER['PHP_SELF'];

if (isset($_SERVER['QUERY_STRING'])) {

$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);

}

 

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form2")) {

$updateSQL = sprintf("UPDATE infor_teste SET informacao=%s WHERE id=%s",

GetSQLValueString($_POST['informacao'], "text"),

GetSQLValueString($_POST['id'], "int"));

 

mysql_select_db($database_login, $login);

$Result1 = mysql_query($updateSQL, $login) or die(mysql_error());

 

$updateGoTo = "#";

if (isset($_SERVER['QUERY_STRING'])) {

$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";

$updateGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $updateGoTo));

}

 

if ((isset($_POST['id'])) && ($_POST['id'] != "")) {

$deleteSQL = sprintf("DELETE FROM doc_teste WHERE id=%s",

GetSQLValueString($_POST['id'], "int"));

 

 

mysql_select_db($database_login, $login);

$Result1 = mysql_query($deleteSQL, $login) or die(mysql_error());

 

$deleteGoTo = "#";

if (isset($_SERVER['QUERY_STRING'])) {

$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";

$deleteGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $deleteGoTo));

}

 

if ((isset($_POST['nome'])) && ($_POST['nome'] != "")) {

$deleteSQL = sprintf("DELETE FROM doc_teste WHERE nome=%s",

GetSQLValueString($_POST['nome'], "text"));

 

mysql_select_db($database_login, $login);

$Result1 = mysql_query($deleteSQL, $login) or die(mysql_error());

 

$deleteGoTo = "#";

if (isset($_SERVER['QUERY_STRING'])) {

$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";

$deleteGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $deleteGoTo));

}

 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$link_name=$_FILES['link']['name'];

if (!(is_uploaded_file($_FILES['link']['tmp_name']))){

$erro="Tem de indicar um ficheiro.";

}else{

move_uploaded_file($_FILES['link']['tmp_name'],"documentos/doc_teste/"

. $_FILES['link']['name']);

 

$insertSQL = sprintf("INSERT INTO doc_teste (id, nome, tipo, professor, dat, observacoes, link) VALUES (%s, %s, %s, %s,%s, %s, 'documentos/doc_teste/$link_name')",

GetSQLValueString($_POST['id'], "int"),

GetSQLValueString($_POST['nome'], "text"),

GetSQLValueString($_POST['tipo'], "text"),

GetSQLValueString($_POST['professor'], "text"),

GetSQLValueString($_POST['dat'], "text"),

GetSQLValueString($_POST['observacoes'], "text"),

GetSQLValueString($_FILES['link']['name'], "text"));

 

mysql_select_db($database_login, $login);

$Result1 = mysql_query($insertSQL, $login) or die(mysql_error());

 

$insertGoTo = "#";

if (isset($_SERVER['QUERY_STRING'])) {

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

$insertGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $insertGoTo));

}

}

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Untitled Document</title>

<link href="../formulario.css" rel="stylesheet" type="text/css" />

<STYLE type="text/css">

<!--

 

BODY,HTML {

 

scrollbar-face-color:#ffcc66;

scrollbar-highlight-color:#F8FCF8;

scrollbar-3dlight-color:#F8FCF8;

scrollbar-darkshadow-color:#F8FCF8;

scrollbar-shadow-color:#F8FCF8;

scrollbar-arrow-color:#003399;

scrollbar-track-color:#fff9e5;

}

-->

<!--

a:link {

color: #006699;

text-decoration: none;

}

a:visited {

color: #006699;

text-decoration: none;

}

a:hover {

color: #006699;

text-decoration: underline;

}

a:active {

color: #006699;

text-decoration: none;

}

.style13 {color: #FFCC66}

-->

</style>

<script type="text/JavaScript">

<!--

function MM_callJS(jsStr) { //v2.0

return eval(jsStr)

}

//-->

</script>

</head>

 

<body>

<p><a name="home" id="home"></a></p>

<p> </p>

<table border="0" cellpadding="0" cellspacing="0" class="none">

<tr class="nomes">

<td width="378"><p>Professor: <strong class="texto1"><?php echo ucwords($_SESSION['MM_Username']); ?></strong></p> </td>

<td width="72">[<a href="restrito.php" target="iframe">voltar</a>] [<a href="<?php echo $logoutAction ?>" target="iframe">sair</a>] </td>

</tr>

<tr>

<td height="19" colspan="2"> </td>

</tr>

<tr>

<td height="24" colspan="2"> <div align="center">

<h4><strong class="nomes">Coordenação Departamento de Ciências Sociais e Humanas</strong><br />

</h4>

</div></td>

</tr>

<tr>

<td colspan="2"><blockquote class="nomes">

<p align="center"><span class="texto style13">.....................................................................</span></p>

<p><img src="../imagens/marca3.gif" width="13" height="13" /><strong> Actualizar Informação: </strong></p>

</blockquote></td>

</tr>

<tr>

<td colspan="2"><form method="post" name="form2" action="<?php echo $editFormAction; ?>">

<table align="center">

<tr valign="baseline">

<td><textarea name="informacao" cols="100" rows="10" class="form"><?php echo $row_infor['informacao']; ?></textarea></td>

</tr>

<tr valign="baseline">

<td><div align="center">

<input type="submit" class="button" value="Actualizar">

</div></td>

</tr>

</table>

<input type="hidden" name="id" value="<?php echo $row_infor['id']; ?>">

<input type="hidden" name="MM_update" value="form2">

<input type="hidden" name="id" value="<?php echo $row_infor['id']; ?>">

</form>

<p> </p></td>

</tr>

<tr>

<td colspan="2"><div align="center"><span class="texto"><strong>Documentos[<a href="#docs">ver+</a>]</strong></span>     <span class="texto"> <strong>Material de Apoio[<a href="#m_apoio">ver+</a>]</strong></span>        <span class="texto"><strong><a href="#insere">Inserir documento</a> </strong></span></div></td>

</tr>

<tr>

<td colspan="2"><div align="center">

<p class="texto style13"> </p>

<p class="texto style13">.....................................................................</p>

<p class="texto style13"> </p>

<p class="texto style13"> </p>

<p class="texto style13"> </p>

<p class="texto style13"> </p>

<p class="texto style13"> </p>

<p class="texto style13"> </p>

</div></td>

</tr>

<tr>

<td colspan="2"><a name="docs" id="docs"></a></td>

</tr>

<tr>

<td colspan="2"><img src="../imagens/marca3.gif" width="13" height="13" /> <span class="nomes"><strong>Documentos:</strong></span></td>

</tr>

<?php

 

do

{ ?>

<tr bordercolor="#FFCC66">

<td><p>

<?php

 

if ($totalRows_docs > 0) { // Show if recordset not empty ?>

<img src="../imagens/marca1.gif" /> <a href="<?php echo $row_docs['link']; ?>"><span class="texto"><?php echo $row_docs['nome']; ?></span></a>

<?php

 

} // Show if recordset not empty ?>

</p>

<p align="center"><span class="texto style13">.....................................................................</span></p></td>

<td><form id="elimina" name="elimina" method="post" action="">

<input name="id" type="hidden" id="id" value="<?php echo $row_docs['id']; ?>" />

<label>

<input name="apagar" type="image" class="button" id="apagar" onclick="return confirm('Confirma a eliminação do documento')" value="Apagar" src="imagens/Doc-Cancel.gif" alt="Eliminar documento" />

</label>

</form> </td>

</tr>

<?php } while ($row_docs = mysql_fetch_assoc($docs)); ?>

<tr>

<td colspan="2"><div align="right"><a href="#home" class="texto">[voltar]</a></div></td>

</tr>

<tr>

<td colspan="2"><p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p></td>

</tr>

<tr>

<td colspan="2"><p><a name="m_apoio" id="m_apoio"></a></p></td>

</tr>

<tr>

<td colspan="2"><img src="../imagens/marca3.gif" width="13" height="13" /> <span class="nomes"><strong>Material de Apoio :</strong></span></td>

</tr>

<?php do { ?>

<tr>

<td><p>

<?php if ($totalRows_mat_ap > 0) { // Show if recordset not empty ?>

<img src="../imagens/marca1.gif" width="7" height="11" /> <a href="<?php echo $row_mat_ap['link']; ?>" target="_blank"><span class="texto"><?php echo $row_mat_ap['nome']; ?></span></a>

<?php } // Show if recordset not empty ?>

</p>

<p align="center"><span class="texto style13">.....................................................................</span></p></td>

<td><form id="elimina1" name="elimina1" method="post" action="">

<label>

<input name="Submit" type="image" class="button" onclick="return confirm('Confirma a eliminação do documento')" value="Apagar" src="imagens/Doc-Cancel.gif" alt="Eliminar documento" />

</label>

<input name="nome" type="hidden" id="nome" value="<?php echo $row_mat_ap['nome']; ?>" />

</form>

</td>

</tr>

<?php } while ($row_mat_ap = mysql_fetch_assoc($mat_ap)); ?>

<tr>

<td colspan="2"><div align="right"><a href="#home" class="texto">[voltar]</a></div></td>

</tr>

<tr>

<td height="973" colspan="2"> </td>

</tr>

<tr>

<td colspan="2"><a name="insere" id="insere"></a></td>

</tr>

<tr>

<td colspan="2"><p><img src="../imagens/marca3.gif" width="13" height="13" /> <span class="nomes"><strong>Inserir Documento :</strong></span><br />

</p> </td>

</tr>

<tr>

<td colspan="2"><form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="form1">

<table align="center">

<tr valign="baseline">

<td align="right" nowrap class="nomes">Nome do Documento:</td>

<td><input name="nome" type="text" class="form" value="" size="32" /></td>

</tr>

<tr valign="baseline">

<td align="right" nowrap class="nomes">Seleccione o tipo de documento </td>

<td><label>

<select name="tipo" size="1" class="form" id="tipo">

<option>Seleccione o tipo do Documento</option>

<option value="mat_ap">Material de apoio</option>

<option value="doc">Documento</option>

<option value="legi">Legislação</option>

</select>

</label></td>

</tr>

<tr valign="baseline">

<td align="right" nowrap class="nomes">Observações:</td>

<td><textarea name="observacoes" cols="60" rows="6" class="form"></textarea></td>

</tr>

<tr valign="baseline">

<td align="right" nowrap class="nomes">Localizacao:</td>

<td><input name="link" type="file" class="form" id="link" size="32" /></td>

</tr>

<tr valign="baseline">

<td align="right" nowrap class="nomes"> </td>

<td><input name="submit" type="submit" class="button" onclick="return confirm ('Confirma a inserção do documento')" value="Inserir documento" /></td>

</tr>

</table>

<input type="hidden" name="id2" value="" />

<input type="hidden" name="MM_insert" value="form1" />

<input name="dat" type="hidden" value="<? echo date("Y-m-d"); ?> " />

<input name="professor" type="hidden" id="professor" value="<?php echo $_SESSION['MM_Username']; ?>" />

</form></td>

</tr>

<tr>

<td colspan="2"><div align="right"><a href="#home" class="texto">[voltar]</a></div></td>

</tr>

</table>

<p>'

</p>

<p> </p>

<p> </p>

</body>

</html>

<?php

mysql_free_result($infor);

 

mysql_free_result($docs);

 

mysql_free_result($mat_ap);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.