php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.07.2006, 18:56  
Neuer Benutzer
 
Registriert seit: 13.06.2006
Beiträge: 22
Funky_
Standard .htpasswd (im geschützten Ordner!) per skript ändern!

HI!

Habe ein skript das mir die .htpasswd Datei im per .htaccess geschützten Ordner (meineseite/members/.htpasswd) ändern soll!
das skript das die .htpasswd Datei öffnet liegt außerhalb des Ordners members (meineseite/passwort_change.php)!
Wenn jetzt ein neuer Besucher sich für die Members Area anmelden will und dieses skript aufruft, erscheint die fehlermeldung:
"Warning: fopen(members/.htpasswd): failed to open stream: Permission denied in /meineseite/passwort_change.php on line 40"!

In line 40 steht der Befehl:
Code:
$datei=fopen($pwddatei,"w");
der die .htpasswd zum schreiben öffnen sollte!

die Rechte von .htpasswd sind auf vollen Zugriff gesetzt!

Vermute mal das Problem liegt darin, das ich auf die im Geschützten Bereich liegende Datei zugreife, ohne mich angemeldet zu haben!
in der Members Area funktioniert das skript jedenfalls einwandfrei!

Wie kann ich es realisieren das ich per script (das außerhalb des geschützen Bereiches liegt!), eben genau diese Datei ändern kann???

gibts da ne möglichkeit???

Kann mich ja nicht jedesmal selber einloggen um das passwort manuell zu ändern! Und der neue Benutzer eben auch nicht da seine Anmeldedaten garnicht in der .htpasswd eingetragen werden können????

Für eine Lösung wäre ich sehr dankbar!???

MFG Funky_
Funky_ ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.07.2006, 19:01  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Machs ohne .htaccess und direkt über PHP:
http://de.php.net/manual/de/features.http-auth.php
Zergling-new ist offline  
Alt 20.07.2006, 06:45  
Neuer Benutzer
 
Registriert seit: 13.06.2006
Beiträge: 22
Funky_
Standard

Und wie sicher ist das ganze ohne htaccess?

Gibts da keine möglichkeit die datei zu ändern????
Funky_ ist offline  
Alt 20.07.2006, 12:34  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ob die HTTP-Authentifizierung über htaccess oder PHP erfolgt ist egal.

Wenn du mit PHP allerdings htaccess-Dateien schreiben willst, kannst du noch viel mehr Unheil anrichten, als wenn "nur" deine Authentifizierung nicht klappt.
Außerdem gibts auf der Seite haufenweise Lektüre und Code-Beispiele.
Zergling-new ist offline  
Alt 22.07.2006, 12:31  
Neuer Benutzer
 
Registriert seit: 13.06.2006
Beiträge: 22
Funky_
Standard

OK das ist ja schön und gut, aber auf die art und weise muss ich dann ein tabelle verwenden die das Passwort und Nutzernamen speichert!

Das problem ist das ich einzelne Ordner die zum Beispiel Private Pics enthalten dadurch nicht schützen kann! Die Prüfung ob sich jemand eingeloggt hat, funktioniert zwar auf den einzelnen pages, aber eine JPG Datei in einem Unterordner ist dadurch nicht geschützt und kann problemlos angesprochen werden!??

Wie kann ich das verhindern???

Genau das ist der Grund warum ich .htaccess verwenden wollte! Hier wird der komplette Ordner geschützt und nicht nur die einzelnen Pages!
Funky_ ist offline  
Alt 22.07.2006, 14:12  
Gast
 
Beiträge: n/a
Standard Re: .htpasswd (im geschützten Ordner!) per skript ändern!

Zitat:
Zitat von Funky_
Habe ein skript das mir die .htpasswd Datei im per .htaccess geschützten Ordner (meineseite/members/.htpasswd) ändern soll!
a. wie sieht das Script aus?
b. warum verwendest Du keine korrekten Pfade?

Zitat:
..., erscheint die fehlermeldung:
"Warning: fopen(members/.htpasswd): failed to open stream: Permission denied in /meineseite/passwort_change.php on line 40"!

die Rechte von .htpasswd sind auf vollen Zugriff gesetzt!
c. welche Rechte hat das Verzeichnis und welche Rechte hat die Datei?
d. "voller Zugriff" ist Unfug. Hoffentlich hat die Kundschaft keinen FTP Zugriff.

Zitat:
gibts da ne möglichkeit???
Ja, wenn Du die Fragen a bis d beantwortet hast.
 
Alt 22.07.2006, 16:38  
Gast
 
Beiträge: n/a
Standard

Schau Dir mal bei pear.php.net File_HtAccess an.
http://pear.php.net/package/File_HtAccess
 
Alt 22.07.2006, 17:49  
Neuer Benutzer
 
Registriert seit: 13.06.2006
Beiträge: 22
Funky_
Standard

OK!

Zu Punkt a:

So sieht das Skript aus:

[setze-passwort.php]:

Code:
<?php
// Passwort Funktion
function setze_passwort($pwddatei,$nutzer,$nutzer_pwd="") {
if (empty($nutzer) || empty($pwddatei) || strlen($nutzer)<3) {
return false;
}
if (file_exists($pwddatei)) {
$pwd=file($pwddatei);
} else {
$pwd=array();
}
// Neue Passwort Variable initialisieren
$neu_pwd="";
// Sämtliche Nutzer durchlaufen
foreach($pwd as $eintrag) {
if (strstr($eintrag,$nutzer.":")==$eintrag) {
$change_nutzer=true;
if (empty($nutzer_pwd)) {
continue;
}
$neu_pwd.=
$nutzer.":".crypt($nutzer_pwd,$nutzer[2].$nutzer[1])."\n";
} else {
$neu_pwd.=trim($eintrag)."\n";
}
}
// Nutzer neues Passwort zuweisen
if (!isset($change_nutzer)) {
if (empty($nutzer_pwd)) {
return false;
} else {
$neu_pwd.=
$nutzer.":".crypt($nutzer_pwd,$nutzer[2].$nutzer[1])."\n";
}
}
// Daten sichern
$datei=fopen($pwddatei,"w");
if (is_resource($datei)) {
flock($datei,LOCK_EX);
fwrite($datei,$neu_pwd);
flock($datei,LOCK_UN);
fclose($datei);
return true;
} else {
return false;
}
}
?>
Aufgerufen wird es, um einen neuen Nutzer einzutragen, über eine Include Anweisung aus folgender Datei:

[anmeldung.php]:

Code:
<?php
session_start();

$passwd = "";
$menge = rand(5,10);
$pass = array($menge);

for ($i = 0; $i <= ($menge - 1); $i++) {
   $grossKlein = rand(1,2);
   if ($grossKlein == 1) 
       {
        $nmr = rand(97,121);
        }
        else 
        {
        $nmr = rand(65,90);
        }
        
 
$pass[$i] = chr($nmr);
}

for($i = 0; $i <= ($menge -1); $i++) { 
  $passwd =  $passwd.$pass[$i];
  }

$email = $_POST['email'];
$benutzer = $_POST['nickname'];
$passwort = $passwd;

include("setze-passwort.php");
if (setze_passwort("../../members/.htpasswd",$benutzer,$passwort)) {echo "Anmeldung erfolgreich!"; } else { echo "Anmeldung fehlgeschlagen!"; };

echo "
";

if (mail($email,"Anmeldung auf Funk-Electric.de","Benutzer: ".$benutzer." Passwort: ".$passwort)) {echo "E-Mail erfolgreich versand!"; } else { echo "E-Mail Versand fehlgeschlagen!"; };
?>
Über Session Variablen werden aus einem Formular heraus, die nötigen Daten für die E-Mailadresse, Nickname... an <anmeldung.php> übermittelt!

Das Skript kreiert per Zufall ein Passwort, das an die entsprechende E-Mailadresse gesendet wird.
Außerdem ruft es per include Anweisung, das zweite Skript <setze-passwort.php> auf, welches das kreierte Passwort und den übergebenen Nickname in die .htpasswd schreibt.


Zu Punkt b:

Korrekte Pfade:

[anmeldung.php] skripte/anmeldung/anmeldung.php

[setze-passwort.php] skripte/anmeldung/setze-passwort.php

[formular_anmeldung.php] frames/inhalt/formular_anmeldung.php

und die .htaccess und .htpasswd Datei liegt unter:

members/.htaccess

bzw.:

members/.htpasswd



Zu Punkt c:

Rechte:

Die Datei hat volle Rechte (777)! weiß ja das das nicht sein muss aber um dahergehende Fehler auszuschließen hab ich sie dementsprechend gesetzt!

Das Verzeichnis (755).



Zu Punkt d:

Is wirklich unsinn, stimm ich dir zu aber kenn mich mit der Rechteverteilung nicht so aus deswegen hab ich sie mal hochgesetzt weil ich dachte der Fehler liegt evtl. daran!
Und das ganze läuft momentan eh nur zum test im Unterverzeichnis meines Servers, von daher kann da eigentlich noch nicht viel passieren!

Ahja meine PHPverion ist: 4.4.2

So ich denke das reicht als info oder?

Naja auf jedenfall funktioniert das ganze so nicht!
Wie kann ich das lösen????
Weis jemand Rat?


PS.:

Zu Bruchpilot:

Der Link: http://pear.php.net/package/File_HtAccess funktioniert leider nicht!
Funky_ ist offline  
Alt 22.07.2006, 18:03  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Funky_
OK!
Fein.

Das Script gucke ich mir später mal an. Bin mal gespannt, ob Du die Paßwörter richtig codiert hast und ob das Zeilenende auch ganz sicher ein \n ist.

Erst mal das:

Zitat:
Korrekte Pfade:
und die .htaccess und .htpasswd Datei liegt unter:
members/.htaccess

bzw.:

members/.htpasswd
Das sind unter Linux keine korrekten Pfade. Entweder man bezieht sich auf die Wurzel oder auf das aktuelle Verzeichnis.

Im .htaccess File muß Du eh den absoluten Pfad zum .htpasswd eintragen. Sonst meckert der.

Zitat:
Zu Punkt c:
Rechte:

Die Datei hat volle Rechte (777)! weiß ja das das nicht sein muss aber um dahergehende Fehler auszuschließen hab ich sie dementsprechend gesetzt!

Das Verzeichnis (755).
Beides falsch. Das Verzeichnis muß zwingend auf 0777 gesetzt werden, weil sonst der Apache dort nix schreiben darf. Deshalb funktioniert Dein Script ja nicht.

Das File muß auf 0666 gesetzt werden, weil es weder ausführbar noch ein
Verzeichnis ist.

Zitat:
Ahja meine PHPverion ist: 4.4.2
So ich denke das reicht als info oder?
Ja.

Ich jetzt gucke ich mir das Script an, ob Du auch wirklich das beachtet hast:
http://de2.php.net/crypt -> Example 3. Using crypt() with different encryption types

Derf Apache erwartet nämlich verschlüsselte Paßwörter.
Zitat:
Der Link: http://pear.php.net/package/File_HtAccess funktioniert leider nicht!
Sowas kommt auch bei php.net mal vor, daß die Kiste gerade mal gewartet oder sonstwas wird.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zugriff mit session auf Ordner begrenzen Diego1978 PHP Tipps 2008 1 08.07.2008 06:38
[Erledigt] PHP -&gt; Ordner anlegen der sich auch beschreiben lässt?! Nightuser PHP Tipps 2008 13 30.06.2008 23:51
Serverbeschränkung (Ordner beschränkung) triopsi Server, Hosting und Workstations 2 29.04.2008 17:07
ein Skript startet ein zweites... ajo_silent PHP-Fortgeschrittene 8 03.05.2006 13:42
TreeMenu Fatal Error PHP Tipps 2006 8 07.04.2006 11:22
Skript &amp;amp;amp;quot;tarnen&amp;amp;amp;quot;? Off-Topic Diskussionen 17 07.08.2005 19:42
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
SKRIPT GESUCHT - Werbung auf einer site anzeigen Beitragsarchiv 4 29.08.2004 14:07
ordner in einem verzeichnis auslesen und anzeigen lindner PHP Tipps 2004 5 19.08.2004 00:03
WebFTP: php denkt die ordner wären dateien... phpfortgeschrittener PHP Tipps 2004 15 09.08.2004 18:38
Ordner per Skript erstellen --> Rechte Problem PHP Tipps 2004 2 06.07.2004 14:19
Ordner lesen --> Baumstruktur --> Problem PHP Tipps 2004 0 30.06.2004 17:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php übergebene variablen tarnen, htaccess über php ändern, php htpasswd, htpasswd script, .htpasswd ändern mit php, php htpasswd ändern, htpasswd php, http://www.php.de/php-tipps-2006/41291-htpasswd-im-geschuetzten-ordner-per-skript-aendern.html, htaccess passwort ändern php, htpasswd php script, htpasswd, .htpasswd, php htpasswd schreiben, htpasswd mit php ändern, htpasswd bearbeiten, htpasswd rechte, php htpasswd script, htaccess per php ändern, htaccess mit php bearbeiten, htpasswd ändern php

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.