PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Bestimmte HTML Seiten per PHP Code sperren (https://www.php-resource.de/forum/php-developer-forum/102195-bestimmte-html-seiten-per-php-code-sperren.html)

PHP-Comer 17-09-2011 21:27

Bestimmte HTML Seiten per PHP Code sperren
 
Hallo,

heute ist nun das PHP Skript für einen funktionierenden LOGIN fertig geworden.
Habe mit Hilfe des Internets Datenbank etc. eingerichtet und erstellt.

Doch jetzt möchte ich , wenn ein unangemeldeter Besucher eine Seite aufruft, zum LOGIn Skript weitergeleitet wird. Er soll die Seite also nicht sehen und sich erst einloggen.

Habe da einen Code, der leider gottes nicht funktioniert.:
PHP-Code:

<?php
 
# Ist der User eingeloggt ???
    
if ($_SESSION["login"] == 0)
        {
        
# ist nicht eingeloggt, also Formular anzeigen, die Datenbank
        # schliessen und das Programm beenden
        
include("login-formular.html");
        
mysql_close($link);
        exit;
        }
?>


Kann mir einer Sagen, was daran falsch ist?

Gruß PHP-Comer :)

bmedia 18-09-2011 01:05

So wie ich das sehe, baust Du die Formular-Seite auf und dann verlässt Du die Datei gleich wieder mit exit.

Probiere es mit header-Befehl, damit rufst du dann die Login-Formular Seite direkt auf.
http://php.net/manual/de/function.header.php

PHP-Code:

 # Ist der User eingeloggt ??? 
    
if ($_SESSION["login"] == 0
        

        
# ist nicht eingeloggt, also Formular anzeigen, die Datenbank
        # schliessen und das Programm beenden 
        
mysql_close($link); 
        
header('Location: login-formular.html'); 
        } 

!!! Durch den header-Befehl darf vorher keine Ausgabe statt finden, sonst erscheint eine Fehlermeldung. Seien es normale HTML-Tags, Leerzeilen in einer Datei oder von PHP aus. Somit sollte der Code am Angfang jeder Datei stehen.

AmicaNoctis 18-09-2011 10:25

Hallo,

es fehlt session_start(), um erstmal die Session verfügbar zu machen. Außerdem solltest du das Error-Reporting aufdrehen (siehe Forenregeln), damit PHP dir sagen kann, wo es klemmt. Folgendes solltest du noch zu den möglichen Wegen (Umleitung und include) wissen:

Bei einer Umleitung schickt der Server eine leere Antwort zum Browser, der Browser muss eine neue Verbindung aufbauen (außer bei Keep-Alive) und nochmal alle Daten schicken, was aber nicht ohne vorherige Genehmigung des Benutzers passieren darf. Also muss der Browser entweder blöde Fragen stellen oder eventuelle Post-Daten werden gar nicht übermittelt.

Deine ursprüngliche include-Variante ist also nicht nur performanter, sondern auch weniger fehleranfällig. Bmedias Umleitung ist doch eher ein Umweg, wie das Wort schon sagt und syntaktisch falsch, da als Ziel immer eine absolute Anfrage-URI übergeben werden muss.

Gruß,

Amica


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:23 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG