PHP Einstellungen

Alles, was PHP betrifft, kann hier besprochen werden.

PHP Einstellungen

Postby stephan_1 » 18. April 2008 19:09

Hey,

habe ein Problem. Habe in der VHOSTS Datei jetzt für XAMPP 2 verschiedene Domains angelegt. Jetzt habe ich versucht, irgendwie SESSIONS domainübergreifend zu benutzen. Welche EInstellung muss ich vornehmen, damit das funktioniert? Das müsste dann doch auch bei meinem VSERVER klappen oder?

Eine zweite Frage: Kann ich ein Verzeichnis einstellen, in dem keine Scripts ausgeführt werden? Also kein PHP, CGI, etc? Nur HTML und alles clientseitige? Weil nämlich Benutzer in diesen Ordner Dateien hochladen können sollen, und dann wäre es dumm ihnen die MÖglichkeit zu geben, die Dateistruktur des Servers zu durchforsten xD

Vielen Dank schonmal

STEPHAN
stephan_1
 
Posts: 7
Joined: 18. April 2008 19:04

Postby Wiedmann » 18. April 2008 19:14

2 verschiedene Domains angelegt.

Komplett verschiedene?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby stephan_1 » 19. April 2008 14:02

jap, habe jetzt

testeite1.de
testseite2.de
stephan_1
 
Posts: 7
Joined: 18. April 2008 19:04

Postby Nobbie » 19. April 2008 14:23

>Jetzt habe ich versucht, irgendwie SESSIONS domainübergreifend zu benutzen. Welche EInstellung muss ich vornehmen, damit das funktniert?

Wenn das ginge, wäre das ein schlimmer Fehler im Session Konzept.

>Kann ich ein Verzeichnis einstellen, in dem keine Scripts ausgeführt werden?

Für CGI ist das supereinfach, weil CGI Skripte nur in extra dafür definierten Verzeichnisse ausgeführt werden (ScriptAlias Direktive).

Und PHP kann man einfach abschalten via .htaccess, einfach AddType auf *.php definieren mit Typ text/html - dann werden die PHP Scripte wie HTML Seiten behandelt.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby stephan_1 » 19. April 2008 14:35

okay, andere ausführbare Sprachen gibt es ja dann auch nicht mehr oder übersehe ich was?

Zu den Sessions: Ich dachte die würden alle immer auf dem Server abgelegt, dann müsste er doch auch auf sie zugrerifen können oder? Also weil die beiden domains sind auf meinem einen XAMPP konfiguriert. Oder gibt es noch eine andere Möglichkeit, vll über eine Subdomain?

Danke!

Stephan
stephan_1
 
Posts: 7
Joined: 18. April 2008 19:04

Postby Wiedmann » 19. April 2008 15:44

Kann ich ein Verzeichnis einstellen, in dem keine Scripts ausgeführt werden?

Die einfachste Lösung wäre, in diesem Verzeichnis eine .htaccess mit diesem Inhalt anzulegen:
Code: Select all
ForceType application/octet-stream


BTW:
Nobbie wrote:Für CGI ist das supereinfach, weil CGI Skripte nur in extra dafür definierten Verzeichnisse ausgeführt werden (ScriptAlias Direktive).

Beim XAMPP wird CGI grundsätzlich in jedem Verzeichnis ausgeführt, nicht nur im ScriptAlias.

Nobbie wrote:Und PHP kann man einfach abschalten via .htaccess,

Für PHP alleine wäre das normal:
Code: Select all
php_flag engine off

in der .htaccess



jap, habe jetzt
testeite1.de / testseite2.de

In dem Fall müsstest du dir einen eigenen Session-Handler basteln...

Oder gibt es noch eine andere Möglichkeit, vll über eine Subdomain?

Mit Subdomains ist das dann kein Problem. Du musst als "session.cookie_domain" nur die Hauptdomain konfigurieren. Wenn du z.B: dieses Subdomains hast:
sub1.example.com / sub2.example.com

wäre "session.cookie_domain" dann:
.example.com
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby stephan_1 » 20. April 2008 01:24

Hey,

Wiedmann wrote:
Kann ich ein Verzeichnis einstellen, in dem keine Scripts ausgeführt werden?

Die einfachste Lösung wäre, in diesem Verzeichnis eine .htaccess mit diesem Inhalt anzulegen:
Code: Select all
ForceType application/octet-stream



ja, nur dass dann leider alle Dateien nur herunterladbar sind, was auch nicht in meinem Sinne war. Ich wollte lediglich alle Scriptsprachen (serverseitige) ausschalten für dieses Verzeichnis. Geht das nur so? Andernfalls müsste man per <FilesMatch> alle erlaubten eintragen, wenn der Typ dem nicht entspricht dann diese FUnktion aufrufen...


jap, habe jetzt
testeite1.de / testseite2.de

In dem Fall müsstest du dir einen eigenen Session-Handler basteln...


Okay habe das jetzt mal versucht. Übergebe nun von der Domain testseite1.de die PHPSESSID in der URL an testseite2.de, des Weiteren haben beide in der htaccess php_value session.save_path auf den selben Pfad gesetzt. Nur wenn jetzt auf testseite2.de dieses Script aufgerufen wird, dann ist für den ersten Aufruf die SESSION vorhanden, aber wenn ich dann weiter navigiere (ohne erneut die SessionID in der URL mitzuliefern) setzt er eine eigene Sessionid. Was mittelmäßig schlecht ist...

Code: Select all
if(!isset($_GET[PHPSESSID]) or session_id() == "") {
  session_start();
} else {
  if (isset($_GET[PHPSESSID])) session_id($_GET[PHPSESSID]);
}


Hat jemand eine Idee, wie das funktionieren könnte, ohne dass man jedesmal die ID in der URL mitliefern muss? Ich bin davon ausgegangen dass ich mit

Code: Select all
session_id($_GET[PHPSESSID]);


dafür sorgen kann, dass er das in einem Cookie macht. Aber er übernimmt die ID einfach nicht. Ein Cookie legt er trotzdem an, nur eben mit einer neuen Sessionid. -.-

Vielen Dank!

Stephan
stephan_1
 
Posts: 7
Joined: 18. April 2008 19:04

Postby Xardas der Dunkle » 20. April 2008 09:41

Hat jemand eine Idee, wie das funktionieren könnte, ohne dass man jedesmal die ID in der URL mitliefern muss? Ich bin davon ausgegangen dass ich mit


Wiedmann wrote:Mit Subdomains ist das dann kein Problem. Du musst als "session.cookie_domain" nur die Hauptdomain konfigurieren. Wenn du z.B: dieses Subdomains hast:
sub1.example.com / sub2.example.com

wäre "session.cookie_domain" dann:
.example.com


------

Code: Select all
if(!isset($_GET[PHPSESSID]) or session_id() == "") {
  session_start();
} else {
  if (isset($_GET[PHPSESSID])) session_id($_GET[PHPSESSID]);
}


Argh, es funktioniert zwar ist trotzdem ein grober Fehler. Die Schlüssel müssen in Anführungszeichen. Sonst denkt php es handelt sich um eine Konstante. D.h. falls es nun eine Konstante namens PHPSESSID gäbe würde er $_GET['Wert der Konstante PHPSSESID'] aufrufen und nicht: $_GET['PHPSESSID'].
Auch wenn er bei nicht existieren selbiger dort den namen der Konstante hinschreiben würde .... das ist trotzdem noch lange kein Grund es so zu machen, das ist eine schwere Fehlerquelle die man leicht aus der Welt räumen kann ;).
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby Nobbie » 20. April 2008 10:40

>ja, nur dass dann leider alle Dateien nur herunterladbar sind, was auch nicht in meinem Sinne war.

Natürlich werde sie dann einfach angezeigt - aber Du hast eigentlich immer noch nicht präzisiert, was Du denn genau für ein Verhalten wünschst. Was soll denn für welche Dateitypen passieren? Oder sollen gar die FTP Verzeichnisse einfach außerhalb von DocumentRoot liegen (also für Apache gar nicht erreichbar)?
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby stephan_1 » 20. April 2008 12:19

Hey,

okay erstmal zu dem Session-Problem für alle die das gleiche Problem haben:

Code: Select all
if(isset($_GET['PHPSESSID'])) {
  session_id($_GET['PHPSESSID']);
  session_start();
} else {
  session_start();
}


Dann klappts auch Domainübergreifend wenn beim ersten mal die SessionID in der URL mitgeliefert wird und die Session-Ablage-Pfade für beide Domains gleich sind...

Danke erstmal :) Das mit den Konstanten war mir bis jetzt nicht klar gewesen! :)

Natürlich werde sie dann einfach angezeigt - aber Du hast eigentlich immer noch nicht präzisiert, was Du denn genau für ein Verhalten wünschst. Was soll denn für welche Dateitypen passieren? Oder sollen gar die FTP Verzeichnisse einfach außerhalb von DocumentRoot liegen (also für Apache gar nicht erreichbar)?


Okay, sorry vielleicht habe ichs wirklich nicht richtig erklärt. Also ich habe ein Verzeichnis dateien/, in das jeder Benutzer Dateien hochladen kann, die er dann aufrufen kann, wenn er will. Z.B. Bilder, die er dann auch verlinken kann damit sie auf einer anderen Internetseite anzeigbar sind. Jetzt möchte ich aber nicht, dass da jemand eine PHP-Datei hochläd und z.B. mir damit meine Datenbank angreift oder irgendwelche Dateien löscht. Oder von mir aus auch mit anderen serverseitigen Scriptsprachen... Ich dachte einfach die Ausführung solcher Dateien verhindern, nur wie? Oder gibt es noch eine andere Möglichkeit? Also hier habe ich XAMPP und im Internet einen VServer...

Danke schon mal!
STEPHAN
stephan_1
 
Posts: 7
Joined: 18. April 2008 19:04

Postby Xardas der Dunkle » 20. April 2008 12:58

Sorg einfach dafür das man keine php-Dateien hochladen kann. :lol:
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby stephan_1 » 20. April 2008 13:46

Hey,

ja das wäre eine Möglichkeit, auf der anderen Seite ist aber ja dann das Problem, dass wenn es doch einer durch hochladen, umbennennen etc hinbekommt das ein riesiges Problem wäre, deshalb würde ich gern einfach alle Scriptsprachen ausstellen... PHP geht ja per flag_engine off in der .htaccess, nur dann laufen die anderen Sprachen ja immer noch (selbstverständlich nur die serverseitigen gemeint)...

Gibt es keine Möglichkeit das zu verhindern?

Danke!
STEPHAN
stephan_1
 
Posts: 7
Joined: 18. April 2008 19:04

Postby Xardas der Dunkle » 20. April 2008 13:59

Haben die den FTP-Zugang?
Wenn die Dateien über ein php-script verwaltet werden kannst du ja wiederum dafür sorgen das man sie nicht in php umbenennen kann ;).
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby stephan_1 » 20. April 2008 14:05

Hey,

jop ich wollte eigentlich einen FTP-Zugang für den Ordner zur Verfügung stellen...

Sehr schwierig, oder?^^

Danke schonmal :)

STEPHAN
stephan_1
 
Posts: 7
Joined: 18. April 2008 19:04


Return to PHP

Who is online

Users browsing this forum: No registered users and 17 guests