Portal > Foren > PHP > PHP-Programmierung > Session basiertes Login Problem
Antwort
 
Themen-Optionen
Alt 15.07.2008, 07:50 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 15.07.2008
Beiträge: 3
Standard Session basiertes Login Problem

Hallo, ich habe versucht das sessionbasierte Login Tutorial bei mir einzubinden.
Leider kommt nach dem Login immer :

Warning
: Cannot modify header information - headers already sent by (output started at config.inc.php:20) in validateLogin.inc.php on line 76

Code:
             // Der Login war erfolgreich und der User wird zur Startseite des 
             // passwortgeschützen Bereichs weitergeleitet
             header( 'Location: geheim.php' );
             exit();
Kann mir irgendwer sagen woran das liegt?
Vielleicht seh ich grad den Wald vor lauter Bäumen nicht mehr.
flohpapa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2008, 08:36 Nach oben    #2
\m/ let's rock \m/
 
Benutzerbild von la-finest
 
Registriert seit: 11.11.2005
Beiträge: 114
Standard

Diese Meldung kommt, wenn du mit echo oder print etwas ausgibst bevor du den header sendest. Sprich du hast irgendwo vor deinem header eine Ausgabe.
Vermutlich config.inc.php Zeile 20

Greetz.
la-finest
__________________
"Irgendwann, möglicherweise auch nie, werde ich dich bitten mir eine kleine Gefälligkeit zu erweisen. Aber solange ich das nicht tue, soll die Gerechtigkeit mein Geschenk an Dich sein." - Don Vito Corleone, aus "Der Pate"
la-finest ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2008, 08:42 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 15.07.2008
Beiträge: 3
Standard Find nix

Ich find leider absolut keinen Fehler.
Kann jemand mal über den Code schauen? wär echt super.

PHP-Code:
<?php session_start();
    
    
// Überprüfen, ob das Formular abgeschickt wurde und ob beide Angaben gemacht wurden.
    
if( isset($_POST['username'], $_POST['passwort'])
        AND
        
strcmp(trim($_POST['username']),'') != 0
        
AND
        
strcmp(trim($_POST['username']),'') != ) {

          
          
// Einbinden der Konfigurationsdatei
          
include_once 'config.inc.php';
          
          
// Erstellen der Verbindung zur MySQL-Datenbank 
          
if( !$connection mysql_connect$_config['host'], $_config['user'], $_config['password'] ) ) {
               die( 
'Verbindung zum Datenbankserver konnte nicht hergestellt werden.' );
          }

          if( !
mysql_select_db$_config['database'], $connection ) ) {
              die ( 
'Die Datenbank ' $_config['database'] . ' kann nicht verwendet werden. <br />
                       MySQL-Error: <br />' 
mysql_error() );
          }
          
          
          
// SQL-Anweisung an die Datenbank senden, um erstens herauszufinden, ob 
          // diese Kombination von Usernamen und Passwort überhaupt existiert und 
          // zweitens bei Existenz Userinformationen auszulesen
          
$sql "SELECT _id, _anzahlLogins FROM archiv_login WHERE _username = '".trim($_POST['username'])."' AND _passwort = '".md5(trim($_POST['passwort']))."'";
                           
          
$res mysql_query($sql) or die( 'Error[SELECT|User]: <br />
                                                           <pre>' 
$sql '</pre>
                                                           <br />
                                                           MySQL-Error: ' 
mysql_error() );
              
          
// Nur wenn genau ein Datensatz selektiert wurde wird der User eingeloggt.
          // In allen anderen Fällen wird er zurück zum Loginformular geleitet.
          
if( mysql_num_rows($res) != ) {
             
header'Location: http://10.131.131.17/intranet/logintest/loginfehler.html' );              
             exit();
          } 
          else {
             
// Der Schlüssel 'loggedIn' erhält den Wert 'true'. So kann überprüft später werden, 
             // ob der User eingeloggt ist oder nicht.
             
$_SESSION['loggedIn'] = true;
             
             
// Die userspezifischen Daten werden ausgelesen und der Session hinzugefügt
             
$user mysql_fetch_object($res);
             
$_SESSION['anzahlLogins'] = $user->_anzahlLogins;
             
$_SESSION['id'] = $user->_id;
             
             
// Aktualisierung des Anzahl der Logins
             
$sql 'UPDATE 
                              archiv_login
                         SET
                              _anzahlLogins = _anzahlLogins + 1
                         WHERE
                              _id = ' 
$user->_id;
                              
             
mysql_query($sql) or die( 'Error[UPDATE|User]: <br />
                                                          <pre>' 
$sql '</pre>
                                                          <br />
                                                          MySQL-Error: ' 
mysql_error() );  
                                                          
             
// Der Login war erfolgreich und der User wird zur Startseite des 
             // passwortgeschützen Bereichs weitergeleitet
             
header('Location:geheim.php');
             exit();                                            
          }
          
    }
    else {
          
header'Location: index.html' );
          exit();
    } 

?>
und config.inc.php

PHP-Code:
<?php
    
// Array initialisieren ...
    
$_config = array();
    
// ... und mit Werten füllen
    // Der Datenbankserver. 
    
$_config['host'] = 'localhost';  
    
// Ein User, der auf den Server zugreifen darf.
    
$_config['user'] = 'root';        
    
// Das zum User passende Passwort.
    
$_config['password']  = 'root'
    
// Der Name der Datenbank, die auf dem Datenbankserver angesprochen werden soll.
    
$_config['database'] = 'test';
?>
flohpapa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2008, 08:48 Nach oben    #4
ads
Benutzer
 
Registriert seit: 15.07.2008
Ort: MD
Beiträge: 37
Standard

Ist Zeile 20 in config.inc.php zufällig nach dem schliessenden ?> Tag?
Dann wäre das eine ganz normale Ausgabe als HTML - und generiert Leerzeilen.

Nach dem schliessenden PHP-Tag darf sich maximal ein Zeilenumbruch befinden.
ads ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2008, 09:14 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 15.07.2008
Beiträge: 3
Standard Daaannke

Oh man das Leerzeichen hätte ich nie gefunden.
Vielen Dank.
Und ich such mir nen Wolf.

flohpapa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2008, 10:26 Nach oben    #6
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

Naja - ist doch gut, wenn einem geholfen werden kann - und wenn man dadurch lernt sauber zu programmieren.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.07.2008, 15:52 Nach oben    #7
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Den schließenden Tag kann man auch einfach weglassen.

Bastian
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.07.2008, 18:24 Nach oben    #8
Der Student
 
Benutzerbild von Flor1an
 
Registriert seit: 03.01.2007
Ort: München
Beiträge: 86
Standard

Richtig dass sollte man auch so machen! PHP bedarf keinem schließenden Tag (?>), außer man möchte natürlich noch HTML in dieser Datei ausgeben, sollte aber selten der Fall sein

Und ohne diesem schließenden Tag hat man eben nie das Problem das noch ein Leerzeichen am Ende existieren könnte!
__________________
Wenn ich du wäre, wäre ich lieber ich.

http://www.clubstars.net
http://www.x-tinct.de
Flor1an ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.07.2008, 22:42 Nach oben    #9
ads
Benutzer
 
Registriert seit: 15.07.2008
Ort: MD
Beiträge: 37
Standard

Die Diskussion "schließendes Tag" oder "nicht" ist wahrscheinlich fast so alt wie PHP - wenn nicht sogar noch älter.

Ursprünglich war PHP eine kleine Sprache, um mal eben etwas Funktionalität in die Webseite hineinzuverlagern. Mittlerweile ist das ganze jedoch umgedreht: viel PHP, wenig HTML - und immer noch alles gemischt. Nichtsdestotrotz ist das weglassen einfach unsauberes Programmieren: ich öffne ein Tag, also sollte ich es auch schließen. Die Vorteile, die sich aus dem Weglassen ergeben, sind dabei zweitrangig.

Nun, und wer es wirklich richtig machen will, trennt Code von Design und hat das Problem so auch erschlagen - und zwar sauber.
__________________
<Shadda> Explaining the concept of referential integrity to a mysql user is like explaining condoms to a catholic

European PostgreSQL User Group
ads ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.07.2008, 00:00 Nach oben    #10
Der Student
 
Benutzerbild von Flor1an
 
Registriert seit: 03.01.2007
Ort: München
Beiträge: 86
Standard

Zitat:
Zitat von ads Beitrag anzeigen
Nun, und wer es wirklich richtig machen will, trennt Code von Design und hat das Problem so auch erschlagen - und zwar sauber
Dabei kann es trotzdem passieren dass du hinter einem PHP Tag noch eine Leerzeile/Leerzeichen hast! Da ist egal ob HTML und PHP getrennt sind!

Im übrigen empfiehlt Zend selbst den closing Tag weg zu lassen.
__________________
Wenn ich du wäre, wäre ich lieber ich.

http://www.clubstars.net
http://www.x-tinct.de
Flor1an ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.07.2008, 01:32 Nach oben    #11
ads
Benutzer
 
Registriert seit: 15.07.2008
Ort: MD
Beiträge: 37
Standard

Zitat:
Zitat von Flor1an Beitrag anzeigen
Zitat:
Zitat von ads Beitrag anzeigen
Nun, und wer es wirklich richtig machen will, trennt Code von Design und hat das Problem so auch erschlagen - und zwar sauber
Dabei kann es trotzdem passieren dass du hinter einem PHP Tag noch eine Leerzeile/Leerzeichen hast! Da ist egal ob HTML und PHP getrennt sind!
Richtig - Problem von PHP. Vernünftige Editoren zeigen das jedoch an.


Zitat:
Im übrigen empfiehlt Zend selbst den closing Tag weg zu lassen.
Ganz ehrlich?
Zuerst schreiben sie eine Programmiersprache, die "inline" arbeiten soll und dann kommen sie mit den Auswirkungen dieses Ansatzes nicht zurecht. Wenn es nicht so traurig wäre, könnte man ja lachen ...

Nur weil Zend das empfiehlt, ist das noch lange kein sauberer Programmierstil - ganz im Gegenteil.
__________________
<Shadda> Explaining the concept of referential integrity to a mysql user is like explaining condoms to a catholic

European PostgreSQL User Group
ads ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.07.2008, 02:54 Nach oben    #12
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

Zitat:
Zitat von ads Beitrag anzeigen
Zitat:
Im übrigen empfiehlt Zend selbst den closing Tag weg zu lassen.
Ganz ehrlich?
Guidelines fürs Zend-Framework:
http://framework.zend.com/manual/de/...atting.general

Zitat:
Zuerst schreiben sie eine Programmiersprache, die "inline" arbeiten soll und dann kommen sie mit den Auswirkungen dieses Ansatzes nicht zurecht. Wenn es nicht so traurig wäre, könnte man ja lachen ...

Nur weil Zend das empfiehlt, ist das noch lange kein sauberer Programmierstil - ganz im Gegenteil.
Naja, die Ursprünge von PHP liegen ja nicht bei Zend, Zend (bzw. die zwei Gründer) sind da erst später dazugekommen (ab PHP 3) und seit dem zeichnet ZEND für PHP verantwortlich.



Ich lasse den schließenden Tag übrigends mittlerweile auch immer weg.
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.07.2008, 11:59 Nach oben    #13
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

Für den Wunsch einer Diskussion zu der Thematik des abschließenden tags bitte hier eine Diskussion starten. Danke.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.07.2008, 13:45 Nach oben    #14
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Zitat:
Zitat von ads Beitrag anzeigen
Nichtsdestotrotz ist das weglassen einfach unsauberes Programmieren: ich öffne ein Tag, also sollte ich es auch schließen. Die Vorteile, die sich aus dem Weglassen ergeben, sind dabei zweitrangig.
So? Was wäre denn der vorrangige Vorteil dieser Prinzipienreiterei? Du machst eine Tür, die von selbst wieder ins Schloss fällt doch auch nur dann zu, wenn du sicherstellen musst, dass sie dann auch wirklich geschlossen ist – solange du kein HTML in deinen PHP-Code verwurstest, dann musst du nie sicherstellen, dass ein PHP-Block wieder geschlossen wird.

Ich hab nichts gegen eine Erörterung der Vor- und Nachteile (obwohl mich diese Diskussion nicht interessieren würde), aber ein „weil es eben sauber ist, etwas zu schließen, was man geöffnet hat, obwohl es sich von selber schließt“ hat nichts mit sauberem Programmierstil zu tun. Damit schmeißt du auch gleich Hunderte oder Tausende von PHP-Entwicklern in den Topf, auf dem &#8222:pfuscher“ oder sowas steht. In den setze ich mich mitunter selber, aber nicht, weil ich meine schließenden PHP-Tags weglasse.

In dem Fall ziehe ich den Pragmatismus der Ästhetik eindeutig vor – und finde das wiederum ästhetisch.

Vielleicht hilft es, das <?php als Shebang interpretieren, um diesen Standpunkt zu verstehen.

Bastian

Geändert von Jann Hendrik (18.07.2008 um 15:56 Uhr). Grund: quote-tag korrigiert
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Programmierer für kleines Session Problem gesucht denis_hanke Gesuche 2 27.06.2007 15:07
Session Problem... the_cRu PHP-Programmierung 11 11.02.2007 20:20
Mitgliederbereich mit Login (Session) _root PHP-Programmierung 10 16.03.2006 21:36
Problem mit Tutorial: Login mit Sessions und MySQL Jan PHP-Programmierung 10 08.01.2006 19:58
Problem bei Login System druckgott PHP-Programmierung 9 13.05.2005 11:21


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:33 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44