Abfrage ob Seite gleich Seite funktioniert nicht

cola1

Mitglied
Tagchen,

wollte grade abfragen, ob die aktuelle Seite index.php oder register.php ist.
Denn ich möchte durch die Einbindung von nur einem Template per Abfrage klären, ob das breite Registerformular der das Schlanke angezeigt werden soll (groß in register.php, klein in Sidebar von index.php).

PHP:
<?php if(check_login() == false) { ?>

    <?php if(isset($_SERVER['PHP_SELF']) == 'index.php') { ?>
        
        <form action="" method="post">
        </form>
        
    <?php } else { ?>
    
        <div id="register">
            <form action="" method="post">
            </form>
        </div>
        
    <?php } ?>
    
<?php } else { ?>
<p>Die register.tpl eingeloggt</p>
<?php } ?>

Das funktioniert überhaupt nicht. In der Sidebar von index.php und der register.php werden immer die gleichen Formulare angezeigt. Die Aushabe von echo $_SERVER['PHP_SELF'] ist auch dementsprechend index oder register.
Bin gerne für elegantere Vorschläge offen.
 
Hallo,


PHP:
if(isset($_SERVER['PHP_SELF']) == 'index.php')

hiermit prüfst du, ob der Rückgabewert von isset() gleich 'index.php' ist. isset() liefert aber einen boolean wert (true oder false) zurück und kann folglich niemals ein String sein.
Entweder machst du es so:
PHP:
if( isset($_SERVER['PHP_SELF']) && $_SERVER['PHP_SELF'] == 'index.php' ){...}
oder gleich so, denn das $_SERVER array ist immer gesetzt, eine Prüfung mit isset() ist daher überflüssig
PHP:
if( $_SERVER['PHP_SELF'] == 'index.php'] ) { ... }
 
> und kann folglich niemals ein String sein.

Achso. Hoffentlich kann ich mir das merken...

> oder gleich so
Danke!
 
PHP:
if( $_SERVER['PHP_SELF'] == 'index.php' ) { ... }
Ich muss dich enttäuschen, dass wird so unter Umständen nicht funktionieren.
Das funktioniert nur, wenn die Datei im Domainroot liegt.

Ich würde das, wenn überhaupt, mit $_SERVER['SCRIPT_NAME'] machen:
PHP:
if ( 'index.php' == basename( $_SERVER['SCRIPT_NAME'] ) ) { /* ... */ }

Gruß

EDIT//
Mach dir mal den Spaß, und leg auf deinem Domainroot mal einen Ordner 'test' an. In diesen Ordner packst Du eine 'test.php' mit folgendem Inhalt:
PHP:
<?php
echo '<pre>';
echo 'PHP_SELF               : ' . $_SERVER['PHP_SELF'] . "\n";
echo 'basename( PHP_SELF )   : ' . basename( $_SERVER['PHP_SELF'] ) . "\n";
echo 'SCRIPT_NAME            : ' . $_SERVER['SCRIPT_NAME'] . "\n";
echo 'basename( SCRIPT_NAME ): ' . basename( $_SERVER['SCRIPT_NAME'] ) . "\n";
echo '</pre>';
?>
Jetzt ruf diese Datei mal normal auf:
Code:
http://www.domain.tld/test/test.php

Und danach ruf die Datei mal so auf:
Code:
http://www.domain.tld/test/test.php/foo/bar/foobar.php
 
Zuletzt bearbeitet:
Zurück