Autor Zpráva
serverteam.sk
Profil
Ahojte při menším slibu mi nedošlo že to asi neudělám

Problém: Potřebuji vytvořit systém který by zkontroloval kód a podle kódu stáhnul .rar soubor
Příklad : bude asi 50 uživatelů kterým pošlu unikátní kód a když ten kód napíšou stáhne se soubor s obsahem určeným přímo pro ně jde to vůbec? (jedná se o důležitá data)
PS: prosím nějaký kód bez použití MySQL

Napadl mě kód :
  if ($password == 12345){
      echo "ZDE SE ZAPOČNE STAHOVÁNÍ SOUBORU";
    }
    else {
      echo "<meta http-equiv='refresh' content='0; url=/' />";
    }
  }
  else {
    echo "<meta http-equiv='refresh' content='0; url=/' />";
  }
bude to fungovat ? když zadám kód 12345
Jzikes
Profil
Ahoj,
jde to.. :) Za tu podmínku stačí dát readfile($path); Do proměnné $path potom dáš cestu k souboru, který chceš stáhnout. Pak musíš nastavit v hlavičce, že nechceš soubor zobrazovat, ale chceš ho stáhnout. To z hlavy nedám, ale je to popsané zde: php.net/manual/en/function.readfile.php
-jz
juriad
Profil
serverteam.sk:
Zkusím to trošku zobecnit a učesat:
<?php
# umístění, kde jsou ty soubory
$filesLocation = __DIR__ . '/files/';

# seznam hesel a souborů, ke kterým patří
$files = array(
'12345' => 'soubor1.jpg', 
'23456' => 'soubor2.jpg',
'34567' => 'soubor3.jpg'
);

if ($_POST) {
  # pokud byl odeslán formulář
  
  if (isset($_POST['password']) && isset($files[$_POST['password']])) {
    # pokud uživatel zadal heslo a zadané heslo odpovídá nějakému souboru
    
    # pošleme mu ten soubor se správnými hlavičkami
    $file = $files[$_POST['password']];
    # aby soubor byl nabídnut ke stažení a měl výchozí název
    header('Content-Disposition: attachment; filename=' . $file);
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime = finfo_file($finfo, $filesLocation . $file);
    # aby prohlížeč nabídl otevření ve známém programu
    header('Content-Type: ' . $mime);
    finfo_close($finfo);
    # aby prohlížeč znal velikost a mohl ukázat progressbar
    header('Content-Length: ' . filesize($filesLocation . $file));
    readfile($filesLocation . $file);
  } else {
    # pokud uživatel nezadal heslo nebo je nesprávné
    
    # přesměrujeme zpět na sebe, aby se zobrazil formulář na heslo
    header('Location: '.$_SERVER['PHP_SELF']);
  }
} else {
  # uživatel ještě neodeslal formulář (třeba přišel na stránku poprvé nebo na ní byl přesměrován)
  
  # zobrazíme formulář
  echo <<<END
Zadej heslo:
<form method="POST">
  <input type="password" name="password">
  <input type="submit" value="Odeslat">
</form>
END;
}

# na konci skriptu nepiš ? >
serverteam.sk
Profil
ok děkuji funguje (sice mi při stahování padá server ale co se dá od freehostingu čekat )

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: