# PHP_SELF ist weg



## Ashnazug (26. März 2006)

Guten Tag Freunde der Nacht

Ich hab da ein Problem das meine Fähikeiten übersteigt.
Bei Folgendem Code

```
<?php
$page = $_SERVER['PHP_SELF'];
echo $page;
?>
```
Krieg ich volgende Fehlermeldung "Undefined variable: PHP_SELF".
Irgendwie scheint mit des PHP_SELF abhandengekommen zu sein.
Was zur Folge hat das so sachen wie

```
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
```
nich mehr funtionieren und das ist ziemlich frustrierend.
Bitte helf mir mein PHP_SELF wieder zu bekommen oder sagt mir das ich sonst was falsch mache.

Gruss Ashnazug


----------



## Gumbo (26. März 2006)

Ist es möglich, dass das eine Array-Element oder gar das gesamte Array versehentlich gelöscht wurde? Sonst könntest du es auch mit der $_SERVER['SCRIPT_FILENAME']-Variable probieren.


----------



## diggity (26. März 2006)

Oder du nimmst

```
$PHP_SELF
```
.


----------



## Gumbo (26. März 2006)

Die $PHP_SELF-Variable ist aber nur dann gesetzt, wenn die Konfigurationsoption register_globals aktiviert ist. Doch dies sollte jedoch aus Sicherheitsgründen eigentlich nicht der Fall sein.


----------



## Ashnazug (26. März 2006)

Danke für die schnelle Antwort.

Ich hab mal folgenden Code verwendet

```
<?php
$page = $_SERVER['SCRIPT_FILENAME'];
echo $page;
?>
```
das zeit mir dan folgendes an "C:/PHP/php.exe".
Des heisst ja dann die SCRIPT_FILENAME Variable  funktioniert liefert aber ned das gewünschte Ergebniss.
@Gumbo
Wo soll den ein Array gelöscht worden sein in meinem Code oder in der PHP installation?
In meinem Code kommen nähmlich keine Arrays vor, vielleicht ist auch das der Fehler.

@diggity
Kann sein das ich mich irre aber sollten $_SERVER['PHP_SELF'] und $PHP_SELF nicht das selbe sein?
Ich krieg auf jedenfall die selbe Fehlermeldung.


----------



## Gumbo (26. März 2006)

Lass dir mal den Inhalt des $_SERVER-Variable ausgeben:
	
	
	



```
print_r($_SERVER);
```


----------



## diggity (26. März 2006)

Gumbo hat gesagt.:
			
		

> Die $PHP_SELF-Variable ist aber nur dann gesetzt, wenn die Konfigurationsoption register_globals aktiviert ist. Doch dies sollte jedoch aus Sicherheitsgründen eigentlich nicht der Fall sein.



Okay, das wusste ich nicht. In diesem Falle ist natürlich die Verwendung von $_SERVER['SCRIPT_FILENAME'] vorzuziehen.


----------



## Ashnazug (26. März 2006)

Ok ich poste des jetzt mal ganz frech unformatier wie ichs aus dem Browser bekomme.

```
Array
(
	[REDIRECT_STATUS] => 200
	[HTTP_ACCEPT] => */*
	[HTTP_ACCEPT_LANGUAGE] => de-ch
	[HTTP_ACCEPT_ENCODING] => gzip, deflate
	[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
	[HTTP_HOST] => 192.168.1.2
	[HTTP_CONNECTION] => Keep-Alive
	[PATH] => C:\\WINNT\\system32;C:\\WINNT;C:\\WINNT\\System32\\Wbem;C:\\Programme\\QuickTime\\QTSystem\\
	[SystemRoot] => C:\\WINNT
	[COMSPEC] => C:\\WINNT\\system32\\cmd.exe
	[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
	[WINDIR] => C:\\WINNT
	[SERVER_SIGNATURE] => 
Apache/2.0.52 (Win32) Server at 192.168.1.2 Port 80
	[SERVER_SOFTWARE] => Apache/2.0.52 (Win32)
	[SERVER_NAME] => 192.168.1.2
	[SERVER_ADDR] => 192.168.1.2
	[SERVER_PORT] => 80
	[REMOTE_ADDR] => 192.168.1.2
	[DOCUMENT_ROOT] => C:/Programme/Apache Group/Apache2/htdocs
	[SERVER_ADMIN] => ashnazug@hotmail.com
	[SCRIPT_FILENAME] => C:/PHP/php.exe
	[REMOTE_PORT] => 4380
	[REDIRECT_URL] => /index2.php
	[GATEWAY_INTERFACE] => CGI/1.1
	[SERVER_PROTOCOL] => HTTP/1.1
	[REQUEST_METHOD] => GET
	[QUERY_STRING] => 
	[REQUEST_URI] => /index2.php
	[SCRIPT_NAME] => /php/php.exe
	[PATH_INFO] => /index2.php
	[PATH_TRANSLATED] => C:\\Programme\\Apache Group\\Apache2\\htdocs\\index2.php
	[PHP_SELF] => /index2.php
	[argv] => Array
		(
		)
	[argc] => 0
)
```
Sehe ich das richtig dass alles was in [] steht und GROSS geschrieben ist, variabeln sind die ich mit $_SERVER[] aufrufen kann?


----------



## Gumbo (26. März 2006)

Ja, die print_r()-Funktion gibt die Struktur eines Arrays in einer lesbaren Form aus, der in den eckigen Klammern stehende Teil entspricht dabei dem Schlüssel. Der Ausgabe zufolge gibt es jedoch die $_SERVER['PHP_SELF']-Variable.


----------



## Ashnazug (26. März 2006)

Jetzt wo ich sehe das die Variable existier kann ich sie auch wieder aufrufen mit exakt 
dem ersten von mir gepostetem Code. Sowas find ich ******.
Allerdings funktioniert

```
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
```
nicht es werden keine Variablen übergeben, hab ich hier noch einen Syntax fehler drin?


----------



## Gumbo (26. März 2006)

Hast du schon die Ausgabe überprüft? Was wird denn ausgegeben?


----------



## Ashnazug (26. März 2006)

Ja hab ich.
Aus der Datei index.php bekomme ich "/index.php".
Und aus der Datei index2.php bekomme ich "/index2.php". (ist blos ne test Datei)
Ich krieg auch nicht die meldung das die Seite nicht aufgerufen werden konnte(was passieren sollte wenn da sonstwas ausgegeben würde).
Allerdings wird auch nichts übergeben wenn ich ... action="index.php"... ohne irgendwelche Variabeln eingebe also wird das Problem irgendwo in meinem 
restlichen Code liegen.

Und mit dem will ich dich Heute nicht mehr belästigen.

Danke und Gute Nacht


----------

