Ir para conteúdo

POWERED BY:

Arquivado

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

gumetis

Contador de Clicks Avancado

Recommended Posts

Boa tarde,

 

Estou precisando fazer um Contador de Clicks Avançado, basicamente vai ter que ser assim:

 

Gravar todos os dados no Banco SQL, Tabelas: id, link, qtd_downloads, data.

 

Bom como eu não manjo muito bem de PHP não sei por onde nem começar alguem poderia me ajudar?

 

Obrigado.

Erick

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?
chdir('./DIRETORIO/DOS/ARQUIVOS');
 
if (!is_file($arquivo)) { // se o arquivo não é arquivo ...
echo "Erro: arquivo $file não encontrado !";
exit; // ... aborte o programa
}
 
$con = mysql_connect('localhost','usuario','senha');
mysql_select_db('database');
 
$consulta = "SELECT arquivo,qtd_downloads FROM contador WHERE arquivo='$arquivo'";
$res = mysql_query($consulta,$con);

/*
certificar se o arquivo já foi clicado alguma vez. Se o arquivo ainda
não consta em nossa tabela, vamos inserir um novo registro, caso contrário
vamos somar um hit ao registro existente
*/
 
if ($saida = mysql_fetch_array($res)) { // registro existe
$hit = ++$saida[1]; // some 1 (um) ao número de cliques
$update = "UPDATE contador SET qtd_downloads = $hit WHERE arquivo='$arquivo'";
mysql_query($update,$con); // atualize o registro
} else {
$insert = "INSERT INTO contador (arquivo) VALUES ('$arquivo')";
mysql_query($insert,$con); // insira o novo arquivo na tabela. O valor padrão
// de hit é 1 (um)
}
$tamanho = filesize($arquivo); // pega o tamanho do arquivo em bytes
 
// enviar os cabeçalhos HTTP para o browser
header("Content-Type: application/save");
header("Content-Length: $tamanho");
header("Content-Disposition: attachment; filename=$arquivo");
header("Content-Transfer-Encoding: binary");
 
// abrir e enviar o arquivo
$fp = fopen("$arquivo", "r");
fpassthru($fp);
fclose($fp);
?>

 

CREATE TABLE contador (
arquivo VARCHAR(100) PRIMARY KEY NOT NULL,
qtd_downloads INT DEFAULT 1
);

Não é do jeito que você queria.. mas tá ae um pouco.. é só você pedir pro povo te ajudar agora.. a terminar o resto.

 

e para se fazer downloads.. você deve digitar no navegador assim:

 

download.php?arquivo=ARQUIVO.rar

 

você pode alterar o nome, você escolhe o nome do arquivo..

 

mas baixe sempre colocando o ?arquivo=ARQUIVO.rar

 

você pode colocar baixar.php?arquivo=ARQUIVO.rar

 

você escolhe..

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Estou tentando fazer este codigo funcionar mais não esta indo, está dizendo: Erro: arquivo não encontrado !

 

Já tentei de td coloquei o arquivo na raiz e nada...:

 

chdir('');

chdir('./');

- O arquivo arquivo.zip está na raiz.

 

chdir('./ARQUIVOS/');

chdir('ARQUIVOS');

chdir('ARQUIVOS/');

- Diretorio que criei ARQUIVOS e o arquivo arquivo.zip está dentro.

 

Nada funcionou sempre diz q o arquivo nao é encontrado.

 

Obs: Codigo php (baixar.php)

baixar.php?arquivo=arquivo.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok..

 

olha.. veja se o nome verdadeiro da pasta está do jeito que você tá colocando (maiúsculas, minúsculas..)

 

você explicar esses pontos antes do diretório..

 

 

quando vem um "./", é porque você está setando um diretório onde se encontra o arquivo!

EX.: ./arquivo.zip

 

quando vem um "../", é porque você está setando um diretório B que se encontra antes do diretório A!

EX.: ../arquivo.zip

 

E assim por diante..

 

 

Verifique tbm se o arquivo está em maiusculas ou minusculas.. pode ser um desses problemas.. isso acontece de vez em quando, se tiver uma letra maiuscula, dá erro..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok..

 

olha.. veja se o nome verdadeiro da pasta está do jeito que você tá colocando (maiúsculas, minúsculas..)

 

você explicar esses pontos antes do diretório..

 

 

quando vem um "./", é porque você está setando um diretório onde se encontra o arquivo!

EX.: ./arquivo.zip

 

quando vem um "../", é porque você está setando um diretório B que se encontra antes do diretório A!

EX.: ../arquivo.zip

 

E assim por diante..

 

 

Verifique tbm se o arquivo está em maiusculas ou minusculas.. pode ser um desses problemas.. isso acontece de vez em quando, se tiver uma letra maiuscula, dá erro..

 

 

Olá Good bele...

 

Cara então nao sei porque está dando erro olha ai veh se não está certo.

 

Coloquei o arquivo "001.zip" na pasta raiz onde tem o arquivo com o codigo .php "baixar.php"

 

na config do .php está assim: chdir('./');

 

e quando clico no Browser pra fazer o teste coloco assim: "baixar.php?arquivo=001.zip"

 

td está em minuscula, e mesmo assim está dando o erro de não encontrar o arquivo. Oque pode ser?

 

Valeuuuuuuuuuu

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha..

 

 

então vai no seu navegador, e digite o diretório lá.. como se você estivesse baixando normal..

 

 

http://www.seusite.com.br/001.zip

 

veja se encontra ou não o arquivo.. se não encontrar, eu não sei o que fazer..

 

 

Então qd eu clico: "http://localhost/suporte/001.zip" baixa o arquivo normalmente.

 

Mais quando eu clico: "http://localhost/suporte/baixar.php?arquivo=001.zip" da o erro: Erro: arquivo não encontrado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. não sei não..

 

tente colocar isso

 

$arquivo = $_GET['arquivo'];

 

antes de

 

if (!is_file($arquivo)) { // se o arquivo não é arquivo ...

 

se não der certo, eu não sei.. e deixo para outra pessoa te ajudar, pq aqui não tá dadno nenhum problema..

 

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. não sei não..

 

tente colocar isso

 

$arquivo = $_GET['arquivo'];

 

antes de

 

if (!is_file($arquivo)) { // se o arquivo não é arquivo ...

 

se não der certo, eu não sei.. e deixo para outra pessoa te ajudar, pq aqui não tá dadno nenhum problema..

 

 

flw

 

Opa, Good agora foi...

 

Mais não está gravando no Banco.

 

<?
chdir('./');

$arquivo = $_GET['arquivo'];

if (!is_file($arquivo)) { // se o arquivo não é arquivo ...
echo "Erro: arquivo $file não encontrado !";
exit; // ... aborte o programa
}
 
$con = mysql_connect('localhost8889','root','root');
mysql_select_db('database');
 
$consulta = "SELECT arquivo,qtd_downloads FROM contador WHERE arquivo='$arquivo'";
$res = mysql_query($consulta,$con);

/*
certificar se o arquivo já foi clicado alguma vez. Se o arquivo ainda
não consta em nossa tabela, vamos inserir um novo registro, caso contrário
vamos somar um hit ao registro existente
*/
 
if ($saida = mysql_fetch_array($res)) { // registro existe
$hit = ++$saida[1]; // some 1 (um) ao número de cliques
$update = "UPDATE contador SET qtd_downloads = $hit WHERE arquivo='$arquivo'";
mysql_query($update,$con); // atualize o registro
} else {
$insert = "INSERT INTO contador (arquivo) VALUES ('$arquivo')";
mysql_query($insert,$con); // insira o novo arquivo na tabela. O valor padrão
// de hit é 1 (um)
}
$tamanho = filesize($arquivo); // pega o tamanho do arquivo em bytes
 
// enviar os cabeçalhos HTTP para o browser
header("Content-Type: application/save");
header("Content-Length: $tamanho");
header("Content-Disposition: attachment; filename=$arquivo");
header("Content-Transfer-Encoding: binary");
 
// abrir e enviar o arquivo
$fp = fopen("$arquivo", "r");
fpassthru($fp);
fclose($fp);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve configurar direito..

 

Acho que você tá errando..

 

BASE:

$con = mysql_connect('ip OU localhost','usuario do banco de dados','senha do banco de dados');
mysql_select_db('banco de dados que você criou');

Se tiver tudo certo mesmo, você deve criar uma tabela..

 

CREATE TABLE contador (
arquivo VARCHAR(100) PRIMARY KEY NOT NULL,
qtd_downloads INT DEFAULT 1
);

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve configurar direito..

 

Acho que você tá errando..

 

BASE:

$con = mysql_connect('ip OU localhost','usuario do banco de dados','senha do banco de dados');
mysql_select_db('banco de dados que você criou');

Se tiver tudo certo mesmo, você deve criar uma tabela..

 

CREATE TABLE contador (
arquivo VARCHAR(100) PRIMARY KEY NOT NULL,
qtd_downloads INT DEFAULT 1
);

 

Opa entaum está certinho aqui eu uso MAC e uso o MAMP a config é:

 

servidor mysql: localhost8889

user:root

senha:root

 

base:database

 

Tenho outro sistema de cadastro de pessoas q funciona certinho com essas configs...

 

O que sera q esta errado?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você já criou a tabela na database?

 

Se sim, e se tiver mostrando algum erro na página.. copia e cola pra eu ver aqui..

Compartilhar este post


Link para o post
Compartilhar em outros sites

você já criou a tabela na database?

 

Se sim, e se tiver mostrando algum erro na página.. copia e cola pra eu ver aqui..

 

 

Opa já criei sim um banco com o nome "database"

e importei essas conf para o SQL.

CREATE TABLE contador (

arquivo VARCHAR(100) PRIMARY KEY NOT NULL,

qtd_downloads INT DEFAULT 1

);

 

e nada não da erro nenhum e nem grava no banco... fica sempre vazio a tabela "contador"

 

Table Op Msg_type Msg_text

database.contador check status OK

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça essa atualização e veja se aparece alguma mensagem agora..

 

 

Substitua isso:

 

 

$con = mysql_connect('ip OU localhost','usuario do banco de dados','senha do banco de dados');
mysql_select_db('banco de dados que você criou');

 

por

 

$hostsql = "localhost8889";
$usersql = "root";
$passsql = "root";
$dbsql = "database";

mysql_connect("$hostsql", "$usersql", "$passsql")or die("<br><font size='2' face='Tahoma'><b>Erro de Configuração:</b><br>Erro na conexão!</font>");
mysql_select_db("$dbsql")or die("<br><font size='2' face='Tahoma'><b>Erro de Configuração:</b><br>Erro ao selecionar Banco de Dados!</font>");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça essa atualização e veja se aparece alguma mensagem agora..

 

 

Substitua isso:

 

 

$con = mysql_connect('ip OU localhost','usuario do banco de dados','senha do banco de dados');
mysql_select_db('banco de dados que você criou');

 

por

 

$hostsql = "localhost8889";
$usersql = "root";
$passsql = "root";
$dbsql = "database";

mysql_connect("$hostsql", "$usersql", "$passsql")or die("<br><font size='2' face='Tahoma'><b>Erro de Configuração:</b><br>Erro na conexão!</font>");
mysql_select_db("$dbsql")or die("<br><font size='2' face='Tahoma'><b>Erro de Configuração:</b><br>Erro ao selecionar Banco de Dados!</font>");

 

 

 

EDIÇÃO:

 

INTERNET LENTA ¬¬.. POR ISSO QUE SAIU 2 POSTS.. MAL AE!

 

 

Vamos lá deu esse erro agora.

 

 

Erro de Configuração:

Erro na conexão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hm.. simplesmente, não tá conectando ao banco de dados.

 

 

a configuração tá errada.. tente criar um novo usuário, uma nova senha, e crie a database.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Good,

 

Cara vou testar no servidor Linux e no Windows q tenho em casa, pq aqui naum estah dando certo nem com usuario q eu criei continua o mesmo problema.

 

Amanha eu posto a resposta...

 

Obrigadao mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Good,

 

Cara testei tando no servidor Linux com Apache aqui e no Wiondows com o WampServer, o erro é o mesmo:

 

Erro de Configuração:

Erro na conexão!"); mysql_select_db("$dbsql")or die("

Erro de Configuração:

Erro ao selecionar Banco de Dados!"); $consulta = "SELECT arquivo,qtd_downloads FROM contador WHERE arquivo='$arquivo'"; $res = mysql_query($consulta,$con); /* certificar se o arquivo já foi clicado alguma vez. Se o arquivo ainda não consta em nossa tabela, vamos inserir um novo registro, caso contrário vamos somar um hit ao registro existente */ if ($saida = mysql_fetch_array($res)) { // registro existe $hit = ++$saida[1]; // some 1 (um) ao número de cliques $update = "UPDATE contador SET qtd_downloads = $hit WHERE arquivo='$arquivo'"; mysql_query($update,$con); // atualize o registro } else { $insert = "INSERT INTO contador (arquivo) VALUES ('$arquivo')"; mysql_query($insert,$con); // insira o novo arquivo na tabela. O valor padrão // de hit é 1 (um) } $tamanho = filesize($arquivo); // pega o tamanho do arquivo em bytes // enviar os cabeçalhos HTTP para o browser header("Content-Type: application/save"); header("Content-Length: $tamanho"); header("Content-Disposition: attachment; filename=$arquivo"); header("Content-Transfer-Encoding: binary"); // abrir e enviar o arquivo $fp = fopen("$arquivo", "r"); fpassthru($fp); fclose($fp); ?>

 

Obs: Cara testei outro codigo aqui pra ver se era acesso ao DB e nada funcionou certinho... agora o codigo q estamos tentando esta dando este erro.

 

Obrigado.

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.