login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Vraagje over downloadsysteem met log (Opgelost)

Offline spiky - 13/05/2009 14:51
Avatar van spikyNieuw lid Hoi,

ik heb een goed werken, en veilig download systeempje gemaakt, Echter kom er niet uit hoe ik hier een "log" functie in kan bouwen.
De log functie heb ik al, maar werkt niet.

Wellicht dat het niet kan ivm de headers?
Als ik de mysql_query regel weghaal werk het wel.

Ik roep deze pagina aan via een form op een andere pagina.

Dit is mijn code:
  1. <?php
  2.  
  3. //variable
  4. $dir = "/usr/home/www/downloads/";
  5.  
  6. if (isset($_POST["file"])) {
  7. if($_POST['file'] == "49709854fea1812658b000b3dba3999c"){
  8. $file = "documentx.pdf";
  9. $download = true;
  10.  
  11. } elseif ($_POST['file'] == "d054eb5e5da488946aa6eb33fac13862"){
  12. $file = "documenty.pdf";
  13. $download = true;
  14.  
  15. } elseif ($_POST['file'] == "5b327ad423a7020d4edeaaf387a2c658"){
  16. $file = "documentz.exe";
  17. $download = true;
  18.  
  19. } else {
  20. $download = false;
  21. }
  22.  
  23. if(isset($_SESSION['uid'])){
  24. mysql_query("INSERT INTO ulogin (uid, date, ip, type) values ('".$_SESSION['uid']."', '".date('Y-m-d')."', '".$_SERVER['REMOTE_ADDR']."','".$file."')");
  25. }
  26.  
  27. // $_SESSION['ulog'] = $file;
  28. $file = $dir.$file;
  29.  
  30. if(file_exists($file) && $download == true){
  31.  
  32. // Force the download
  33. header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
  34. header("Content-Length: " . filesize($file));
  35. header("Content-Type: application/octet-stream;");
  36. readfile($file);
  37.  
  38. }
  39. }
  40. ?>


Wie kan mij de oplossing vertellen?
Als ik dus de Mysql_Query weghaal werkt het wel goed.

12 antwoorden

Gesponsorde links
Offline ArieMedia - 13/05/2009 15:00 (laatste wijziging 13/05/2009 15:01)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Waarscheinlijk is je SQL verkeerd..
IPV van date('y-m-d') kan je beter de SQLfunctie NOW() hiervoor worden je SQL word dan

  1. INSERT INTO ulogin (uid, date, ip, type) VALUES ('".$_SESSION['uid']."', NOW(), '".$_SERVER['REMOTE_ADDR']."','".$file."')"


Edit: En ik raad je trouwens aan om bovenaan $download = false te zetten.
Offline spiky - 13/05/2009 15:28
Avatar van spiky Nieuw lid Hij blijft nu in iedergeval niet meer hangen, en komt wel met de de file!
De $download staat nu bovenaan! (bedankt voor de tip)

Echter voert hij de SQL query niet uit!  
(ook niet wanneer ik de session controle eraf haal.)
Offline Wim - 13/05/2009 15:33 (laatste wijziging 13/05/2009 15:34)
Avatar van Wim Crew algemeen volgens mij is "date" een gereserveerd keyword van mysql. Verander dit naar bvb downloaddate of het nederlandse "datum".

//edit: voor de duidelijkheid, ik heb het over je kolomnaam 
Offline spiky - 13/05/2009 15:35
Avatar van spiky Nieuw lid Het gekke is dat ik mysql_query ook in een functie heb staan die ik aanroep bij het inloggen, die gaat echter wel ok..
maar zal het even proberen!
Offline Wim - 13/05/2009 15:37
Avatar van Wim Crew algemeen Anders eventjes wat meer debuggen. Bijvoorbeeld m.b.v. PHP.net: mysql_error
Offline ArieMedia - 13/05/2009 15:42
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Dat is inderdaad een gereserveerde naam. dit kan je oplossen door IPV
date het zo op te schrijven `date` Dan zit SQL het als een veld, en niet als een waarde/functie
Offline spiky - 13/05/2009 15:47
Avatar van spiky Nieuw lid Zojuist even de Mysql_error() erachter gezet, en bleek dat ik geen connectie had (was vergeten dat het niet ge include was, en dus geen connectie heeft.)
na de datasbase connectie toe te voegen, gebruik ik nu de volgden Query:
  1. mysql_query("INSERT INTO ulogin (uid, logdate, ip, type) values ('".$_SESSION['uid']."', NOW() , '".$_SERVER['REMOTE_ADDR']."','".$file."')") OR die(mysql_error());

Ik krijg geen foutmelding van MySql, dus zou goed lijken!
Echter word mijn databaseje niet bijgewerkt!
Ik blijf zoeken! 
Offline ArieMedia - 13/05/2009 16:10
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
spiky schreef:
Zojuist even de Mysql_error() erachter gezet, en bleek dat ik geen connectie had (was vergeten dat het niet ge include was, en dus geen connectie heeft.)
na de datasbase connectie toe te voegen, gebruik ik nu de volgden Query:
[..code..]
Ik krijg geen foutmelding van MySql, dus zou goed lijken!
Echter word mijn databaseje niet bijgewerkt!
Ik blijf zoeken! 
Doe eens voordat je de SQL invoert

echo $sql; die();
Plak $sql in je phpmyadmin en kijk wat het doet.
Offline spiky - 13/05/2009 16:36
Avatar van spiky Nieuw lid Als ik de query echo, en plak in de PHPmyadmin insert hij hem netjes..

INSERT INTO ulogin (uid, logdate, ip, type) values ('2', NOW() , '127.0.0.1','test.exe')

Zal vanavond weer even kijken.
Even laten rusten  
(dan zie je het ook vaak wel)
Offline ArieMedia - 13/05/2009 16:38
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Als hij het netjes insert dan is de SQL goed, maar de code fout ;)
Offline Wim - 13/05/2009 16:50
Avatar van Wim Crew algemeen Echo vlak voor je query eens een willekeurige waarde (BINNEN de if), zo weet je of die sessie wel geset is....
Offline spiky - 14/05/2009 09:13
Avatar van spiky Nieuw lid Heb het probleem gevonden...
$_SESSION['uid'] moest zijn $_SESSION['userid']..

Bedankt allen voor de moeite!
(aan de hand van jullie tips, toch weer wat puntjes verbeterd! )
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.209s