Willkommen in der Webstatt Zum Webstatt Blog und Stories
Pyth0n Pyth0n am 17.07.07 00:54

Guten Tag,

wie ich in einem anderen Thread mal erwähnt hatte schreibe ich an einem Login und will mich langsam auch steigern. Ich habe dieses Problem, zwar in abgewandelter Form in einem anderen Forum geschrieben. Dort waren die Lösungsvorschläge nicht so der Renner, deshalb möchte ich mir noch eine Art Bestätigung holen.


Also wie man aus der Überschrift schon erkennen kann geht es ums einbinden von meinem Skript.
Ich habe nun einen ganz passablen Login geschrieben und möchte ihn nun in mein Design einbinden. Das Formular und die Auswertung sind jeweils beide in der Datei "login.php" und ich dachte mir eigentlich, dass ich diese in die Datei "index.php" mit include() einfach einbinden könnte.
Das Problem an der ganzen Sache ist nur, dass ich bei der Login Prozedur später auf eine "aktuelle"Seite verweise via header(), aber diese Funktion mekert dann natürlich das vorher nichts kommen darf. Ich möchte ungern die Funktion ob_start() nutzen um das so hinzubiegen.

Gibt es also eine saubere ordentliche Lösung ohne die Funktion ob_start()?

Gruß, pyth0n :)


P.S. Ich bin gespannt, was ihr mir für Vorschläge bringt oder ob sie Deckungsgleich sind. ;)

netcup.de Warum gibt es hier Werbung?
der_nic der_nic am 17.07.07 01:04

Die einzige Möglichkeit ohne ob_start ist sauber zu Coden. Du musst halt die Ausgabe vom Rest deines Scriptes trennen, damit dein Script funktioniert.

Pyth0n Pyth0n am 17.07.07 01:12

Ja schon, aber wie sähe das aus?

Gruß, Pyth0n :)

CIX88 am 17.07.07 07:16

Ich würde das ganze so programmieren, dass vor der Header-Anweisung keine Ausgabe zum Browser erzeugt wird, wozu auch.

Es ist natürlich mist, wenn in der PHP-Datei noch HTML mit eingebunden ist, schon dies ist auf dauer keine saubere Lösung.
Ansonsten zum Prinzip:

<?php
if ( isset($_POST etc....) ) {

if ( $_POST abfragen ) {
Header(Location: erfolgreich )
} else {
Header(Location: wieder zum formular)
}

} else {

// hier das Formular

}
?>


Also die eigentliche Überprüfung an den Anfang vom Script setzen, und dafür sorgen, dass vor Header keine Leerzeichen, Zeilenumbrüche oder irgendwelche echo oder print-Ausgaben erfolgen.

Pyth0n Pyth0n am 17.07.07 09:14

Quote
Original von CIX88
Ich würde das ganze so programmieren, dass vor der Header-Anweisung keine Ausgabe zum Browser erzeugt wird, wozu auch.

Es ist natürlich mist, wenn in der PHP-Datei noch HTML mit eingebunden ist, schon dies ist auf dauer keine saubere Lösung.
Ansonsten zum Prinzip:

<?php
if ( isset($_POST etc....) ) {

if ( $_POST abfragen ) {
Header(Location: erfolgreich )
} else {
Header(Location: wieder zum formular)
}

} else {

// hier das Formular

}
?>


Also die eigentliche Überprüfung an den Anfang vom Script setzen, und dafür sorgen, dass vor Header keine Leerzeichen, Zeilenumbrüche oder irgendwelche echo oder print-Ausgaben erfolgen.


So ist mein Login-Skript selbst aufgebaut, aber nun stellt soch halt die Frage wegen Einbindung oder gibt es alternative Funktionen zu header()?

Gruß, Pyth0n :)

danieL danieL am 17.07.07 09:30

du könntest noch eine meta weiterleitung machen ala
<meta http-equiv="refresh" content="site.php">

nicht ganz schön, weiss nicht ob es valide ist, aber funktioniert.

CIX88 am 17.07.07 10:56

Wenn schon, dann so:
<meta http-equiv="refresh" content="0; URL=blabla.php">

nuit nuit am 17.07.07 16:00

naja....oder das ganze über templates lösen...also eine template klasse, damit wirklich gerwährleistet ist, dass er das ganze gesocks nur am Schluss ausgibt ;)

Kevz am 17.07.07 16:18

Joa, wäre auch sehr saubere Methode, so gesehen.

Pyth0n Pyth0n am 17.07.07 17:56

:O Template Klasse hat man mir in dem anderen Forum auch geratten. Eigentlich bin ich ja noch mehr Anfänger als Profi, vondaher werfen sich mir nun einige Fragen auf.

Ich habe zwar schon in der letzten Zeit etwas über Klassen und Objekte gelesen, aber wie verhält sich das ganze nun mit Formularen und halt Fehlermeldungen in diesen selbst (Also Feld leer oder so)?
Und nun die zweite Frage erstmal wie würde ich dann den klassischen Aufbau:
if(Session == true)
{
... verarbeiten blabla
}
else
{
... Formular
}


Und gibt es irgendwo eine Seite wo das Umgehen mit Klassen und Objekten so erklärt wird, dass am Ende keine Fragen mehr bleiben?

Naja das war es ersteinmal. ;) Danke euch schon mal. :)

Gruß, Pyth0n :)

Kevz am 17.07.07 18:37

Joa. Z.b.: php.net/oop oder oder oder. . . Kommt drauf an, welche PHP Version du nutzt. Bzw. Arbeiten möchtest.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt