ich hab jetzt auch versucht register_globals = On zu setzen. Allerdings funktioniert das Skript noch immer nicht. D.h. es schaut - zumindest bei mir - so aus, als ob es unabhängig davon wäre, ob register_globals auf On oder Off ist.
Beiträge von maciek
-
-
Zitat von webhornet
kann eigentlich nicht sein... bei register_globals = true würdest du auf die variable so zugreifen können: $PHP_AUTH_USER
ich kann weder über $PHP_AUTH_USER noch über $_SERVER['PHP_AUTH_USER'] drauf zugreifen. Und außerdem funktioniert's bei mir auch unter PHP 5.0.0 nicht und bei webhornet schon.Zitat von webhornethmm... vielleicht safe mode?
glaub ich auch nicht.Zitat
; Safe Mode
;
safe_mode = OffEDIT:
ich hab jetzt noch ein bissi weitergesucht und zwar in Richtung des Bugs von PHP und hab zwei Bugreports gefunden.1) http://bugs.php.net/bug.php?id=7677
da verstehe ich nicht ganz, was Sie mit "status code" meinen. Hat jemand Ideen?2) http://bugs.php.net/bug.php?id=26606
da steht, daß die Daten in $_SERVER['PHP_AUTH_USER'] zu finden sein müßten. Tun sie aber wie gesagt nicht. Bei mir ist register_globals = Off . Wenn das was hilft, kann ich das ja lokal umstellen. Allerdings nicht am Server. Jetzt würde ich nach einer Möglichkeit suchen, das runtime umzustellen. Da gibt's ja ini_set() und ini_get(). Laut Doku ist aber register_globals mit ini_set nur auf dem Level PHP_INI_PERDIR "changeable" und das folgende Skript funkt leider nicht.PHP$register = ini_get("register_globals"); echo "<br>old register globals: \"$register\""; if (! ini_set("register_globals", "1")) echo "<br>couldn't set register_globals"; else echo "<br>new register globals: \"$register\"";
Hat jemand Ideen, was man da machen könnte? Was ist überhaupt mit PHP_INI_PERDIR gemeint? Oder gibt es was Schlaueres und soll ich diese Idee nicht weiter verfolgen?
EDIT2:
und dann hab ich noch was gefunden, was nützlich sein könnte, was ich aber nicht ganz check:Zitat
If you're under an Apache environment that has this option enabled, but you're on shared hosting so have no access to php.ini, you can unset this value for your own site by placing the following in an .htaccess file in the root:php_flag register_globals 0
The ini_set() function actually accomplishes nothing here, since the variables will have already been created by the time the script processes the ini file change.
And since this is the security chapter, just as a side note, another thing that's helpful to put into your .htaccess is:
<Files ".ht*">
deny from all
</Files>That way no one can load .htaccess in their browser and have a peek at its contents.
wie funktioniert das genau mit dem platzieren des php_flag im .htaccess? Hat jemand eine Ahnung? Bzw. kann ich das im php-file selber steuern? Oder zumindest so machen, daß das flag nur für ein bestimmtes .php file gesetzt wird und nicht für die ganze dir? Geht das mit
oder bin ich da auf dem Holzweg? -
Zitat von webhornet
welche version nimmst du? vielleicht isses ein apache bug...
lokal hab ich Apache/1.3.29 (Win32) PHP/5.0.0 und am Server ist Apache/1.3.29 (Unix) PHP/4.3.4 Kann das bis der älteren Apache Version zusammenhängen? In der oben genannten Doku steht nix über eine Einschränkung der Apacheversion. -
also ich steh total an. Es gibt in der PHP-Doku unter http://at.php.net/features.http-auth einen Artikel über WWW-Authentication und PHP. Da gibt es folgenden Beispiel-Code drinnen
PHP
Alles anzeigen<?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'Text to send if user hits Cancel button'; exit; } else { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; } ?>
den nehm ich her und kopier in mir in meine Datei. Führe diese aus und ... es will einfach nicht funken. $_SERVER['PHP_AUTH_USER'] wird einfach nicht gesetzt. Ich hab's auch schon mit $_SERVER['REMOTE_USER'] ausprobiert, es mag mich aber trotzdem nicht.Ich hab auch schon das skript auf einem anderen Server (als meinem lokalen) laufen lassen. Nada. Was könnte ich falsch machen? Bitte um kreative Ideen.
-
Zitat von Wings-of-Glory
ich weiß nicht, ob du das nicht eh weißt, aber...
das password und das login kannst du über eine url weitergeben: z.b. http://franzilogin:franzipassw@www.irgendwas.bla
das ist so in etwas das wonach ich gesucht hab. Allerdings ... der Nachteil ist, daß dann auch der username und das password in der History sichtbar sind. Oder kann man das irgendwie vermeiden?@Pear::Auth: Die Authentifierung an sich funkt bei mir schon. Aber danke für den Tipp. Ich werd mir das eine oder andere sicher anschauen. Vielleicht haben die es ja schlauer gelöst und ich kann was lernen.
-
Zitat von rck
PEAR ist eine Sourcecode-Bibliothek, kein Modul! Du spielt also einfach zusätzlich zu Deinen .php-Dateien ein paar von PEAR ein -- fertig.
ok, mein Fehler. Allerdings brauch ich eigentlich nur etwas ganz einfaches (es sollte zumindest einfach sein) und mich da jetzt mit der ganzen Bibliothek zu spielen erscheint mir da ein bissi wie mit einer Kanone auf Spatzen zu schießen.Zitat von rck
PEAR::Auth ist ein (mächtigerer) Ersatz für .htaccess, keine Ergänzung. Wofür genau brauchst Du .htaccess, außer für die Benutzerauthentifizierung?
ich hab mir jetzt einen user franzi mit dem passwort franzi erstellt. Mit dem funktioniert das .htaccess + .htpasswd auf meinem Order "xyz".Die Daten eines LogIns am Server - hab ich jetzt rausgefunden - kann man mit $_SERVER['PHP_AUTH_USER'] und $_SERVER['PHP_AUTH_PW'] rauslesen. D.h. wenn ich mich über das Server-LogIn mit "franzi" + "franzi" anmelde, sehe ich über die zwei Servervariablen diese Daten.
Ich kann auch die zwei Variablen setzen. Allerdings wenn ich mich zuerst über mein Skript einlogge, die Variablen setze, dann sehe zwar daß sich die $_SERVER-Variablen geändert haben, allerdings verlangt der Browser noch immer eine Authentifikation wenn ich auf den Ordner "xyz" zugreifen möchte. Weiß jemand woran das liegen könnte?
-
zunächst mal danke für die Tipps. Allerdings ...
Das ganze soll auf einem durchschnittlichen Server laufen sollen (z.B. Inode) oder sonst wo. Am besten unter PHP 4.0 oder 4.1 Zusatzmodule kann ich zwar bei mir installieren, aber bis die Fritzen von irgendeinem Provider das gecheckt haben ... das ist immer ein Problem. Daher würde ich gern die Finger von irgendwelchen Zusatzmodulen lassen.
Der Ansatz mit dem selber schreiben des .htaccess bzw. .htpasswd ist ja schon mal hilfreich. An so was hab ich auch schon gedacht. Allerdings ... das Skript funkt jetzt nicht wirklich und ich hab jetzt keine Zeit mehr, mich heute noch damit zu spielen.
Meine Kernfrage ist allerdings noch nicht beantwortet: Wenn ich mein eigenes UserManagement habe, mich über dieses UserManagement authentifziert habe, dann auf ein mit .htaccess geschütztes Verzeichnis zugreifen möchte, zu dem ich mit dem gleichen usernamen und password Zugriff habe, wie zum Usermanagement ... gibt es dann eine Möglichkeit meine Daten (username + password) an den Server zu schicken, sodaß ich diese nicht noch 1x eintippen muß?
-
Ich hab auch ein Problem mit PHP 5.0.0 und der Installation von extensions. Allerdings hab ich das schon in einem anderen Forum und zwar hier gepostet. Daher würde Euch bitten - wenn Ihr mir genauso gut helfen könnt wie Zidane - die Antworten eben dort zu posten.
Thanx 4 help.
EDIT: Hab's gelöst. Lösung steht in dem anderen Forum.
-
also ich hab gerade php5 (statt php4) bei mir am Komputa installiert. Alles wunderbar. Nur "leider" hat php5 das mysql nicht mehr includiert und man muß es als modul dazuinstallieren.
Dazu hab ich mir die install-Anweisung durchgelesen. Alles wunderbar. Hab die extension_dir auf "e:\networks\server\php\extensions\" gesetzt. Hab das extensions=php_mysql.dll auskommentiert. Restarte den Apache ... und es kommt die Fehlermeldung:
"PHP Startup: Unable to load dynamic library 'e:\network\server\php\extensions\php_mysql.dll' - Das angegebene Modul wurde nicht gefunden."
Genau die Datei existiert aber. Was mach ich falsch?
P.S.: Wenn ich ein Skript starte, daß mysql verwendet bekomme ich die Fehlermeldung "Fatal error: Call to undefined function mysql_connect() in d:\homepage\cms\projekt\scripts\workers\dbConnection.php on line xx"
Ich hab auch versucht die .dll files in WINNT\system bzw. WINNT\system32 zu kopieren, weil ich in irgendeinem Forum gelesen habe, daß das hilft. Hilft aber nicht ...
P.P.S.: Hab ein Tutorial zur Installation eines anderen Moduls gefunden. Da steht, daß man php5ts.dll in WINNT\system32 und auch das php_[module].dll in eben diesen Ordner kopieren soll. Das hab ich auch gemacht. Hilft noch immer nix.
EDIT: Ich hab's gelöst! Nach einigen Stunden suchen, bin ich jetzt auf einen Thread in einem Diskussionsforum gestoßen, wo die Lösung steht. Man muß nämlich auch die libmysql*.dll files nach winnt\system32 kopieren. Schade nur, daß das im install.txt nirgendwo steht bzw. die Fehlermeldung vom Apache so toll ist, daß man sofort weiß, wie der Fehler zustandekommt ...
-
Folgende Tatsachen: Ich möchte ein Verzeichnis mit .htaccess vor unerlaubten zugriffen schützen. Auf der anderen Seite habe ich ein Usermanagment über ein DB und PHP.
Frageee: Wie kann ich die zwei Verbinden? D.h. wie kann ich es anstellen, daß wenn sich ein User über mein PHP-Skript authentifiziert hat, er gleichzeitig auch von .htaccess durchgelassen wird ohne ein zweites mal ein Passwort eingeben zu müssen?
Eigentlich möchte ich ja auch nicht, daß er das Paßwort für .htaccess kennt, damit er nicht direkt (ohne das PHP-Skript) auf das Verzeichnis zugreift. Die Idee, die ich hätte wäre, daß wenn er sich eingeloggt hat, dann das PHP-Skript die (universellen - für alle user gleichen Daten) an .htaccess schickt (?) ... geht das irgendwie so?
Thanx 4 help.
-
Du kannst Flash genauso mit Java (JavaServerPages = jsp) kombinieren, wie Du Flash mit PHP kombinierst.
-
folgende Aufgabenstellung: Ich möchte in einem Text alle URLs (also "Wörter", die mit http:// oder www. beginnen) ersetzen. Und zwar das ganze in einen <a href="..."> usw. Tag ersetzen (ich hoffe, es ist klar, was gemeint ist). Und zwar sollen alle die mit http:// anfangen in einem neuen Fenster aufgehen und alle anderen nicht.
Frageee: Hat jemand ein fertiges PHP-Skript, das soetwas tut? Bevor ich mich nämlich länger damit beschäftige, wollte ich mal fragen, ob es mir nicht einer von Euch geben könnte.
Thanx.
-
Also auch ich bin mir nicht sicher was Du genau meinst, was Du aber machen kannst, ist Werte von Variablen in den JavaScript-Code einfügen. Also folgendes machen.
...
javascript
...
<?php
echo javascript.anweisung.irgendwas = $irgendeinePHPvariable;
?>
...
javascript
...geht das in die richtige Richtung?
P.S.: Bitte Zugriff auf DB über javascript auf keinen Fall machen :ahhh: (sollte eigentlich gar nicht möglich sein), weil Du prinzipiell keine Sicherheits-Sachen über den Client abwickeln solltest.
-
@Tschebel:
yup. Bei PHPMyAdmin haben sie wie gesagt selber was zusammengebastelt. Nur haben die so viele features, die ich nicht brauche und so so viele includes, daß das alles ziemlich mühsam zum zamstückeln ist.dose:
ich hab's jetzt mit select * from gemacht. Allerdings speichere ich es jetzt nicht in .sql-Format, sondern in php-arrays. Das ist insofern praktisch, als daß ich beim restore der DB das bak-File einfach includen kann und dann ohne weitere Spielereien auf die Daten zugreifen kann.Die Struktur der Datenbank wird bei mir sowieso über PHP angelegt, von daher muß ich die Struktur nicht herauslesen.
-
Zitat von dose
Besser mysqldump nehmen oder wenn Du unbedingt willst, die Verzeichnisse aus mysql/var kopieren...aber mit PHP is das irgendwie brrr
naja ... es über PHP zu machen, ist irgendwie die Vorgabe. Die Datenbank soll sich nämlich in einem regelmäßigen Abstand selbständig (automatisch) backupen. D.h. wenn sich der User einloggt und zur Datenbank connected, soll überprüft werden, ob das letzte Backup nicht zu weit zurück liegt, und wenn das der Fall ist, soll automatisch ein Backup gemacht werden.auf mysql/var hab ich (zB auf dem Inode-Server) so viel ich weiß keinen Zugriff. Aber PHPMyAdmin schafft das BackUp ziemlich gut, also muß es doch eine existierende, gut funktionierende Möglichkeit geben, wie man das ganze angeht. Bevor ich aber anfang mich durch die ganzen includes vom PHPMyAdmin zu hacken, wollte ich mal die Frage stellen, ob es nicht irgendwo sauber kodiert existiert.
-
ich möchte mit PHP eine Backup-Funktion für eine (mysql-)DB schreiben. Und zwar sollte die Möglichkeit gegeben sein, daß über ein PHP-Skript die Struktur der DB sowie darin vorhandene Daten in eine .sql Datei exportiert werden. So ähnlich wie im PHPMyAdmin (-> Exportieren).
Hat jemand schon ein ähnlich Skript geschrieben, oder weiß jemand wo man sich sowas Fertiges saugen könnte? Ist es schlauer das mit der system-Anweisung (mysqldump) zu machen, oder doch besser mit PHP selber zusammen zu stückeln?
Thanx for help.
-
-
eine Frageee: Wie kann man dieses kleine Logo neben der URL im URL-Pulldown des Browsers erzwingen? Also z.B. das Zeichen des ORF auf http://orf.at oder das Logo des Instituts auf http://www.ims.tuwien.ac.at
Thanx für Hilfe.
-
1) brauchst Du das Formular nicht mit PHP aufzubauen, weil da sowieso keine Variablen drinnen vorkommen. Da brauchst Du Dir keine Mühe mit \"bla\" usw. machen. Auch wenn Du mal variablen einbauen solltest, kannst Du in einem PHP Skript kannst Du folgendes machen:
<?php
... php Teil 1 ...
?>
HTML teil
<?php
... php Teil 2 ...
?>2) was gegen die einfachen Anführungszeichen sprechen soll, wenn Du einen String in die DB einfügen willst, verstehe ich nicht ganz. Du kannst sehr wohl einfach "start of any text '$var' and continue here ..." schreiben.
3) longtext? Was willst Du da bitte speichern? Schau mal hier. Ein longtext sind 4GB (!) an Zeichen!
4) bei Schreibbefehlen an die Datenbank sollte man immer POST benutzen.
5) langer Rede kurzer Sinn: Ich weiß jetzt auf den ersten Blick nicht, wo der Fehler liegen könnte.
-
Du meinst also, daß die Seite einfach anzeigen soll, daß eine Arbeit vom Admin durchgeführt wird? Naja ... Du könntest z.B. in einem Frame (mit 1px Höhe) ein Skript laufen lassen, das nachschaut, ob der (die) User rausgekickt werden sollen, und wenn das der Fall ist z. B. mit einem JavaScript-Befehl eine Message an den User schicken oder überhaupt das Fenster schließen, oder neu laden.
Geht der Tipp in die richtige Richtung?