![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
Erst einmal ein ganz großes Hallo an alle Liebe User hier im Forum, ich finde es richtig toll dass es euch gibt, eine Ecke erfahrener Hasen die gerne helfen - Schonmal Danke für dass =)! Meine Frage beläuft sich auf folgendes Tut http://forum.developers-guide.net/thread54.html Eigentlich ist es richtig gut und es geht im Prinzip auch alles, aber dennoch erscheinen bei mir Fehlermeldungen, welche ich nicht wegbekomme. Fall 1 Ort: Nach dem Login (erfolgreich) Warning: session_start( Fall 2 Ort: Aufrufen der geheimen (Admin)-Seite ohne Berechtigung, sowie ohne vorherigen Login Warning: session_start( Warning: session_start( Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/web120/html/2006/orange-ekstraklasa/index.php: Meine Checklogin.php Datei sieht folgendermaßen aus (Wie eben im TUT) Code:
<?php
session_start();
if( !$_SESSION['loggedIn'] ) {
header( 'Location: http://orange-ekstraklasa.7players.de/index.php?pol=loginbereich' );
exit();
}
?>
Liebe Grüße Chris |
|
| | Nach oben #2 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Also der Fehler tritt immer dann auf, wenn bereits Daten an den Browser geschickt wurden in Form von echo-/print-Ausgaben oder HTML-Quelltext vor dem PHP-Quelltext. Wahrscheinlich machst du einfach nur einen Include auf die Datei in folgender Form: PHP-Code: Code: HTTP/1.1 200 OK Date: Fri, 14 Oct 2005 08:38:06 GMT Server: Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.8 PHP/5.0.4 DAV/2 mod_perl/2.0.1 Perl/v5.8.7 X-Powered-By: PHP/5.0.4 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=ISO-8859-1 <html> <head> <title>Dies ist meine Seite</title> </head> <body> Hier ist die Seite </body> </html> Wenn nun der Server also schon angefangen hat den Bereich mit <html>, also quasi den Content der Seite zu schicken, ist der Header natürlich schon zu Ende und es kann nicht einfach noch was nachgeschickt werden. Folglich: Die Session will ein Cookie mit der Session-ID anlegen, kann aber die Informationen, die dafür in den Header müssen nicht einfügen. Mitten im HTML-Quelltext macht es keinen Sinn, also gibt er eine Fehlermeldung aus. Abhilfe schafft man sich, wenn man bevor überhaupt irgendwas anderes gestartet wird, ein session_start (); setzt oder die Funktionen zur Ausgabesteuerung nutzt: http://de.php.net/manual/de/ref.outcontrol.php (ob_start (); und ob_end_flush (); sollten hier die Stichwörter sein). Ich würde aber empfehlen, einfach die Session zu starten, bevor überhaupt irgendwas anderes gemacht wird. In deinem Fall also: PHP-Code:
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #3 |
| Gast
Beiträge: n/a
|
Danke für den mühevollen Post! Waren einige Sachen drinn die ich schon wusste, aber auch welche die ich nicht wusste / Wieder was dazu gelernt =) ... Aber dennoch würde ich gerne noch einmal anhand meines Quelltext um Hilfe bitten ... Denn in meinem Beispiel habe ich auch darauf geachtet, die geheime Admin-Seite, wo das ganze includet wird, sieht folgendermaßen aus. Code:
<?php
include_once 'checklogin.inc.php';
?>
<link href="formatierung.css" rel="stylesheet" type="text/css">
<table width="703">
<tr>
<td height="26" background="images/bg_titel.jpg"><div align="center" class="footer">Administrationsbereich</div></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<h1> </h1>
<p><a href=admin_logout.php>Logout</a></p>
handelt, die bereits im Gesamtkonstrukt HTML Tags, Body etc. enthält. Mache ich hier zusätzlich welche, bekomm ich vom HTML Validator Fehler ^^ Das Problem könnte daher unter Umständen sein, dass über dem PHP immer HTML Code sein wird, zwar nicht von der Seite, aber dafür von der Hauptseite, die das ja includet ... was soll ich da machen? |
|
| | Nach oben #4 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Mal angenommen du hast folgende Dateien: index.php news.php login.php forum.php Jede beinhaltet eine Seite. Sinnvoll wäre nun, wiederkehrenden Code (Datenbank-Verbindungen, Session-Start, Login-Prüfung, Initialisierung irgendwelcher Klassen, erstellung von Config-Variablen) zentral zu halten. Hierfür zum Beispiel eine config.inc.php, die im selben Verzeichnis liegt. Diese könnte nun wie folgt aussehen: PHP-Code: PHP-Code: Hast du nun meinetwegen eine Seite programmiert, die immer die index.php mit einem Parameter aufruft (z.B. index.php?page=news) und die im Quelltext dann folgendermaßen aussieht: PHP-Code: PHP-Code:
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #5 |
| Gast
Beiträge: n/a
|
Ja, so in der Art, eben nur andere Variante Code:
if (!isset($pol)) {
$pol = "main";
}
include($pol.".php");
über allem einsetzen und dass war es dann auch schon? Denn checklogin kann ich ja da nicht einsetzen, sonst würden manche gar nicht auf die Seite kommen, weil sie keine Berechtigung hätten *g* Login brauche ich ja im Moment nur für mich, erst einmal will ich mich so richtig einarbeiten in die Materie, um nachher auch damit was sinnvolles anzustellen *g*. Ich probiers mal ... Danke! |
|
| | Nach oben #6 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Laden kannst du den Checklogin doch trotzdem auf jeder Seite. Man braucht doch nicht für jede Seite entsprechende Rechte! Kannst ja in der config.inc.php gekoppelt an den Wer $pol entweder den checklogin.inc.php einbinden lassen oder eben nicht, die Realisierung überlasse ich dir, es ist deine Seite, ich gebe nur Denkanstöße
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #7 |
| Gast
Beiträge: n/a
|
Also ich melde mich dann mal wieder *g*. Erstmal Danke für den Tipp und die tolle Hilfe, hat auch gerade richtig gut geklappt! Nur ich weiß jetzt nicht woran es liegt, aber es drückt sehr auf die Ladezeit der Website wie es aussieht - Ich bekomm sie nun nicht mehr geladen, wobei ich gerade es noch geschafft habe beim ersten Testlauf *G* Versucht ihr mal bitte und loggt euch auch mal ein! Da gibt es ohnehin noch keinen Content -> Login ist ganz unten links, beachtet das Design nicht, ist noch nicht angepasst *G* - Nickname "Sakowski" PW "Vogel" -> http://orange-ekstraklasa.7players.de // EDIT Ich hab dass mal wieder in die Ursprungsform gebracht, denn so geht dass nicht - die Seite ist, wenn diese Checklogin Sache da im index.php von statten geht, nicht mehr zu laden - erst nach ganz ganz langer Zeit wird man dann zu loginbereich.php weitergeleitet, weil da ja definiert ist, dass wenn man nicht eingeloggt ist, die Loginseite zu sehen bekommt Geändert von Chrisplayer (14.10.2005 um 11:45 Uhr). |
|
| | Nach oben #8 |
| Benjamin Steininger Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
|
wow, übel , pass mal auf was du macst, nie einfach irgendwas includen, bau dir ein switch ein, in dem du alle punkte nennst und überprüfst, sonst kann sowas tötlich werden: http://orange-ekstraklasa.7players.d....php?pol=index niemals einfach einen $_GET-wert ohne durchdachte überprüfung für includes oder sonstwas verwenden !!!!!!!!! mfg robo47 |
| | |
| | Nach oben #10 |
| Benjamin Steininger Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
|
also ich finde auf der Seite leider keinerlei Login, weis nicht ob das am Design liegt und der FF das nicht so darstellt wie der IE, aber irgendwie, ist da nix. mfg robo47 |
| | |
| | Nach oben #12 |
| Benjamin Steininger Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
|
sehe ich 1) kein login 2) 2 fehler: Code: Notice: Use of undefined constant main - assumed 'main' in /srv/www/htdocs/web120/html/2006/orange-ekstraklasa/switch_links.php on line 3 Notice: Use of undefined constant tabelle - assumed 'tabelle' in /srv/www/htdocs/web120/html/2006/orange-ekstraklasa/switch_links.php on line 4 |
| | |
| | Nach oben #13 |
| Gast
Beiträge: n/a
|
Versuch nochmal - Hab grad wegen deines Tipps versucht was mit switch einzubauen - Aber so auf die schnelle lass ich dass mal, das Prob ist erstmal wichtiger Nun müsste wieder alles normal sein ... denn genau um deine Posting-Zeit hab ich da getestet *G* |
|
| | Nach oben #14 |
| Benutzer Registriert seit: 05.09.2005 Ort: Ostarrichi
Beiträge: 51
|
Du versuchts in der "adminbereich" datei eien session zu starten, obwohl schon inhalt ausgegeben wurde.. du darfst keine datei include mitten auf der hp, wo die session gestartet wird.. mach das am anfang der index.php mfg Niedi ##edit## aber wurde ja schon alles gesagt
__________________ -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- |
| | |
| | Nach oben #15 |
| Gast
Beiträge: n/a
|
Wie/Was denn nun? *g* - Also folgenden Code ... Code:
<?php
session_start();
if( !$_SESSION['loggedIn'] ) {
header( 'Location: http://orange-ekstraklasa.7players.de/index.php?pol=loginbereich' );
exit();
}
?>
die Lösung, denn wie gesagt zerstört dass die Ladezeit der Website bzw. sie ist überhaupt nicht mehr zu laden?! Oder muss ich da nur folgendes einfügen und dann bei Checklogin.php genau diese Stelle auch ausschneiden? Code:
<?php
session_start();
?>
|
|
| | Nach oben #16 | |
| Benutzer Registriert seit: 05.09.2005 Ort: Ostarrichi
Beiträge: 51
|
beim oberen code das session_start raus und den unteren ganz oben bei der index.php rein dann sollte dein problem gelöst sein mfg niedi ##edit## Zitat:
__________________ -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- | |
| | |
| | Nach oben #17 |
| Gast
Beiträge: n/a
|
Huch, da hat es die Fehlermeldung zerstört *g* - Dankeschön! Aber eine Frage hätte ich dennoch, denn "für mich" ist ja nun alles passend gemacht, aber wenn jemand doch auf die Idee kommt, kann er ja die "geheime Seite" direkt im Browser abrufen http://orange-ekstraklasa.7players.d...l=adminbereich Also ich meine dass ihr per Klick darauf nicht einen Balken sehen werdet, wo "Administrationsbereich" sehen werdet - Also die Sperre ohne Login funzt, stattdessen wird aber eine Fehlermeldung ausgeben. Code: Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/web120/html/2006/orange-ekstraklasa/index.php:11) in /srv/www/htdocs/web120/html/2006/orange-ekstraklasa/checklogin.inc.php on line 4 Direktaufruf der Admin-Fläche auch das ganze Design gesprengt ... (?!) |
|
| | Nach oben #18 |
| Benutzer Registriert seit: 05.09.2005 Ort: Ostarrichi
Beiträge: 51
|
Welche datei wird aufgerufen durch "adminbereich"? Diese datei muss noch irgendwo Headerinformationen senden wollen.. evtl ein "header: Location..."? das gehört weg dort ohne quelltext is es schwer zu sagen
__________________ -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- |
| | |
| | Nach oben #19 |
| Gast
Beiträge: n/a
|
Adminbereich.php (Ruft eigentlich nichts auf, außer eben includet die Login-Überprüfung) Code:
<?php
include_once 'checklogin.inc.php';
?>
<link href="formatierung.css" rel="stylesheet" type="text/css">
<table width="703" align="center">
<tr>
<td><div align="center" class="footer">
<table width="695" align="center" background="images/bg_titel.jpg">
<tr>
<td><div align="center" class="footer">Administrationsbereich</div></td>
</tr>
</table>
</div></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<h1> </h1>
<p align="center"><a href=admin_logout.php>Logout</a></p>
Code:
<?php
session_start();
if( isset($_POST['Username'], $_POST['Passwort'])
AND
strcmp(trim($_POST['Username']),'') != 0
AND
strcmp(trim($_POST['Passwort']),'') != 0 ) {
include_once 'config.inc.php';
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 = "SELECT
_id,
_anzahlLogins
FROM
_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() );
if( mysql_num_rows($res) != 1 ) {
header ('Location: http://orange-ekstraklasa.7players.de/index.php?pol=loginfehler' );
exit();
}
else {
$_SESSION['loggedIn'] = true;
$user = mysql_fetch_object($res);
$_SESSION['anzahlLogins'] = $user->_anzahlLogins;
$_SESSION['id'] = $user->_id;
$sql = 'UPDATE
_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() );
header ( 'Location: http://orange-ekstraklasa.7players.de/index.php?pol=adminbereich' );
exit();
}
}
else {
header ( 'Location: http://orange-ekstraklasa.7players.de/index.php?pol=loginbereich' );
exit();
}
?>
|
|
| | Nach oben #20 |
| Benutzer Registriert seit: 05.09.2005 Ort: Ostarrichi
Beiträge: 51
|
und die check_login? quelltext vom check_login wär aber wichtig, da auch dort der fehler auftritt und bitte in PHP tags einfügen mfg Niedi
__________________ -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |