Loading:

Książka Zend Framework 3. Poradnik Programisty.

System pobierania plików PHP MySQL

Skrypt wyświetla listę plików do pobrania.



Napisz Artykuł

Listing


//Skrypt tworzący listę plików do pobrania na podstawie informacji zawartych w bazie danych index.php

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
<TITLE>Pobieranie plików</TITLE>
</HEAD>
<BODY><H3>
<?PHP

function printList()
{
  if(!$link = mysql_connect("localhost", "login", "hasło")){
    //echo("Problem z połączeniem z bazą danych.");
    return;
  }
  if(!mysql_select_db("nazwa_bazy")){
    //echo("Problem z połączeniem z bazą danych.");
    mysql_close($link);
    return;
  }

  $query = "SELECT ID, NAME FROM FILES";

  if(!$result = mysql_query($query)){
    //echo("Problem z bazą danych: odrzucone zapytanie");
    mysql_close($link);
    return;
  }
  while(($row = mysql_fetch_row($result)) != false){
    $id = $row[0];
    $file = $row[1];

    if(($file = strrchr($file, "/")) == false)
      continue;
    $file = substr($file, 1, strlen($file));

    echo("<A HREF=\"download.php?id=");
    echo("$id\">$file</A><BR>");
  }
  mysql_close($link);
}
printList();
?>
</BODY>
</HTML>



//Skrypt wysyłający wybrany plik do przeglądarki download.php

<?PHP

function getFileName($id)
{
  if(!$link = mysql_connect("localhost", "login", "hasło")){
    //echo("Problem z połączeniem z bazą danych.");
    return false;
  }
  if(!mysql_select_db("nazwa_bazy")){
    //echo("Problem z połączeniem z bazą danych.");
    mysql_close($link);
    return false;
  }

  $query = "SELECT NAME FROM FILES WHERE ID='$id'";

  if(!$result = mysql_query($query)){
    //echo("Problem z bazą danych: odrzucone zapytanie");
    mysql_close($link);
    return false;
  }

  $row = mysql_fetch_row($result);
  if(!$row){
    //echo("Nie ma takiego wpisu w bazie");
    mysql_close($link);
    return false;
  }
  mysql_close($link);
  return $row[0];
}

function send($name)
{
  if(!file_exists($name)){
    echo('Nie ma takiego pliku na serwerze!');
    return false;
  }

  if(($fileName = strrchr($name, "/")) == false){
    echo('Nie ma takiego pliku na serwerze!');
    return false;
  }
  $fileName = substr($fileName, 1, strlen($fileName));
  $fd = fopen($name,"r");
  $size = filesize($name);
  $contents = fread($fd, filesize($name));

  fclose($fd);

  header("Content-Type: application/octet-stream");
  header("Content-Length: $size;");
  header("Content-Disposition: attachment; filename=$fileName");

  echo $contents;
}
if(isSet($_GET['id'])){
  if(($name = getFileName($_GET['id'])) === false){
    echo('Nie ma takiego pliku na serwerze!');
  }
  else{
    send($name);
  }
}
else{
  echo('Nie ma takiego pliku na serwerze!');
}
?>


//Kod SQL dla tego skryptu

CERATE TABLE FILES(
ID INTEGER UNIQUE NOT NULL,
NAME VARCHAR(255) NOT NULL
)


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=2680

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors