Datenschutz Impressum

NOF-Schule | Forum

zur Schule NOF-NetObjects-Tutorials von Tommy Herrmann


Download Passwortgeschützt
#1
Hallo,

ich versuche gerade einen Download auf meine Seite anzubieten. Diese Downloaddateien sollen aber nur für bestimmte User möglich sein. Darum möchte ich den Download nur mit Passwort ermöglichen.
Ich nutze folgenden Code:


Code:
<form action="seite.php" method="post"/>
Passwort : <input type="password" name="eingabe" size="20"/>
<input type="submit" value="Download"/>
</form>

<?
// Einstellungen
$passwort ="Passwort";
$link ="Link";
if($eingabe == "$passwort")
{
Header("Location: $link");
exit();
}
?>
Irgendwie will das alles nicht funktionieren. Die 1. Zeile (<form action...) wird angemeckert und ein Syntaxfehler ausgegeben. Kann mir jemand sagen was mit dem Code nicht stimmt?
Oder hat jemand ein funktionierendes Script parat?

Gruß
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#2
Hallo,
das ist mein Lösungsvorschlag:
PHP-Code:
<?php
// Einstellungen
$passwort ="Passwort";
$link ="Link";

if (isset(
$_POST["eingabe"])) {
 if (
$_POST["eingabe"] == $passwort) {
 
 header('Location: ' $link);
 
 exit();
 }
}
?><!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Download</title>
 </head>
<body>

<form action="" method="post"/>
<label>Passwort : <input type="password" name="eingabe" size="20" required="required"/></label>
<input type="submit" value="Download"/>
</form>

</body>
</html> 

Der Aufruf von header(...) muss immer vor der HTML-Ausgabe erfolgen!
Es grüßt euch,
Werner
https://werner-zenk.de - Webseiten erstellen, optimieren und aufpeppen

"Gib einem Menschen einen Fisch, und er wird für einen Tag satt.
Lehre ihn Fischen, und er wird ein Leben lang satt.
"
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#3
Das ging ja schnell thumbs up 

Wenn ich jetzt mehrere Dateien durch eine Passwort schützen möchte die ich zum Download anbiete, kann ich dann folgende Erweiterung hinzufügen?:


PHP-Code:
<?php
// Einstellungen
$passwort ="Passwort";
$link ="Link";
$passwort ="Passwort";
$link ="Link";
$passwort ="Passwort";
$link ="Link";
$passwort ="Passwort";
$link ="Link";
$passwort ="Passwort";
$link ="Link";

if (isset(
$_POST["eingabe"])) {
 if (
$_POST["eingabe"] == $passwort) {
 
 header('Location: ' $link);
 
 exit();
 }


Es muss nicht unbedingt jedesmal ein neues Passwort für jede Datei erstellt werden. Es darf ruhig ein- und das selbe Passwort sein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#4
Hallo,
so einfach ist es dann doch nicht  :D

1. Ich würde den Namen und das Passwort des Benutzers im Formular überprüfen.

2. Das Verzeichnis in dem die Dateien zum herunterladen liegen, muss durch eine .htaccess - Datei geschützt sein sonst könnte die Datei direkt über dem Browser aufgerufen und heruntergeladen werden.

Ich habe ein Beispiel (beispiel.zip) erstellt so wie es bei mir funktioniert:

PHP-Code:
<?php
// Einstellungen (Mindestens PHP 5.4 erforderlich!)

// Namen, Passwörter und Download-Dateien eintragen
$namen = [
 
   'Edwin Huber' => [
 
       'passwort' => '123',
 
       'download' => 'verzeichnis/datei1.zip'
 
   ],

 
   'Paul Meier' => [
 
       'passwort' => '1234',
 
       'download' => 'verzeichnis/datei2.zip'
 
   ],

 
   'Thomas Müller' => [
 
       'passwort' => '12345',
 
       'download' => 'verzeichnis/datei3.zip'
 
   ],
];

if (isset(
$_POST["name"])) {
 
// Name und Passwort überprüfen
 
if ($namen[$_POST["name"]]["passwort"] === $_POST["passwort"]) {

 
 // Datei herunterladen
 
 if (file_exists($namen[$_POST["name"]]["download"])) {
 
  header("Content-Type: application/zip"); // application/zip
 
  header("Content-Disposition: " . (!strpos($_SERVER["HTTP_USER_AGENT"], "MSIE 5.5") ? "attachment; " "") . "filename=" basename($namen[$_POST["name"]]["download"]));
 
  header("Content-Length: " filesize($namen[$_POST["name"]]["download"]));
 
  header("Content-Transfer-Encoding: binary");
 
  header("Cache-Control: post-check=0, pre-check=0");
 
  readfile($namen[$_POST["name"]]["download"]);
 
 }
 }
}
?><!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Download</title>
 </head>
<body>

<form action="" method="post">
 <label>Name : <input type="text" name="name" required="required"></label> 
 <label>Passwort : <input type="password" name="passwort" required="required"></label> 
 <input type="submit" value="Download">
</form>

</body>
</html> 


Angehängte Dateien
.zip   beispiel.zip (Größe: 2,35 KB / Downloads: 21)
Es grüßt euch,
Werner
https://werner-zenk.de - Webseiten erstellen, optimieren und aufpeppen

"Gib einem Menschen einen Fisch, und er wird für einen Tag satt.
Lehre ihn Fischen, und er wird ein Leben lang satt.
"
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#5
Moin Werner Smiling

Klasse thumbs up

Werners Beispiel live in NOF eingebaut:

http://www.nof-tutorials.com/Passwortschutz-Download/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#6
Hallo Tommy,
vielen Dank fürs testen. thumbs up  Ich habe das nur Lokal auf dem WAMP-Server gemacht.
Es grüßt euch,
Werner
https://werner-zenk.de - Webseiten erstellen, optimieren und aufpeppen

"Gib einem Menschen einen Fisch, und er wird für einen Tag satt.
Lehre ihn Fischen, und er wird ein Leben lang satt.
"
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#7
Hi,
wenn ich das richtig verstehe, müssen die passwortgeschützten Download-Dateien
in eine .htaccess liegen.
Wenn ich einen geschützten Bereich erstellen möchte, in dem man sich nie anmelden kann, meine PHP-Skripte aber Zugriff haben sollen, dann benötige ich keine .htpasswd Datei.
Die .htaccess-Datei muß dann folgende Zeilen beinhalten:


Code:
<Limit GET POST>
  order deny,allow
  deny from all
  satisfy any
</Limit>

ist das insoweit richtig?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#8
Micha,

hast Du Dir das Skript überhaupt schon runter geladen :eek: In Werners Beitrag #4 hängt das gesamte Skript als "beispiel.zip" (unten im Beitrag) zum Download doch mit dran ...

Die .htaccess Datei, mit diesem Inhalt, ist doch schon mit dabei:

Code:
Order Deny,Allow
Deny from all

Eine .htaccess mit einem "deny" verhindert den Zugriff von außen - nicht den Zugriff der eigenen Skripte.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#9
Oha...
das habe ich gerade bemerkt.  Cool
Aber mein Gedanke war nicht schlecht...werde mich der Sache gleich mal annehmen. Hoffe dass ich es hinbekomme - Danke thumbs up
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#10
... den Einbau von Werners Skript in NOF habe ich in meinem Tutorial hier beschrieben:

http://www.nof-tutorials.com/Passwortsch...torial.php
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#11
Hallo,

ja das klapp super.

Jetzt dazu ein paar Erweiterungsfragen:

1. Kann man anstatt auf eine Zip-Datei zu verlinken auch eine .php Datei aufrufen?

2. Kann man auf eine bestehende SQL Datenbank zugreifen um die Zugriffsberechtigung
entweder auf eine Zip oder php zu lenken?

Ich arbeite nämlich mit einem SQL Basierenden Terminplaner und habe dort in der
"kal_nutzer" Tabelle die Spalten "status" und "pwmd5" mal eingefügt. (Der Entwickler des Terminkalenders war damals so nett mir die Passwörter zusätzlich als md5 auszugeben und hat sein Script entsprechend ergänzt). Als Username gibt es die Spalte "benutzer" und eine "session" als id.
Ich wollte damit mal eine Datenbankabfrage in NOF realisieren die ich aber nach Wochen erfolgloser arbeit wieder verworfen habe. Kann halt nur versichen zusammen zu basteln und nicht wirklich php.

Ich träume nämlich schon länger von einer Anmeldemaske in meiner Menüleiste die einmal auf einen Internen Downloadbereich für Mitgleider führt und ggf. gleich die session des Kalenders startet.( muss man sich nur einmal anmelden). Dies könnte man dann gleich noch mit einem Einzel-Dateidownload für nicht Mitglieder versehen denen ich ein Passwort dann bei Bedarf zuteile.


Wenn das machbar wäre, hätte jemand Lust und Zeit mir dabei zu helfen?

Gruß Markus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#12
Zitat:1. Kann man anstatt auf eine Zip-Datei zu verlinken auch eine .php Datei aufrufen?
Du könntest für jeden Benutzer eine eigene php-Datei erstellen oder für alle eine gemeinsame Datei.

Zitat:2. Kann man auf eine bestehende SQL Datenbank zugreifen um die Zugriffsberechtigung
entweder auf eine Zip oder php zu lenken?
Das ist nicht so schwer, Du überprüfst anhand der DB-Tabelle den "benutzer" und das Passwort - ist das ok liest du die Spalte "entweder/oder" ! (diese enthält eine zip oder php) aus.
Je nach dem was drinnen steht, lenkst du den Benutzer zur Zip-Datei oder php-Datei.
Es grüßt euch,
Werner
https://werner-zenk.de - Webseiten erstellen, optimieren und aufpeppen

"Gib einem Menschen einen Fisch, und er wird für einen Tag satt.
Lehre ihn Fischen, und er wird ein Leben lang satt.
"
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#13
Hallo, ich habe jetzt einfach mal versucht das was ich durch googeln zusammengetragen habe in die Tat zu setzten.

Da es nicht funktioniert Mad  bitte die experten nicht lachen für den kauderwelsch den ich da
zusammengetragen habe.

Hier mal meine Download php:

Code:
<?php

session_start();
include "SQL_Daten.php";

// Name, Passwort und Zugangabereich überprüfen
$_POST["benutzer"] = trim($_POST["benutzer"]);
$_POST["pwmd5"] = trim($_POST["pwmd5"]);
$select = $VERBINDUNG->prepare("SELECT `benutzer`, `pwmd5`, `status` FROM `" . $TBL_NAME . "` WHERE `benutzer` = :benutzer");
$select->bindValue(':benutzer', $_POST["benutzer"]);
$select->execute();
$reg = $select->fetchAll(PDO::FETCH_OBJ);
if (count($reg) == 1) {
 if ($reg[0]->benutzer == $_POST["benutzer"] &&
     $reg[0]->pwmd5 == md5($_POST["pwmd5"]) {
  $_SESSION["login"] = true;
  exit;
 }
 else {
  $fehler = true;
 }
}
if ($_SESSION["login"] = true &&
   $status = 0) {
'download' => 'verzeichnis/datei1.zip'
  }
if ($_SESSION["login"] = true &&
   $status = 1) {
href => 'verzeichnis/intern.php'
  }
}
?>


Die SQL_Daten php sieht ohne Zugangadaten so aus:

Code:
<?php

$SERVER = "mysql:host=localhost;
 dbname=test";
$BENUTZER = "root"; // Datenbank-Benutzername
$PASSWORT = ""; // Datenbank-Passwort

$TBL_NAME = "kal_nutzer";

try {
$VERBINDUNG = new PDO($SERVER, $BENUTZER, $PASSWORT);
}
catch (PDOException $e) {
echo $e->getMessage();
}
?>tch (PDOException $e) {
echo $e->getMessage();
}
?>

Und die Eingabefelder sehen so aus:

Code:
<form action="" method="post">
<label>Name : <input type="text" name="benutzer" required="required"></label>
<label>Passwort : <input type="password" name="pwmd5" required="required"></label>
<input type="submit" value="Download">
</form>


Kann mir das bitte jemand gerade rücken?


Gruß Markus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#14
Also hier mein Vorschlag (ungetestet)
Datei: Download php
PHP-Code:
<?php
session_start
();
include 
"SQL_Daten.php";

// Name, Passwort und Zugangabereich überprüfen
$_POST["benutzer"] = trim($_POST["benutzer"]);
$_POST["pwmd5"] = trim($_POST["pwmd5"]);
$select $VERBINDUNG->prepare("SELECT `benutzer`, `pwmd5`, `status` FROM `" $TBL_NAME "` WHERE `benutzer` = :benutzer");
$select->bindValue(':benutzer'$_POST["benutzer"]);
$select->execute();
$reg $select->fetchAll(PDO::FETCH_OBJ);
if (
count($reg) == 1) {
 if (
$reg[0]->benutzer == $_POST["benutzer"] &&
 
    $reg[0]->pwmd5 == md5($_POST["pwmd5"]) {

 
 // Download
 
 if ($reg[0]->status == 0) {

 
  $download "verzeichnis/datei1.zip";
 
  if (file_exists($download)) {
 
   header("Content-Type: application/zip"); // application/zip
 
   header("Content-Disposition: " . (!strpos($_SERVER["HTTP_USER_AGENT"], "MSIE 5.5") ? "attachment; " "") . "filename=" basename($download));
 
   header("Content-Length: " filesize($download));
 
   header("Content-Transfer-Encoding: binary");
 
   header("Cache-Control: post-check=0, pre-check=0");
 
   readfile($download);
 
   exit;
 
  }
 
 }

 
 // Weiterleitung
 
 else if ($reg[0]->status == 1) {

 
  $_SESSION["login"] = true;
 
  header("Location: verzeichnis/intern.php"); // Geschützte Datei

 
 }
 }
 else {
 
 header("Location: Download php"); // Diese Datei!
 
}
}
?>
<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Anmeldung</title>
 </head>
<body>

<h1>Anmeldung</h1>

<form action="" method="post">
<label>Name : <input type="text" name="benutzer" required="required"></label>
<label>Passwort : <input type="password" name="pwmd5" required="required"></label>
<input type="submit" value="Download">
</form>

</body>
</html> 

Mit der Datei: SQL_Daten.php  scheint was nicht zu stimmen oder wurde diese nur falsch kopiert?
PHP-Code:
<?php
$SERVER 
"mysql:host=localhost;
 dbname=test"
;
$BENUTZER "root"// Datenbank-Benutzername
$PASSWORT ""// Datenbank-Passwort

$TBL_NAME "kal_nutzer";

try {
$VERBINDUNG = new PDO($SERVER$BENUTZER$PASSWORT);
}
catch (
PDOException $e) {
echo 
$e->getMessage();
}
?>
Es grüßt euch,
Werner
https://werner-zenk.de - Webseiten erstellen, optimieren und aufpeppen

"Gib einem Menschen einen Fisch, und er wird für einen Tag satt.
Lehre ihn Fischen, und er wird ein Leben lang satt.
"
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
#15
Hallo Werner, vielen Dank. Ich werde das mal testen.

Bei der SQL_Daten. PHP habe ich nur die Anmeldedaten raus genommen.


Gruß Markus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Smile Netobjects Fusion 2015 Vollversion Download Paula111 25 3.016 29.08.2020, 09:17
Letzter Beitrag: Wolfgang Z
  Netobjects Fusion 15 Download McL 84 13.406 26.07.2020, 10:24
Letzter Beitrag: Wolfgang Z
  NOF 2015 Installationsdatei Download Niklas92 22 4.987 02.05.2020, 07:55
Letzter Beitrag: Wolfgang Z
  download NOF 15 FrankPeter 29 2.093 31.03.2020, 16:10
Letzter Beitrag: Wolfgang Z
  Download NOF 15 versgoreiner 10 1.414 08.12.2019, 14:49
Letzter Beitrag: Rancher
  Programm NOF 13 startet nach Download nicht mehr Dr Dengl 12 1.555 23.10.2018, 12:39
Letzter Beitrag: Wolfgang Z
  software download einrichten nof15us 2 791 16.07.2018, 17:52
Letzter Beitrag: nof15us
  NOF15 - Seriennummer verlegt, Essential download nicht Stefan_G 27 5.156 22.03.2017, 21:45
Letzter Beitrag: Martin73
  NoF 2015 Download nach Upgrade Fyodor 4 2.715 01.11.2016, 11:07
Letzter Beitrag: Fyodor
  netobjects 15 vorlagen download Pitti 3 2.415 04.04.2016, 07:39
Letzter Beitrag: Pittiplatsch



Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
nach oben An den Anfang der Seite scrollen
NetObjects Fusion Infos, Downloads und Updates Diese Website wird durch Bot-Trap vor Spam geschützt!