Anzeigen einer Seite per PHP verhindern - wie?

shutdown

Erfahrenes Mitglied
Hi!

Ich bin noch ein relativer Neuling was Programmierung in PHP angeht, darum kommen jetzt vielleicht ein paar doofe Fragen ;)

Also ich habe jetzt eine Passwortabfrage gebastelt, die über if-Abfragen auch tadellos funktioniert - also eine Registrierung der Nutzer funktioniert schon mal.

Als nächstes wird durch die Registrierung ein Formular erstellt, das eine Zahl enthält, die bei Klick auf senden an eine andere PHP-Datei geschickt wird.

In dieser PHP-Datei taucht eine weitere if-Schleife auf, die, wenn diese Zahl nicht gesendet wird, erstens lauter Leerzeilen einfügt (und damit den Inhalt der Datei weit nach unten verschiebt) und zweitens eine Weiterleitung mit delay=0 aktiviert.

Mir ist jetzt aufgefallen, dass man den Weiterleitungsprozess mit ein wenig Glück im richtigen Moment unterbrechen kann und somit dann die Leerzeilen einfach durch Scrollen umgehen kann.

Darum meine Frage:

Gibt es eine Möglichkeit, dass der Inhalt der Datei nicht angezeigt wird, solange nicht die Zahl, die durch die Passwortabfrage geschützt ist, an die Datei gesendet wird? (Die Datei soll nicht gelöscht werden - den Inhalt möchte ich schon noch gerne behalten ;) - an das Ende der Datei werden ständig durch ein Formular Daten übergeben.)

Vielen Dank im Voraus für eure Antworten!

shutdown
 
Ich glaube, da siehst du den Wald vor lauter Bäumen nicht. ;)
PHP:
if($uebergebeneZahl == "irgendeinWert") {
  // Seite anzeigen entweder direkt, via include oder Templates oder Funktionen oder oder oder.
}
else {
  echo "Sie haben keine Berechtigung diese Seite zu betrachten.";
}
Das ganze ist natürlich reichlich allgemein gehalten, aber mangels genauerer Informationen ging es leider nicht spezifischer.
 
Danke für die schnelle Antwort!

Nur will ich die bewusste Seite nicht in meine PHP-Datei einlesen, sondern ich will verhindern, dass sie überhaupt gelesen werden kann, wenn die Zahl nicht übermittelt wird (z.B. wenn man direkt durch die Verzeichnisstruktur surft und nicht über meine Haupt - Index.php - dort habe ich nur den Link hinter der Passwortabfrage, ich will also verhindern dass bei direktem Öffnen der Datei etwas erscheint)

Im Momnet sieht mein Skript so aus (danach werden die Daten gepostet):

<?php

if($_POST[submit] != Zahl):
{?>
<head>
<meta http-equiv="refresh" content="0; URL=./kerlaubnis.htm">

</head>
<p>
&nbsp
<p>
&nbsp

und so weiter.....

<?php
}

endif;
?>

Ich suche also entweder einen Befehl, der die Anzeige von HTML-Code verhindert oder eine Möglichkeit, die vom Formular übertragenen Daten innerhalb eines PHP-Bereichs zu posten.

Da fällt mir gerade was ein: Wenn ich den Post so gestalte:

$daten=<?php blablabla ?>

und das dann poste, dann dürfte das ganze doch nicht angezeigt werden.

Dann bräuchte ich aber einen Befehl, der bei erfolgter Übersendung der Zahl alle php-tags unschädlich macht - außer sich selbst. Oder würde das nicht stören?

Die Verwirrung wächst und wächst :p
Helft mir! Bitte! :)

shutdown
 
Ich glaube du denkst immer noch zu kompliziert.
PHP:
// Das folgende alles in deine zu schützende Datei.
<?php
if(isset($_POST['zahl']) && $_POST['zahl'] == 12345) {
?>
Hier kommt ganz normal dein ganzer HTML Code von <html> bis </html>.
Du hast den PHP-Tag vorher geschlossen, also ist alles ganz normal
<?php
} //schließen des if-Blocks
else {
  echo "Sie haben keine Berechtigung die Seite anzuzeigen.";
}
?>
Bitte beachte aber, dass dies kein Allheilmittel für super sichere Sachen ist. Die POST Werte eines Formulars werden im Klartext mit dem HTTP Header verschickt und der lässt sich manipulieren. Kann zwar noch lange nicht jeder, aber Hochsicherheitssysteme würde ich so nicht aufbauen. ;)
 
Ja wenns so wäre, wärs ja wunderbar ;)

Nur: Die Datei, die nicht angezeigt werden soll, ist nicht statisch. Es werden immer wieder durch ein Formular Daten dorthin übertragen, die dann am Ende der Datei eingefügt werden (und damit außerhalb der if-Abfrage).

Was wäre denn, wenn ich jeden Post mit seiner eigenen if-Abfrage versehe (nach deinem Schema oder meinem)?

Dann müsste doch sobald die Zahl übergeben wird, jede if-Abfrage aktiviert werden?

shutdown
 
Original geschrieben von shutdown
Was wäre denn, wenn ich jeden Post mit seiner eigenen if-Abfrage versehe (nach deinem Schema oder meinem)?
Post? Hast du evtl. vor ein Forum zu programmieren? Wenn ja nutze eine normale Datenbank, oder wenn nicht möglich überdenke nochmal die Struktur deiner Datensicherung.

Dann müsste doch sobald die Zahl übergeben wird, jede if-Abfrage aktiviert werden?
Ja, genau das wird passieren, wenn du mehrere If-Abfragen hast, die alle die gleiche Bedingung haben.
 
Ne ich will kein Forum bauen ;)

Also: Ich lasse ein Formular mit Kontaktdaten ausfüllen.
Dieses sendet dann an eine PHP-Auswertung, die die Daten übernimmt, ordnet und dann an meine Ausertungsdatei weitergibt.
Und genau das ist dann die Datei, die nicht für jedermann anzeigbar sein soll, weil ich die persönlichen Daten der Leute schützen will.

Sobald sich jeder mal eingetragen hat, kann ich natürlich eine if-else Abfrage machen, nur so lange sich die Leute noch eintragen, ist der Inhalt der Datei halt leider nicht statisch.
Da das Ganze eigentlich auch vorerst nur zum Sammeln der Infos gedacht ist, wäre eine if-else Abfrage im Nachhinein aber unnötig.
Ich möchte, dass die Datei die von der PHP-Auswertung übergebenen Daten direkt in eine eigene if-Abfrage einbaut (sofern das möglich ist).

Ich habe jetzt auch mal versucht, meine PHP-Auswertung wie folgt zu gestalten:
Code:
$daten="<?php if($_POST[submit] == zahl) echo "

$_POST[STATUS]+$_POST[VORNAME]+$_POST[NACHNAME]+$_POST[STRASSE]+$_POST[HAUSNUMMER]+$_POST[PLZ]+$_POST[ORT]+$_POST[TELEFON]+$_POST[FAX]+$_POST[HANDY]+$_POST[EMAIL]+$_POST[WPASSWORT]+$_POST[BWPASSWORT]+$_POST[FRAGE]+$_POST[GANTWORT]+$_POST[BGANTWORT]+$date+$ip<br>?>";";

(halt alles in einer Zeile).

Ich hab auch probiert, die PHP-Tags in extra Blöcken ($ifpart1="<?php if .... echo ""; und entsprechenden entag dann in $ifpart2)
zu schreiben und dann $daten so zusammenzusetzen: $daten="ifpart1 blabalab ifpart2";

In beiden Fällen kommt er aber nicht damit zurecht, dass ich ein Anführungszeichen übertragen will, sondern bringt dann einen parse-Error (wegen dem ")

Weißt du wie ich einen html-code innerhalb eines vollständigen php-codes übergeben kann?
Die if-else Abfrage funktioniert, nur müsste ich dann nach jedem Eintrag die Datei runterladen und den else Rahmen erweitern.


shutdown
 
Original geschrieben von shutdown
Also: Ich lasse ein Formular mit Kontaktdaten ausfüllen.
Dieses sendet dann an eine PHP-Auswertung, die die Daten übernimmt, ordnet und dann an meine Ausertungsdatei weitergibt.
Und genau das ist dann die Datei, die nicht für jedermann anzeigbar sein soll, weil ich die persönlichen Daten der Leute schützen will.
Also ich bin jetzt dank Deinem Beitrag etwas sehr verwirrt, da ich nämlich überhaupt nicht verstanden habe, was Du da machen willst ;) Daher kann es sein, dass meine Empfehlung total falsch ist, aber ich versuch trotzdem mal:

Nimm Doch einfach ne Datenbank und speicher da die Daten aus dem Formular ab. Zu diesen Daten hast dann natürlich nur Du Zugang, kannst Dir ja (was immer auch für Daten aus dem Formular kommen) eine Auswertungs-Seite erstellen, welche die Daten direkt aus der Datenbank ausliest.
 
Schütze die entsprechende Datei per .htaccess oder platziere sie ausserhalb des Web-Verzeichnisses....
dann ist ein Zugriff über das http-Protokoll unmöglich, deine PHP-Skripte kommen über das Dateisystem aber ran.
 
Zurück